drivers/spi/spidev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c
-index 4d53c394101a..461d3a0009a8 100644
--- a/drivers/spi/spidev.c
+++ b/drivers/spi/spidev.c
-@@ -415,7 +415,7 @@ spidev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
+@@ -415,7 +415,7 @@ spidev_ioctl(struct file *filp, unsigned
}
if (ctlr->use_gpio_descriptors && spi_get_csgpiod(spi, 0))
tmp |= spi->mode & ~SPI_MODE_MASK;
spi->mode = tmp & SPI_MODE_USER_MASK;
---
-2.54.0
-
arch/arm/boot/dts/broadcom/bcm2711.dtsi | 15 ---------------
1 file changed, 15 deletions(-)
-diff --git a/arch/arm/boot/dts/broadcom/bcm2711.dtsi b/arch/arm/boot/dts/broadcom/bcm2711.dtsi
-index c06d9f5e53c8..561851182672 100644
--- a/arch/arm/boot/dts/broadcom/bcm2711.dtsi
+++ b/arch/arm/boot/dts/broadcom/bcm2711.dtsi
-@@ -602,21 +602,6 @@ genet_mdio: mdio@e14 {
+@@ -602,21 +602,6 @@
};
};
v3d: gpu@7ec00000 {
compatible = "brcm,2711-v3d";
reg = <0x0 0x7ec00000 0x4000>,
---
-2.54.0
-
drivers/usb/phy/phy-generic.c | 7 -------
1 file changed, 7 deletions(-)
-diff --git a/drivers/usb/phy/phy-generic.c b/drivers/usb/phy/phy-generic.c
-index 8423be59ec0f..c31ac36dcfa9 100644
--- a/drivers/usb/phy/phy-generic.c
+++ b/drivers/usb/phy/phy-generic.c
-@@ -256,13 +256,6 @@ int usb_phy_gen_create_phy(struct device *dev, struct usb_phy_generic *nop)
+@@ -256,13 +256,6 @@ int usb_phy_gen_create_phy(struct device
return dev_err_probe(dev, PTR_ERR(nop->vcc),
"could not get vcc regulator\n");
nop->dev = dev;
nop->phy.dev = nop->dev;
nop->phy.label = "nop-xceiv";
---
-2.54.0
-
drivers/pci/probe.c | 3 ---
1 file changed, 3 deletions(-)
-diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
-index 23833fd7265e..c12dadaba357 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
-@@ -1057,9 +1057,6 @@ static int pci_register_host_bridge(struct pci_host_bridge *bridge)
+@@ -1057,9 +1057,6 @@ static int pci_register_host_bridge(stru
else
pr_info("PCI host bridge to bus %s\n", name);
/* Check if the boot configuration by FW needs to be preserved */
bridge->preserve_config = pci_preserve_config(bridge);
---
-2.54.0
-
drivers/of/overlay.c | 2 ++
1 file changed, 2 insertions(+)
-diff --git a/drivers/of/overlay.c b/drivers/of/overlay.c
-index 255e8362f600..d57bff53551e 100644
--- a/drivers/of/overlay.c
+++ b/drivers/of/overlay.c
-@@ -247,6 +247,8 @@ static struct property *dup_and_fixup_symbol_prop(
+@@ -247,6 +247,8 @@ static struct property *dup_and_fixup_sy
if (!target_path)
return NULL;
target_path_len = strlen(target_path);
new_prop = kzalloc(sizeof(*new_prop), GFP_KERNEL);
if (!new_prop)
---
-2.54.0
-
include/linux/module.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/include/linux/module.h b/include/linux/module.h
-index 4decae2b1675..53def2266388 100644
--- a/include/linux/module.h
+++ b/include/linux/module.h
-@@ -507,7 +507,7 @@ struct module {
+@@ -509,7 +509,7 @@ struct module {
unsigned int num_bpf_raw_events;
struct bpf_raw_event_map *bpf_raw_events;
#endif
unsigned int btf_data_size;
unsigned int btf_base_data_size;
void *btf_data;
---
-2.54.0
-
kernel/dma/direct.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/kernel/dma/direct.h b/kernel/dma/direct.h
-index 62f0d9d0ba02..06594cc8966e 100644
--- a/kernel/dma/direct.h
+++ b/kernel/dma/direct.h
-@@ -94,7 +94,7 @@ static inline dma_addr_t dma_direct_map_phys(struct device *dev,
+@@ -94,7 +94,7 @@ static inline dma_addr_t dma_direct_map_
}
if (attrs & DMA_ATTR_MMIO) {
if (unlikely(!dma_capable(dev, dma_addr, size, false)))
goto err_overflow;
} else {
---
-2.54.0
-
include/soc/bcm2835/raspberrypi-firmware.h | 30 +++++++++++++++++++++-
1 file changed, 29 insertions(+), 1 deletion(-)
-diff --git a/include/soc/bcm2835/raspberrypi-firmware.h b/include/soc/bcm2835/raspberrypi-firmware.h
-index e1f87fbfe554..3e71d45477a4 100644
--- a/include/soc/bcm2835/raspberrypi-firmware.h
+++ b/include/soc/bcm2835/raspberrypi-firmware.h
-@@ -36,6 +36,8 @@ struct rpi_firmware_property_tag_header {
+@@ -36,6 +36,8 @@ struct rpi_firmware_property_tag_header
enum rpi_firmware_property_tag {
RPI_FIRMWARE_PROPERTY_END = 0,
RPI_FIRMWARE_GET_FIRMWARE_REVISION = 0x00000001,
/**
* struct rpi_firmware_clk_rate_request - Firmware Request for a rate
* @id: ID of the clock being queried
---
-2.54.0
-
drivers/gpu/drm/drm_atomic_helper.c | 5 +++++
1 file changed, 5 insertions(+)
-diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
-index bbec1c184f65..241e560357ec 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
-@@ -445,6 +445,11 @@ mode_fixup(struct drm_atomic_state *state)
+@@ -445,6 +445,11 @@ mode_fixup(struct drm_atomic_state *stat
new_crtc_state =
drm_atomic_get_new_crtc_state(state, new_conn_state->crtc);
/*
* Each encoder has at most one connector (since we always steal
* it away), so we won't call ->mode_fixup twice.
---
-2.54.0
-
drivers/gpu/drm/drm_color_mgmt.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
-diff --git a/drivers/gpu/drm/drm_color_mgmt.c b/drivers/gpu/drm/drm_color_mgmt.c
-index 131c1c9ae92f..988d4b6781ad 100644
--- a/drivers/gpu/drm/drm_color_mgmt.c
+++ b/drivers/gpu/drm/drm_color_mgmt.c
-@@ -332,7 +332,9 @@ static int drm_crtc_legacy_gamma_set(struct drm_crtc *crtc,
+@@ -332,7 +332,9 @@ static int drm_crtc_legacy_gamma_set(str
replaced = drm_property_replace_blob(&crtc_state->degamma_lut,
use_gamma_lut ? NULL : blob);
replaced |= drm_property_replace_blob(&crtc_state->ctm, NULL);
use_gamma_lut ? blob : NULL);
crtc_state->color_mgmt_changed |= replaced;
---
-2.54.0
-
include/drm/drm_mipi_dsi.h | 36 +++++++++++++++++++++++++-----------
1 file changed, 25 insertions(+), 11 deletions(-)
-diff --git a/include/drm/drm_mipi_dsi.h b/include/drm/drm_mipi_dsi.h
-index 3aba7b380c8d..d7588f189a59 100644
--- a/include/drm/drm_mipi_dsi.h
+++ b/include/drm/drm_mipi_dsi.h
-@@ -114,27 +114,41 @@ struct mipi_dsi_host *of_find_mipi_dsi_host_by_node(struct device_node *node);
+@@ -114,27 +114,41 @@ struct mipi_dsi_host *of_find_mipi_dsi_h
/* DSI mode flags */
#define MIPI_DSI_MODE_LPM BIT(11)
/* transmit data ending at the same time for all lanes within one hsync */
#define MIPI_DSI_HS_PKT_END_ALIGNED BIT(12)
---
-2.54.0
-
drivers/gpu/drm/bridge/tc358762.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/gpu/drm/bridge/tc358762.c b/drivers/gpu/drm/bridge/tc358762.c
-index 98df3e667d4a..68eec9718595 100644
--- a/drivers/gpu/drm/bridge/tc358762.c
+++ b/drivers/gpu/drm/bridge/tc358762.c
-@@ -298,7 +298,7 @@ static int tc358762_probe(struct mipi_dsi_device *dsi)
+@@ -298,7 +298,7 @@ static int tc358762_probe(struct mipi_ds
ret = mipi_dsi_attach(dsi);
if (ret < 0) {
drm_bridge_remove(&ctx->bridge);
}
return ret;
---
-2.54.0
-
include/drm/drm_plane.h | 36 +++++++++++++++++++++++
5 files changed, 97 insertions(+)
-diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c
-index 7142e163e618..a6414a2c488e 100644
--- a/drivers/gpu/drm/drm_atomic_state_helper.c
+++ b/drivers/gpu/drm/drm_atomic_state_helper.c
-@@ -268,6 +268,20 @@ void __drm_atomic_helper_plane_state_reset(struct drm_plane_state *plane_state,
+@@ -268,6 +268,20 @@ void __drm_atomic_helper_plane_state_res
plane_state->color_range = val;
}
if (plane->zpos_property) {
if (!drm_object_property_get_default_value(&plane->base,
plane->zpos_property,
-diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c
-index 85dbdaa4a2e2..8111efb2974b 100644
--- a/drivers/gpu/drm/drm_atomic_uapi.c
+++ b/drivers/gpu/drm/drm_atomic_uapi.c
-@@ -540,6 +540,10 @@ static int drm_atomic_plane_set_property(struct drm_plane *plane,
+@@ -540,6 +540,10 @@ static int drm_atomic_plane_set_property
state->color_encoding = val;
} else if (property == plane->color_range_property) {
state->color_range = val;
} else if (property == config->prop_fb_damage_clips) {
ret = drm_property_replace_blob_from_id(dev,
&state->fb_damage_clips,
-@@ -622,6 +626,10 @@ drm_atomic_plane_get_property(struct drm_plane *plane,
+@@ -622,6 +626,10 @@ drm_atomic_plane_get_property(struct drm
*val = state->color_encoding;
} else if (property == plane->color_range_property) {
*val = state->color_range;
} else if (property == config->prop_fb_damage_clips) {
*val = (state->fb_damage_clips) ?
state->fb_damage_clips->base.id : 0;
-diff --git a/drivers/gpu/drm/drm_color_mgmt.c b/drivers/gpu/drm/drm_color_mgmt.c
-index 988d4b6781ad..acfce7963bdd 100644
--- a/drivers/gpu/drm/drm_color_mgmt.c
+++ b/drivers/gpu/drm/drm_color_mgmt.c
-@@ -594,6 +594,42 @@ int drm_plane_create_color_properties(struct drm_plane *plane,
- }
+@@ -595,6 +595,42 @@ int drm_plane_create_color_properties(st
EXPORT_SYMBOL(drm_plane_create_color_properties);
-+/**
+ /**
+ * drm_plane_create_chroma_siting_properties - chroma siting related plane properties
+ * @plane: plane object
+ *
+}
+EXPORT_SYMBOL(drm_plane_create_chroma_siting_properties);
+
- /**
++/**
* drm_color_lut_check - check validity of lookup table
* @lut: property blob containing LUT to check
-diff --git a/include/drm/drm_color_mgmt.h b/include/drm/drm_color_mgmt.h
-index eccb71ab335a..2d9a96c22801 100644
+ * @tests: bitmask of tests to run
--- a/include/drm/drm_color_mgmt.h
+++ b/include/drm/drm_color_mgmt.h
-@@ -91,6 +91,9 @@ int drm_plane_create_color_properties(struct drm_plane *plane,
+@@ -91,6 +91,9 @@ int drm_plane_create_color_properties(st
enum drm_color_encoding default_encoding,
enum drm_color_range default_range);
/**
* enum drm_color_lut_tests - hw-specific LUT tests to perform
*
-diff --git a/include/drm/drm_plane.h b/include/drm/drm_plane.h
-index 01479dd94e76..744d6b7bfe9b 100644
--- a/include/drm/drm_plane.h
+++ b/include/drm/drm_plane.h
-@@ -183,6 +183,24 @@ struct drm_plane_state {
- */
+@@ -184,6 +184,24 @@ struct drm_plane_state {
enum drm_color_range color_range;
-+ /**
+ /**
+ * @chroma_siting_h:
+ *
+ * Location of chroma samples horizontally compared to luma
+ */
+ int32_t chroma_siting_v;
+
- /**
++ /**
* @fb_damage_clips:
*
+ * Blob representing damage (area in plane framebuffer that changed
@@ -803,6 +821,24 @@ struct drm_plane {
* @kmsg_panic: Used to register a panic notifier for this plane
*/
};
#define obj_to_plane(x) container_of(x, struct drm_plane, base)
---
-2.54.0
-
drivers/gpu/drm/msm/msm_atomic.c | 2 ++
3 files changed, 15 insertions(+), 13 deletions(-)
-diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
-index 241e560357ec..46a3c24561c2 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
-@@ -1892,13 +1892,6 @@ drm_atomic_helper_wait_for_vblanks(struct drm_device *dev,
+@@ -1892,13 +1892,6 @@ drm_atomic_helper_wait_for_vblanks(struc
int i, ret;
unsigned int crtc_mask = 0;
for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) {
if (!new_crtc_state->active)
continue;
-@@ -2548,12 +2541,6 @@ int drm_atomic_helper_setup_commit(struct drm_atomic_state *state,
+@@ -2547,12 +2540,6 @@ int drm_atomic_helper_setup_commit(struc
+ complete_all(&commit->flip_done);
continue;
}
-
+-
- /* Legacy cursor updates are fully unsynced. */
- if (state->legacy_cursor_update) {
- complete_all(&commit->flip_done);
- continue;
- }
--
+
if (!new_crtc_state->event) {
commit->event = kzalloc(sizeof(*commit->event),
- GFP_KERNEL);
-diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
-index 3f40028e79cf..fac9f65a6948 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
-@@ -7653,6 +7653,19 @@ int intel_atomic_commit(struct drm_device *dev, struct drm_atomic_state *_state,
+@@ -7653,6 +7653,19 @@ int intel_atomic_commit(struct drm_devic
state->base.legacy_cursor_update = false;
}
ret = intel_atomic_prepare_commit(state);
if (ret) {
drm_dbg_atomic(display->drm,
-diff --git a/drivers/gpu/drm/msm/msm_atomic.c b/drivers/gpu/drm/msm/msm_atomic.c
-index 87a91148a731..26841fd080b1 100644
--- a/drivers/gpu/drm/msm/msm_atomic.c
+++ b/drivers/gpu/drm/msm/msm_atomic.c
-@@ -255,6 +255,8 @@ void msm_atomic_commit_tail(struct drm_atomic_state *state)
+@@ -255,6 +255,8 @@ void msm_atomic_commit_tail(struct drm_a
/* async updates are limited to single-crtc updates: */
WARN_ON(crtc_mask != drm_crtc_mask(async_crtc));
/*
* Start timer if we don't already have an update pending
* on this crtc:
---
-2.54.0
-
drivers/gpu/drm/drm_atomic_uapi.c | 11 +++++++++++
1 file changed, 11 insertions(+)
-diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c
-index 8111efb2974b..67b330dbf628 100644
--- a/drivers/gpu/drm/drm_atomic_uapi.c
+++ b/drivers/gpu/drm/drm_atomic_uapi.c
-@@ -681,6 +681,7 @@ static int drm_atomic_connector_set_property(struct drm_connector *connector,
+@@ -681,6 +681,7 @@ static int drm_atomic_connector_set_prop
{
struct drm_device *dev = connector->dev;
struct drm_mode_config *config = &dev->mode_config;
bool replaced = false;
int ret;
-@@ -709,12 +710,16 @@ static int drm_atomic_connector_set_property(struct drm_connector *connector,
+@@ -709,12 +710,16 @@ static int drm_atomic_connector_set_prop
state->tv.subconnector = val;
} else if (property == config->tv_left_margin_property) {
state->tv.margins.left = val;
} else if (property == config->legacy_tv_mode_property) {
state->tv.legacy_mode = val;
} else if (property == config->tv_mode_property) {
-@@ -799,6 +804,12 @@ static int drm_atomic_connector_set_property(struct drm_connector *connector,
+@@ -799,6 +804,12 @@ static int drm_atomic_connector_set_prop
return -EINVAL;
}
return 0;
}
---
-2.54.0
-
arch/arm64/kernel/setup.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c
-index 23c05dc7a8f2..25644f0c0fe5 100644
--- a/arch/arm64/kernel/setup.c
+++ b/arch/arm64/kernel/setup.c
-@@ -215,9 +215,9 @@ static void __init request_standard_resources(void)
+@@ -215,9 +215,9 @@ static void __init request_standard_reso
size_t res_size;
kernel_code.start = __pa_symbol(_text);
insert_resource(&iomem_resource, &kernel_code);
insert_resource(&iomem_resource, &kernel_data);
---
-2.54.0
-
create mode 100644 include/dt-bindings/clock/rp1.h
create mode 100644 include/dt-bindings/gpio/gpio-fsm.h
-diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
-index efe38eb25301..a2a407fb5b28 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -39,3 +39,8 @@ subdir-y += unisoc
+targets += $(dtb-y)
+
+subdir-y += overlays
-diff --git a/arch/arm/boot/dts/broadcom/Makefile b/arch/arm/boot/dts/broadcom/Makefile
-index 2552e11b5e31..47f461a9b27a 100644
--- a/arch/arm/boot/dts/broadcom/Makefile
+++ b/arch/arm/boot/dts/broadcom/Makefile
@@ -37,6 +37,30 @@ dtb-$(CONFIG_ARCH_BCM2835) += \
dtb-$(CONFIG_ARCH_BCMBCA) += \
bcm6846-genexis-xg6846b.dtb \
bcm947622.dtb \
-diff --git a/arch/arm/boot/dts/broadcom/bcm2708-rpi-b-plus.dts b/arch/arm/boot/dts/broadcom/bcm2708-rpi-b-plus.dts
-new file mode 100644
-index 000000000000..ee72fdac6663
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm2708-rpi-b-plus.dts
@@ -0,0 +1,210 @@
+ pwr_led_trigger = <&led_pwr>,"linux,default-trigger";
+ };
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm2708-rpi-b-rev1.dts b/arch/arm/boot/dts/broadcom/bcm2708-rpi-b-rev1.dts
-new file mode 100644
-index 000000000000..9301e345aea2
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm2708-rpi-b-rev1.dts
@@ -0,0 +1,223 @@
+ i2c_vc_baudrate = <&i2c1>,"clock-frequency:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm2708-rpi-b.dts b/arch/arm/boot/dts/broadcom/bcm2708-rpi-b.dts
-new file mode 100644
-index 000000000000..b8459fd0f497
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm2708-rpi-b.dts
@@ -0,0 +1,198 @@
+ act_led_trigger = <&led_act>,"linux,default-trigger";
+ };
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm2708-rpi-bt.dtsi b/arch/arm/boot/dts/broadcom/bcm2708-rpi-bt.dtsi
-new file mode 100644
-index 000000000000..87a6c00bd056
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm2708-rpi-bt.dtsi
@@ -0,0 +1,42 @@
+ krnbt_baudrate = <&bt>,"max-speed:0", <&minibt>,"max-speed:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm2708-rpi-cm.dts b/arch/arm/boot/dts/broadcom/bcm2708-rpi-cm.dts
-new file mode 100644
-index 000000000000..fde85c8c7dca
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm2708-rpi-cm.dts
@@ -0,0 +1,174 @@
+&hdmi {
+ hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm2708-rpi-cm.dtsi b/arch/arm/boot/dts/broadcom/bcm2708-rpi-cm.dtsi
-new file mode 100644
-index 000000000000..8d3e42bfe4f0
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm2708-rpi-cm.dtsi
@@ -0,0 +1,23 @@
+ act_led_trigger = <&led_act>,"linux,default-trigger";
+ };
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm2708-rpi-zero-w.dts b/arch/arm/boot/dts/broadcom/bcm2708-rpi-zero-w.dts
-new file mode 100644
-index 000000000000..f6d4e2c73df9
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm2708-rpi-zero-w.dts
@@ -0,0 +1,250 @@
+ act_led_trigger = <&led_act>,"linux,default-trigger";
+ };
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm2708-rpi-zero.dts b/arch/arm/boot/dts/broadcom/bcm2708-rpi-zero.dts
-new file mode 100644
-index 000000000000..1721be8dbe20
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm2708-rpi-zero.dts
@@ -0,0 +1,189 @@
+ act_led_trigger = <&led_act>,"linux,default-trigger";
+ };
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm2708-rpi.dtsi b/arch/arm/boot/dts/broadcom/bcm2708-rpi.dtsi
-new file mode 100644
-index 000000000000..f4aedb5c532b
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm2708-rpi.dtsi
@@ -0,0 +1,63 @@
+&i2c2 {
+ status = "disabled";
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm2708.dtsi b/arch/arm/boot/dts/broadcom/bcm2708.dtsi
-new file mode 100644
-index 000000000000..fdc7f2423bbe
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm2708.dtsi
@@ -0,0 +1,19 @@
+&vc4 {
+ status = "disabled";
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm2709-rpi-2-b.dts b/arch/arm/boot/dts/broadcom/bcm2709-rpi-2-b.dts
-new file mode 100644
-index 000000000000..7796e545da43
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm2709-rpi-2-b.dts
@@ -0,0 +1,204 @@
+ pwr_led_trigger = <&led_pwr>,"linux,default-trigger";
+ };
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm2709-rpi-cm2.dts b/arch/arm/boot/dts/broadcom/bcm2709-rpi-cm2.dts
-new file mode 100644
-index 000000000000..36d00aa889a3
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm2709-rpi-cm2.dts
@@ -0,0 +1,215 @@
+ act_led_trigger = <&led_act>,"linux,default-trigger";
+ };
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm2709-rpi.dtsi b/arch/arm/boot/dts/broadcom/bcm2709-rpi.dtsi
-new file mode 100644
-index 000000000000..7335e7fbcb71
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm2709-rpi.dtsi
@@ -0,0 +1,8 @@
+
+i2c_arm: &i2c1 {};
+i2c_vc: &i2c0 {};
-diff --git a/arch/arm/boot/dts/broadcom/bcm2709.dtsi b/arch/arm/boot/dts/broadcom/bcm2709.dtsi
-new file mode 100644
-index 000000000000..868f65f922ff
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm2709.dtsi
@@ -0,0 +1,29 @@
+&vc4 {
+ status = "disabled";
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm270x-rpi.dtsi b/arch/arm/boot/dts/broadcom/bcm270x-rpi.dtsi
-new file mode 100644
-index 000000000000..d434c858343d
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm270x-rpi.dtsi
@@ -0,0 +1,205 @@
+};
+
+#endif
-diff --git a/arch/arm/boot/dts/broadcom/bcm270x.dtsi b/arch/arm/boot/dts/broadcom/bcm270x.dtsi
-new file mode 100644
-index 000000000000..ccc203e3131f
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm270x.dtsi
@@ -0,0 +1,265 @@
+ dmas = <&dma 6>, <&dma 7>;
+ dma-names = "tx", "rx";
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm2710-rpi-2-b.dts b/arch/arm/boot/dts/broadcom/bcm2710-rpi-2-b.dts
-new file mode 100644
-index 000000000000..ce48eb6073f0
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm2710-rpi-2-b.dts
@@ -0,0 +1,204 @@
+ pwr_led_trigger = <&led_pwr>,"linux,default-trigger";
+ };
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dts b/arch/arm/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dts
-new file mode 100644
-index 000000000000..8973985e9902
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dts
@@ -0,0 +1,295 @@
+ eth_max_speed = <ð_phy>,"max-speed:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm2710-rpi-3-b.dts b/arch/arm/boot/dts/broadcom/bcm2710-rpi-3-b.dts
-new file mode 100644
-index 000000000000..35e6e9900083
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm2710-rpi-3-b.dts
@@ -0,0 +1,293 @@
+ pwr_led_trigger = <&led_pwr>,"linux,default-trigger";
+ };
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm2710-rpi-cm0.dts b/arch/arm/boot/dts/broadcom/bcm2710-rpi-cm0.dts
-new file mode 100644
-index 000000000000..b575de6b6ce5
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm2710-rpi-cm0.dts
@@ -0,0 +1,252 @@
+ act_led_trigger = <&led_act>,"linux,default-trigger";
+ };
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm2710-rpi-cm3.dts b/arch/arm/boot/dts/broadcom/bcm2710-rpi-cm3.dts
-new file mode 100644
-index 000000000000..0d6e9e61f877
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm2710-rpi-cm3.dts
@@ -0,0 +1,215 @@
+ act_led_trigger = <&led_act>,"linux,default-trigger";
+ };
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm2710-rpi-zero-2-w.dts b/arch/arm/boot/dts/broadcom/bcm2710-rpi-zero-2-w.dts
-new file mode 100644
-index 000000000000..16971e50229f
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm2710-rpi-zero-2-w.dts
@@ -0,0 +1,257 @@
+ act_led_trigger = <&led_act>,"linux,default-trigger";
+ };
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm2710-rpi-zero-2.dts b/arch/arm/boot/dts/broadcom/bcm2710-rpi-zero-2.dts
-new file mode 100644
-index 000000000000..daa12bd30d6b
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm2710-rpi-zero-2.dts
@@ -0,0 +1 @@
+#include "bcm2710-rpi-zero-2-w.dts"
-diff --git a/arch/arm/boot/dts/broadcom/bcm2710.dtsi b/arch/arm/boot/dts/broadcom/bcm2710.dtsi
-new file mode 100644
-index 000000000000..bdcdbb51fab8
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm2710.dtsi
@@ -0,0 +1,32 @@
+&vc4 {
+ status = "disabled";
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm2711-rpi-4-b.dts b/arch/arm/boot/dts/broadcom/bcm2711-rpi-4-b.dts
-index 353bb50ce542..e376a5bf8913 100644
--- a/arch/arm/boot/dts/broadcom/bcm2711-rpi-4-b.dts
+++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi-4-b.dts
@@ -1,11 +1,19 @@
/ {
compatible = "raspberrypi,4-model-b", "brcm,bcm2711";
-@@ -68,7 +76,7 @@ &expgpio {
+@@ -68,7 +76,7 @@
"VDD_SD_IO_SEL",
"CAM_GPIO", /* 5 */
"SD_PWR_ON",
};
&gpio {
-@@ -82,21 +90,21 @@ &gpio {
+@@ -82,21 +90,21 @@
*/
gpio-line-names = "ID_SDA", /* 0 */
"ID_SCL",
"GPIO16",
"GPIO17",
"GPIO18",
-@@ -214,7 +222,7 @@ leds {
+@@ -214,7 +222,7 @@
led@0 {
reg = <0>;
color = <LED_COLOR_ID_GREEN>;
default-state = "keep";
};
-@@ -222,7 +230,7 @@ led@0 {
+@@ -222,7 +230,7 @@
led@1 {
reg = <1>;
color = <LED_COLOR_ID_AMBER>;
default-state = "keep";
};
};
-@@ -270,3 +278,234 @@ &vec {
+@@ -270,3 +278,234 @@
&wifi_pwrseq {
reset-gpios = <&expgpio 1 GPIO_ACTIVE_LOW>;
};
+ eth_max_speed = <&phy1>,"max-speed:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm2711-rpi-400.dts b/arch/arm/boot/dts/broadcom/bcm2711-rpi-400.dts
-index ca9be91b4f36..cd0bc647f7fc 100644
--- a/arch/arm/boot/dts/broadcom/bcm2711-rpi-400.dts
+++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi-400.dts
@@ -1,5 +1,4 @@
#include "bcm2711-rpi-4-b.dts"
/ {
-@@ -37,8 +36,54 @@ &led_pwr {
+@@ -37,8 +36,54 @@
gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
};
+ pwr_led_trigger = <&led_pwr>,"linux,default-trigger";
+ };
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4.dts b/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4.dts
-new file mode 100644
-index 000000000000..14cdca845300
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4.dts
@@ -0,0 +1,498 @@
+ pcie_tperst_clk_ms = <&pcie0>,"brcm,tperst-clk-ms:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4s.dts b/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4s.dts
-new file mode 100644
-index 000000000000..badf2a2fc3e9
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4s.dts
@@ -0,0 +1,293 @@
+ act_led_trigger = <&led_act>,"linux,default-trigger";
+ };
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi b/arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi
-new file mode 100644
-index 000000000000..8cc1ef5bf6d0
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi
@@ -0,0 +1,570 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm2711-rpi.dtsi b/arch/arm/boot/dts/broadcom/bcm2711-rpi.dtsi
-index 1eb6406449d1..60b75679a406 100644
--- a/arch/arm/boot/dts/broadcom/bcm2711-rpi.dtsi
+++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi.dtsi
-@@ -15,6 +15,7 @@ aliases {
+@@ -15,6 +15,7 @@
ethernet0 = &genet;
pcie0 = &pcie0;
blconfig = &blconfig;
};
i2c0mux: i2c-mux0 {
-@@ -99,6 +100,18 @@ blconfig: nvram@0 {
+@@ -99,6 +100,18 @@
no-map;
status = "disabled";
};
};
&v3d {
-@@ -108,3 +121,7 @@ &v3d {
+@@ -108,3 +121,7 @@
&vchiq {
interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
};
+&hevc_dec {
+ clocks = <&firmware_clocks 11>;
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm2711.dtsi b/arch/arm/boot/dts/broadcom/bcm2711.dtsi
-index 561851182672..bb137d8da1a8 100644
--- a/arch/arm/boot/dts/broadcom/bcm2711.dtsi
+++ b/arch/arm/boot/dts/broadcom/bcm2711.dtsi
-@@ -277,7 +277,7 @@ pwm1: pwm@7e20c800 {
+@@ -277,7 +277,7 @@
reg = <0x7e20c800 0x28>;
clocks = <&clocks BCM2835_CLOCK_PWM>;
assigned-clocks = <&clocks BCM2835_CLOCK_PWM>;
#pwm-cells = <3>;
status = "disabled";
};
-@@ -612,6 +612,15 @@ v3d: gpu@7ec00000 {
+@@ -612,6 +612,15 @@
resets = <&pm BCM2835_RESET_V3D>;
interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
};
};
};
-diff --git a/arch/arm/boot/dts/broadcom/bcm271x-rpi-bt.dtsi b/arch/arm/boot/dts/broadcom/bcm271x-rpi-bt.dtsi
-new file mode 100644
-index 000000000000..c77e280ccd16
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm271x-rpi-bt.dtsi
@@ -0,0 +1,42 @@
+ krnbt_baudrate = <&bt>,"max-speed:0", <&minibt>,"max-speed:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm283x-rpi-csi0-2lane.dtsi b/arch/arm/boot/dts/broadcom/bcm283x-rpi-csi0-2lane.dtsi
-new file mode 100644
-index 000000000000..6e4ce8622b47
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm283x-rpi-csi0-2lane.dtsi
@@ -0,0 +1,4 @@
+&csi0 {
+ brcm,num-data-lanes = <2>;
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm283x-rpi-csi1-2lane.dtsi b/arch/arm/boot/dts/broadcom/bcm283x-rpi-csi1-2lane.dtsi
-new file mode 100644
-index 000000000000..6938f4daacdc
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm283x-rpi-csi1-2lane.dtsi
@@ -0,0 +1,4 @@
+&csi1 {
+ brcm,num-data-lanes = <2>;
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm283x-rpi-csi1-4lane.dtsi b/arch/arm/boot/dts/broadcom/bcm283x-rpi-csi1-4lane.dtsi
-new file mode 100644
-index 000000000000..b37037437bee
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm283x-rpi-csi1-4lane.dtsi
@@ -0,0 +1,4 @@
+&csi1 {
+ brcm,num-data-lanes = <4>;
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm283x-rpi-i2c0mux_0_28.dtsi b/arch/arm/boot/dts/broadcom/bcm283x-rpi-i2c0mux_0_28.dtsi
-new file mode 100644
-index 000000000000..38f0074bce3f
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm283x-rpi-i2c0mux_0_28.dtsi
@@ -0,0 +1,4 @@
+ pinctrl-0 = <&i2c0_gpio0>;
+ pinctrl-1 = <&i2c0_gpio28>;
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm283x-rpi-i2c0mux_0_44.dtsi b/arch/arm/boot/dts/broadcom/bcm283x-rpi-i2c0mux_0_44.dtsi
-new file mode 100644
-index 000000000000..119946d878db
--- /dev/null
+++ b/arch/arm/boot/dts/broadcom/bcm283x-rpi-i2c0mux_0_44.dtsi
@@ -0,0 +1,4 @@
+ pinctrl-0 = <&i2c0_gpio0>;
+ pinctrl-1 = <&i2c0_gpio44>;
+};
-diff --git a/arch/arm/boot/dts/broadcom/bcm283x.dtsi b/arch/arm/boot/dts/broadcom/bcm283x.dtsi
-index 69b0919f1324..562c4e9d08cc 100644
--- a/arch/arm/boot/dts/broadcom/bcm283x.dtsi
+++ b/arch/arm/boot/dts/broadcom/bcm283x.dtsi
-@@ -363,7 +363,7 @@ dsi0: dsi@7e209000 {
+@@ -363,7 +363,7 @@
#size-cells = <0>;
#clock-cells = <1>;
<&clocks BCM2835_CLOCK_DSI0E>,
<&clocks BCM2835_CLOCK_DSI0P>;
clock-names = "phy", "escape", "pixel";
-@@ -415,7 +415,7 @@ pwm: pwm@7e20c000 {
+@@ -415,7 +415,7 @@
reg = <0x7e20c000 0x28>;
clocks = <&clocks BCM2835_CLOCK_PWM>;
assigned-clocks = <&clocks BCM2835_CLOCK_PWM>;
#pwm-cells = <3>;
status = "disabled";
};
-@@ -502,6 +502,10 @@ usb: usb@7e980000 {
+@@ -502,6 +502,10 @@
};
clocks {
/* The oscillator is the root of the clock tree. */
clk_osc: clk-osc {
compatible = "fixed-clock";
-diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile
-new file mode 100644
-index 000000000000..f8c13f656bb5
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/Makefile
@@ -0,0 +1,368 @@
+
+always-y := $(dtbo-y)
+clean-files := *.dtbo
-diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
-new file mode 100644
-index 000000000000..0e92e99f8399
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/README
@@ -0,0 +1,6034 @@
+Raspberry Pi. There is a more complete explanation here:
+
+https://www.raspberrypi.com/documentation/computers/configuration.html#device-trees-overlays-and-parameters
-diff --git a/arch/arm/boot/dts/overlays/act-led-overlay.dts b/arch/arm/boot/dts/overlays/act-led-overlay.dts
-new file mode 100644
-index 000000000000..685e354923a0
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/act-led-overlay.dts
@@ -0,0 +1,28 @@
+ activelow = <&frag0>,"gpios:8";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/adafruit-st7735r-overlay.dts b/arch/arm/boot/dts/overlays/adafruit-st7735r-overlay.dts
-new file mode 100644
-index 000000000000..6e69bd7fa031
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/adafruit-st7735r-overlay.dts
@@ -0,0 +1,83 @@
+ <&backlight_pins>,"brcm,pins:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/adafruit18-overlay.dts b/arch/arm/boot/dts/overlays/adafruit18-overlay.dts
-new file mode 100644
-index 000000000000..e1ce94a8cd3e
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/adafruit18-overlay.dts
@@ -0,0 +1,55 @@
+ led_pin = <&af18>,"led-gpios:4";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/adau1977-adc-overlay.dts b/arch/arm/boot/dts/overlays/adau1977-adc-overlay.dts
-new file mode 100644
-index 000000000000..cf6d1ef3bfff
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/adau1977-adc-overlay.dts
@@ -0,0 +1,40 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/adau7002-simple-overlay.dts b/arch/arm/boot/dts/overlays/adau7002-simple-overlay.dts
-new file mode 100644
-index 000000000000..62e92bd8f952
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/adau7002-simple-overlay.dts
@@ -0,0 +1,52 @@
+ card-name = <&sound_overlay>,"simple-audio-card,name";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/ads1015-overlay.dts b/arch/arm/boot/dts/overlays/ads1015-overlay.dts
-new file mode 100644
-index 000000000000..dc1764613a8b
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/ads1015-overlay.dts
@@ -0,0 +1,98 @@
+ };
+
+};
-diff --git a/arch/arm/boot/dts/overlays/ads1115-overlay.dts b/arch/arm/boot/dts/overlays/ads1115-overlay.dts
-new file mode 100644
-index 000000000000..6a1d86929add
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/ads1115-overlay.dts
@@ -0,0 +1,105 @@
+ chd_datarate = <&channel_d>,"ti,datarate:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/ads7846-overlay.dts b/arch/arm/boot/dts/overlays/ads7846-overlay.dts
-new file mode 100644
-index 000000000000..cb3e3bf6c098
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/ads7846-overlay.dts
@@ -0,0 +1,91 @@
+ invy = <&ads7846>,"touchscreen-inverted-y?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/adv7282m-overlay.dts b/arch/arm/boot/dts/overlays/adv7282m-overlay.dts
-new file mode 100644
-index 000000000000..a9eb75a30825
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/adv7282m-overlay.dts
@@ -0,0 +1,73 @@
+ media-controller = <0>,"!4";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/adv728x-m-overlay.dts b/arch/arm/boot/dts/overlays/adv728x-m-overlay.dts
-new file mode 100644
-index 000000000000..ea392e886984
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/adv728x-m-overlay.dts
@@ -0,0 +1,37 @@
+ adv7281ma = <0>, "+103";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/akkordion-iqdacplus-overlay.dts b/arch/arm/boot/dts/overlays/akkordion-iqdacplus-overlay.dts
-new file mode 100644
-index 000000000000..d867146bcb8f
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/akkordion-iqdacplus-overlay.dts
@@ -0,0 +1,49 @@
+ 24db_digital_gain = <&frag2>,"iqaudio,24db_digital_gain?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/allo-boss-dac-pcm512x-audio-overlay.dts b/arch/arm/boot/dts/overlays/allo-boss-dac-pcm512x-audio-overlay.dts
-new file mode 100644
-index 000000000000..16806945890b
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/allo-boss-dac-pcm512x-audio-overlay.dts
@@ -0,0 +1,61 @@
+ <&boss_dac>,"i2s-controller:0=",<&i2s_clk_producer>;
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/allo-boss2-dac-audio-overlay.dts b/arch/arm/boot/dts/overlays/allo-boss2-dac-audio-overlay.dts
-new file mode 100644
-index 000000000000..feac2b091b36
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/allo-boss2-dac-audio-overlay.dts
@@ -0,0 +1,57 @@
+ };
+};
+
-diff --git a/arch/arm/boot/dts/overlays/allo-digione-overlay.dts b/arch/arm/boot/dts/overlays/allo-digione-overlay.dts
-new file mode 100644
-index 000000000000..61c3c2e9fbd8
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/allo-digione-overlay.dts
@@ -0,0 +1,44 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/allo-katana-dac-audio-overlay.dts b/arch/arm/boot/dts/overlays/allo-katana-dac-audio-overlay.dts
-new file mode 100644
-index 000000000000..1ebb6bc6b907
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/allo-katana-dac-audio-overlay.dts
@@ -0,0 +1,58 @@
+ };
+};
+
-diff --git a/arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts b/arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts
-new file mode 100644
-index 000000000000..1b79ef1df2a1
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/allo-piano-dac-pcm512x-audio-overlay.dts
@@ -0,0 +1,54 @@
+ <&piano_dac>,"allo,24db_digital_gain?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/allo-piano-dac-plus-pcm512x-audio-overlay.dts b/arch/arm/boot/dts/overlays/allo-piano-dac-plus-pcm512x-audio-overlay.dts
-new file mode 100644
-index 000000000000..d17c9c10df39
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/allo-piano-dac-plus-pcm512x-audio-overlay.dts
@@ -0,0 +1,57 @@
+ <&piano_dac>,"allo,glb_mclk?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/anyspi-overlay.dts b/arch/arm/boot/dts/overlays/anyspi-overlay.dts
-new file mode 100755
-index 000000000000..87523dcca318
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/anyspi-overlay.dts
@@ -0,0 +1,205 @@
+ <&anyspi_22>, "spi-max-frequency:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/apds9960-overlay.dts b/arch/arm/boot/dts/overlays/apds9960-overlay.dts
-new file mode 100644
-index 000000000000..bb18cca1ac66
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/apds9960-overlay.dts
@@ -0,0 +1,55 @@
+ };
+};
+
-diff --git a/arch/arm/boot/dts/overlays/applepi-dac-overlay.dts b/arch/arm/boot/dts/overlays/applepi-dac-overlay.dts
-new file mode 100644
-index 000000000000..cb7649d3a613
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/applepi-dac-overlay.dts
@@ -0,0 +1,57 @@
+ compile with:
+ dtc -@ -H epapr -O dtb -o ApplePi-DAC.dtbo -W no-unit_address_vs_reg ApplePi-DAC.dts
+*/
-diff --git a/arch/arm/boot/dts/overlays/arducam-64mp-overlay.dts b/arch/arm/boot/dts/overlays/arducam-64mp-overlay.dts
-new file mode 100644
-index 000000000000..3f3d7858f2fd
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/arducam-64mp-overlay.dts
@@ -0,0 +1,97 @@
+&vcm_node {
+ status = "okay";
+};
-diff --git a/arch/arm/boot/dts/overlays/arducam-64mp.dtsi b/arch/arm/boot/dts/overlays/arducam-64mp.dtsi
-new file mode 100644
-index 000000000000..ed9f2e50c287
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/arducam-64mp.dtsi
@@ -0,0 +1,34 @@
+ status = "disabled";
+ VDD-supply = <&cam1_reg>;
+};
-diff --git a/arch/arm/boot/dts/overlays/arducam-pivariety-overlay.dts b/arch/arm/boot/dts/overlays/arducam-pivariety-overlay.dts
-new file mode 100644
-index 000000000000..752022786f70
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/arducam-pivariety-overlay.dts
@@ -0,0 +1,100 @@
+ <&arducam_pivariety>, "VANA-supply:0=",<&cam0_reg>;
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/at86rf233-overlay.dts b/arch/arm/boot/dts/overlays/at86rf233-overlay.dts
-new file mode 100644
-index 000000000000..2caae2e21328
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/at86rf233-overlay.dts
@@ -0,0 +1,44 @@
+ trim = <&lowpan0>, "xtal-trim.0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/audioinjector-addons-overlay.dts b/arch/arm/boot/dts/overlays/audioinjector-addons-overlay.dts
-new file mode 100644
-index 000000000000..af72ea0b706a
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/audioinjector-addons-overlay.dts
@@ -0,0 +1,60 @@
+ non-stop-clocks = <&snd>, "non-stop-clocks?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/audioinjector-bare-i2s-overlay.dts b/arch/arm/boot/dts/overlays/audioinjector-bare-i2s-overlay.dts
-new file mode 100644
-index 000000000000..a536fbb1a985
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/audioinjector-bare-i2s-overlay.dts
@@ -0,0 +1,50 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/audioinjector-isolated-soundcard-overlay.dts b/arch/arm/boot/dts/overlays/audioinjector-isolated-soundcard-overlay.dts
-new file mode 100644
-index 000000000000..89faed778fcb
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/audioinjector-isolated-soundcard-overlay.dts
@@ -0,0 +1,55 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/audioinjector-ultra-overlay.dts b/arch/arm/boot/dts/overlays/audioinjector-ultra-overlay.dts
-new file mode 100644
-index 000000000000..ee79441187bd
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/audioinjector-ultra-overlay.dts
@@ -0,0 +1,71 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/audioinjector-wm8731-audio-overlay.dts b/arch/arm/boot/dts/overlays/audioinjector-wm8731-audio-overlay.dts
-new file mode 100644
-index 000000000000..417353b2798e
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/audioinjector-wm8731-audio-overlay.dts
@@ -0,0 +1,39 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/audiosense-pi-overlay.dts b/arch/arm/boot/dts/overlays/audiosense-pi-overlay.dts
-new file mode 100644
-index 000000000000..34b1f883f80d
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/audiosense-pi-overlay.dts
@@ -0,0 +1,72 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/audremap-overlay.dts b/arch/arm/boot/dts/overlays/audremap-overlay.dts
-new file mode 100644
-index 000000000000..95027c5c8f9e
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/audremap-overlay.dts
@@ -0,0 +1,38 @@
+ <&frag0>,"brcm,function:0=4";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/audremap-pi5-overlay.dts b/arch/arm/boot/dts/overlays/audremap-pi5-overlay.dts
-new file mode 100644
-index 000000000000..aa74ecd26f15
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/audremap-pi5-overlay.dts
@@ -0,0 +1,65 @@
+ pins_40_45 = <0>, "-0-1"; /* sorry not supported */
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/balena-fin-overlay.dts b/arch/arm/boot/dts/overlays/balena-fin-overlay.dts
-new file mode 100644
-index 000000000000..8fc22587e69c
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/balena-fin-overlay.dts
@@ -0,0 +1,125 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/bcm2712d0-overlay.dts b/arch/arm/boot/dts/overlays/bcm2712d0-overlay.dts
-new file mode 100644
-index 000000000000..1ee74234e805
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/bcm2712d0-overlay.dts
@@ -0,0 +1,68 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/camera-mux-2port-overlay.dts b/arch/arm/boot/dts/overlays/camera-mux-2port-overlay.dts
-new file mode 100644
-index 000000000000..97d1988dd984
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/camera-mux-2port-overlay.dts
@@ -0,0 +1,545 @@
+ cam1-sync-sink = <&imx477_1>, "trigger-mode:0=2";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/camera-mux-4port-overlay.dts b/arch/arm/boot/dts/overlays/camera-mux-4port-overlay.dts
-new file mode 100644
-index 000000000000..dbbb476f51e7
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/camera-mux-4port-overlay.dts
@@ -0,0 +1,954 @@
+ cam3-sync-sink = <&imx477_3>, "trigger-mode:0=2";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/cap1106-overlay.dts b/arch/arm/boot/dts/overlays/cap1106-overlay.dts
-new file mode 100644
-index 000000000000..0a585e725f84
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/cap1106-overlay.dts
@@ -0,0 +1,52 @@
+ <&cap1106_pins>, "brcm,pins:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/chipcap2-overlay.dts b/arch/arm/boot/dts/overlays/chipcap2-overlay.dts
-new file mode 100644
-index 000000000000..221b2541c909
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/chipcap2-overlay.dts
@@ -0,0 +1,52 @@
+ reg_pin = <&chipcap2_reg>, "gpio:4";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/chipdip-dac-overlay.dts b/arch/arm/boot/dts/overlays/chipdip-dac-overlay.dts
-new file mode 100644
-index 000000000000..3ef7565a9312
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/chipdip-dac-overlay.dts
@@ -0,0 +1,46 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/cirrus-wm5102-overlay.dts b/arch/arm/boot/dts/overlays/cirrus-wm5102-overlay.dts
-new file mode 100644
-index 000000000000..a82b422ba16e
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/cirrus-wm5102-overlay.dts
@@ -0,0 +1,172 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/cm-swap-i2c0-overlay.dts b/arch/arm/boot/dts/overlays/cm-swap-i2c0-overlay.dts
-new file mode 100644
-index 000000000000..6b7f599f7611
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/cm-swap-i2c0-overlay.dts
@@ -0,0 +1,27 @@
+ i2c10-gpio44 = <&i2c0mux_frag>, "pinctrl-1:0=",<&i2c0_gpio44>;
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/cma-overlay.dts b/arch/arm/boot/dts/overlays/cma-overlay.dts
-new file mode 100644
-index 000000000000..1d87c599f909
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/cma-overlay.dts
@@ -0,0 +1,36 @@
+ cma-default = <0>,"-0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/crystalfontz-cfa050_pi_m-overlay.dts b/arch/arm/boot/dts/overlays/crystalfontz-cfa050_pi_m-overlay.dts
-new file mode 100644
-index 000000000000..fe8f97a57278
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/crystalfontz-cfa050_pi_m-overlay.dts
@@ -0,0 +1,133 @@
+ <&frag5>, "target:0=",<&i2c_csi_dsi0>;
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/cutiepi-panel-overlay.dts b/arch/arm/boot/dts/overlays/cutiepi-panel-overlay.dts
-new file mode 100644
-index 000000000000..d14c3698eb75
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/cutiepi-panel-overlay.dts
@@ -0,0 +1,117 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/dacberry400-overlay.dts b/arch/arm/boot/dts/overlays/dacberry400-overlay.dts
-new file mode 100644
-index 000000000000..dfc357102c00
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/dacberry400-overlay.dts
@@ -0,0 +1,61 @@
+};
+
+
-diff --git a/arch/arm/boot/dts/overlays/dht11-overlay.dts b/arch/arm/boot/dts/overlays/dht11-overlay.dts
-new file mode 100644
-index 000000000000..8b0fc6b7a3cb
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/dht11-overlay.dts
@@ -0,0 +1,48 @@
+ <&iio>,"reg:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/dionaudio-kiwi-overlay.dts b/arch/arm/boot/dts/overlays/dionaudio-kiwi-overlay.dts
-new file mode 100644
-index 000000000000..ab0144cd17dc
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/dionaudio-kiwi-overlay.dts
@@ -0,0 +1,39 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/dionaudio-loco-overlay.dts b/arch/arm/boot/dts/overlays/dionaudio-loco-overlay.dts
-new file mode 100644
-index 000000000000..6f4a9c1a8243
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/dionaudio-loco-overlay.dts
@@ -0,0 +1,39 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/dionaudio-loco-v2-overlay.dts b/arch/arm/boot/dts/overlays/dionaudio-loco-v2-overlay.dts
-new file mode 100644
-index 000000000000..975a844eb272
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/dionaudio-loco-v2-overlay.dts
@@ -0,0 +1,49 @@
+ 24db_digital_gain = <&frag0>,"dionaudio,24db_digital_gain?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/disable-bt-overlay.dts b/arch/arm/boot/dts/overlays/disable-bt-overlay.dts
-new file mode 100644
-index 000000000000..f3a8af1375f0
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/disable-bt-overlay.dts
@@ -0,0 +1,59 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/disable-bt-pi5-overlay.dts b/arch/arm/boot/dts/overlays/disable-bt-pi5-overlay.dts
-new file mode 100644
-index 000000000000..6e23b64d44e7
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/disable-bt-pi5-overlay.dts
@@ -0,0 +1,17 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/disable-emmc2-overlay.dts b/arch/arm/boot/dts/overlays/disable-emmc2-overlay.dts
-new file mode 100644
-index 000000000000..8cd1d7fa4a90
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/disable-emmc2-overlay.dts
@@ -0,0 +1,13 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/disable-wifi-overlay.dts b/arch/arm/boot/dts/overlays/disable-wifi-overlay.dts
-new file mode 100644
-index 000000000000..75e046463900
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/disable-wifi-overlay.dts
@@ -0,0 +1,20 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/disable-wifi-pi5-overlay.dts b/arch/arm/boot/dts/overlays/disable-wifi-pi5-overlay.dts
-new file mode 100644
-index 000000000000..d5389c5dbb69
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/disable-wifi-pi5-overlay.dts
@@ -0,0 +1,13 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/dpi18-overlay.dts b/arch/arm/boot/dts/overlays/dpi18-overlay.dts
-new file mode 100644
-index 000000000000..4abe5be744db
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/dpi18-overlay.dts
@@ -0,0 +1,39 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/dpi18cpadhi-overlay.dts b/arch/arm/boot/dts/overlays/dpi18cpadhi-overlay.dts
-new file mode 100644
-index 000000000000..50c88a1ed299
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/dpi18cpadhi-overlay.dts
@@ -0,0 +1,26 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/dpi24-overlay.dts b/arch/arm/boot/dts/overlays/dpi24-overlay.dts
-new file mode 100644
-index 000000000000..44335cc81277
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/dpi24-overlay.dts
@@ -0,0 +1,39 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/draws-overlay.dts b/arch/arm/boot/dts/overlays/draws-overlay.dts
-new file mode 100644
-index 000000000000..d2a8513d4cc9
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/draws-overlay.dts
@@ -0,0 +1,204 @@
+ alsaname = <&snd>, "simple-audio-card,name";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/dwc-otg-deprecated-overlay.dts b/arch/arm/boot/dts/overlays/dwc-otg-deprecated-overlay.dts
-new file mode 100644
-index 000000000000..78c5e9f85048
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/dwc-otg-deprecated-overlay.dts
@@ -0,0 +1,14 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/dwc2-overlay.dts b/arch/arm/boot/dts/overlays/dwc2-overlay.dts
-new file mode 100644
-index 000000000000..0d83e344ad97
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/dwc2-overlay.dts
@@ -0,0 +1,26 @@
+ g-rx-fifo-size = <&dwc2_usb>,"g-rx-fifo-size:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/edt-ft5406-overlay.dts b/arch/arm/boot/dts/overlays/edt-ft5406-overlay.dts
-new file mode 100644
-index 000000000000..7cbc3fa673a3
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/edt-ft5406-overlay.dts
@@ -0,0 +1,22 @@
+ addr = <&ft5406>,"reg:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/edt-ft5406.dtsi b/arch/arm/boot/dts/overlays/edt-ft5406.dtsi
-new file mode 100644
-index 000000000000..3be2f18e898f
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/edt-ft5406.dtsi
@@ -0,0 +1,48 @@
+ swapxy = <&ft5406>,"touchscreen-swapped-x-y?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/enc28j60-overlay.dts b/arch/arm/boot/dts/overlays/enc28j60-overlay.dts
-new file mode 100644
-index 000000000000..7af5c2e607ea
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/enc28j60-overlay.dts
@@ -0,0 +1,53 @@
+ speed = <ð1>, "spi-max-frequency:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/enc28j60-spi2-overlay.dts b/arch/arm/boot/dts/overlays/enc28j60-spi2-overlay.dts
-new file mode 100644
-index 000000000000..17cb5b8fa485
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/enc28j60-spi2-overlay.dts
@@ -0,0 +1,47 @@
+ speed = <ð1>, "spi-max-frequency:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/exc3000-overlay.dts b/arch/arm/boot/dts/overlays/exc3000-overlay.dts
-new file mode 100644
-index 000000000000..6f087fb20661
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/exc3000-overlay.dts
@@ -0,0 +1,48 @@
+ swapxy = <&exc3000>,"touchscreen-swapped-x-y?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/ezsound-6x8iso-overlay.dts b/arch/arm/boot/dts/overlays/ezsound-6x8iso-overlay.dts
-new file mode 100644
-index 000000000000..764ad9a56edc
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/ezsound-6x8iso-overlay.dts
@@ -0,0 +1,117 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/fbtft-overlay.dts b/arch/arm/boot/dts/overlays/fbtft-overlay.dts
-new file mode 100644
-index 000000000000..db45f8c53bcc
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/fbtft-overlay.dts
@@ -0,0 +1,611 @@
+ <&display>, "led-gpios:8=0"; /* GPIO_ACTIVE_HIGH */
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/fe-pi-audio-overlay.dts b/arch/arm/boot/dts/overlays/fe-pi-audio-overlay.dts
-new file mode 100644
-index 000000000000..10624fe4f5ac
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/fe-pi-audio-overlay.dts
@@ -0,0 +1,70 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/fsm-demo-overlay.dts b/arch/arm/boot/dts/overlays/fsm-demo-overlay.dts
-new file mode 100644
-index 000000000000..e9944f5cd258
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/fsm-demo-overlay.dts
@@ -0,0 +1,104 @@
+ fsm_debug = <&fsm_demo>,"debug:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/gc9a01-overlay.dts b/arch/arm/boot/dts/overlays/gc9a01-overlay.dts
-new file mode 100644
-index 000000000000..3d31030c5564
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/gc9a01-overlay.dts
@@ -0,0 +1,151 @@
+ debug = <&gc9a01>,"debug:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/ghost-amp-overlay.dts b/arch/arm/boot/dts/overlays/ghost-amp-overlay.dts
-new file mode 100644
-index 000000000000..d2f1e9a888e0
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/ghost-amp-overlay.dts
@@ -0,0 +1,145 @@
+ fsm_debug = <&>,"debug:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/goodix-overlay.dts b/arch/arm/boot/dts/overlays/goodix-overlay.dts
-new file mode 100644
-index 000000000000..8a5035df9daa
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/goodix-overlay.dts
@@ -0,0 +1,49 @@
+ <&i2c_frag>, "target-path";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/googlevoicehat-soundcard-overlay.dts b/arch/arm/boot/dts/overlays/googlevoicehat-soundcard-overlay.dts
-new file mode 100644
-index 000000000000..1063f1898562
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/googlevoicehat-soundcard-overlay.dts
@@ -0,0 +1,49 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/gpio-charger-overlay.dts b/arch/arm/boot/dts/overlays/gpio-charger-overlay.dts
-new file mode 100644
-index 000000000000..2868aa06dd6d
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/gpio-charger-overlay.dts
@@ -0,0 +1,42 @@
+ };
+
+};
-diff --git a/arch/arm/boot/dts/overlays/gpio-fan-overlay.dts b/arch/arm/boot/dts/overlays/gpio-fan-overlay.dts
-new file mode 100644
-index 000000000000..17b77bb27931
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/gpio-fan-overlay.dts
@@ -0,0 +1,89 @@
+ hyst = <&cpu_hot>,"hysteresis:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/gpio-hog-overlay.dts b/arch/arm/boot/dts/overlays/gpio-hog-overlay.dts
-new file mode 100644
-index 000000000000..c9e39046fed9
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/gpio-hog-overlay.dts
@@ -0,0 +1,27 @@
+ <&hog>,"output-low?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/gpio-ir-overlay.dts b/arch/arm/boot/dts/overlays/gpio-ir-overlay.dts
-new file mode 100644
-index 000000000000..162b6ce07dc9
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/gpio-ir-overlay.dts
@@ -0,0 +1,49 @@
+ rc-map-name = <&gpio_ir>,"linux,rc-map-name"; // default rc map
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/gpio-ir-tx-overlay.dts b/arch/arm/boot/dts/overlays/gpio-ir-tx-overlay.dts
-new file mode 100644
-index 000000000000..3625431b7560
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/gpio-ir-tx-overlay.dts
@@ -0,0 +1,36 @@
+ invert = <&gpio_ir_tx>, "gpios:8"; // 1 = active low
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/gpio-key-overlay.dts b/arch/arm/boot/dts/overlays/gpio-key-overlay.dts
-new file mode 100644
-index 000000000000..eb5968cbc07f
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/gpio-key-overlay.dts
@@ -0,0 +1,49 @@
+ };
+
+};
-diff --git a/arch/arm/boot/dts/overlays/gpio-led-overlay.dts b/arch/arm/boot/dts/overlays/gpio-led-overlay.dts
-new file mode 100755
-index 000000000000..d8e9d53f1b61
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/gpio-led-overlay.dts
@@ -0,0 +1,97 @@
+
+};
+
-diff --git a/arch/arm/boot/dts/overlays/gpio-no-bank0-irq-overlay.dts b/arch/arm/boot/dts/overlays/gpio-no-bank0-irq-overlay.dts
-new file mode 100755
-index 000000000000..96cbe80820b7
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/gpio-no-bank0-irq-overlay.dts
@@ -0,0 +1,14 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/gpio-no-irq-overlay.dts b/arch/arm/boot/dts/overlays/gpio-no-irq-overlay.dts
-new file mode 100644
-index 000000000000..55f9bff3a8f6
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/gpio-no-irq-overlay.dts
@@ -0,0 +1,14 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/gpio-poweroff-overlay.dts b/arch/arm/boot/dts/overlays/gpio-poweroff-overlay.dts
-new file mode 100644
-index 000000000000..0af2b0d55c63
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/gpio-poweroff-overlay.dts
@@ -0,0 +1,28 @@
+ inactive_delay_ms = <&power_ctrl>,"inactive-delay-ms:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/gpio-shutdown-overlay.dts b/arch/arm/boot/dts/overlays/gpio-shutdown-overlay.dts
-new file mode 100644
-index 000000000000..da148064aedd
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/gpio-shutdown-overlay.dts
@@ -0,0 +1,86 @@
+ };
+
+};
-diff --git a/arch/arm/boot/dts/overlays/hat_map.dts b/arch/arm/boot/dts/overlays/hat_map.dts
-new file mode 100644
-index 000000000000..0b5d902e85b8
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/hat_map.dts
@@ -0,0 +1,124 @@
+ overlay = "rpi-sense-v2";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/hd44780-i2c-lcd-overlay.dts b/arch/arm/boot/dts/overlays/hd44780-i2c-lcd-overlay.dts
-new file mode 100644
-index 000000000000..d5bfd762fe2e
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/hd44780-i2c-lcd-overlay.dts
@@ -0,0 +1,59 @@
+ };
+
+};
-diff --git a/arch/arm/boot/dts/overlays/hd44780-lcd-overlay.dts b/arch/arm/boot/dts/overlays/hd44780-lcd-overlay.dts
-new file mode 100644
-index 000000000000..ee726669ff51
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/hd44780-lcd-overlay.dts
@@ -0,0 +1,46 @@
+ };
+
+};
-diff --git a/arch/arm/boot/dts/overlays/hdmi-backlight-hwhack-gpio-overlay.dts b/arch/arm/boot/dts/overlays/hdmi-backlight-hwhack-gpio-overlay.dts
-new file mode 100644
-index 000000000000..50b9a2665c80
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/hdmi-backlight-hwhack-gpio-overlay.dts
@@ -0,0 +1,47 @@
+ active_low = <&hdmi_backlight_hwhack_gpio>,"gpios:8";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/hifiberry-adc-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-adc-overlay.dts
-new file mode 100644
-index 000000000000..2658f3242556
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/hifiberry-adc-overlay.dts
@@ -0,0 +1,45 @@
+ leds_off = <&hifiberry_adc>,"hifiberry-adc,leds_off?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/hifiberry-adc8x-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-adc8x-overlay.dts
-new file mode 100644
-index 000000000000..e0432115dc39
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/hifiberry-adc8x-overlay.dts
@@ -0,0 +1,50 @@
+ };
+
+};
-diff --git a/arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts
-new file mode 100644
-index 000000000000..667cd2601806
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/hifiberry-amp-overlay.dts
@@ -0,0 +1,39 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/hifiberry-amp100-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-amp100-overlay.dts
-new file mode 100644
-index 000000000000..b38e6631a572
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/hifiberry-amp100-overlay.dts
@@ -0,0 +1,67 @@
+ auto_mute = <&hifiberry_dacplus>,"hifiberry-dacplus,auto_mute?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/hifiberry-amp3-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-amp3-overlay.dts
-new file mode 100644
-index 000000000000..fc8f11b6294e
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/hifiberry-amp3-overlay.dts
@@ -0,0 +1,57 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/hifiberry-amp4pro-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-amp4pro-overlay.dts
-new file mode 100644
-index 000000000000..6b211c2932dd
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/hifiberry-amp4pro-overlay.dts
@@ -0,0 +1,63 @@
+ <&hifiberry_dacplus>,"i2s-controller:0=",<&i2s_clk_producer>;
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts
-new file mode 100644
-index 000000000000..efb0e18dbdc4
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/hifiberry-dac-overlay.dts
@@ -0,0 +1,34 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/hifiberry-dac8x-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-dac8x-overlay.dts
-new file mode 100644
-index 000000000000..1f4bcfc2328e
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/hifiberry-dac8x-overlay.dts
@@ -0,0 +1,56 @@
+ };
+
+};
-diff --git a/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts
-new file mode 100644
-index 000000000000..0d0ab068112f
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/hifiberry-dacplus-overlay.dts
@@ -0,0 +1,68 @@
+ leds_off = <&hifiberry_dacplus>,"hifiberry-dacplus,leds_off?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/hifiberry-dacplus-pro-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-dacplus-pro-overlay.dts
-new file mode 100644
-index 000000000000..28b1c2f2f1a8
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/hifiberry-dacplus-pro-overlay.dts
@@ -0,0 +1,64 @@
+ leds_off = <&hifiberry_dacplus>,"hifiberry-dacplus,leds_off?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/hifiberry-dacplus-std-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-dacplus-std-overlay.dts
-new file mode 100644
-index 000000000000..8872e3aa348d
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/hifiberry-dacplus-std-overlay.dts
@@ -0,0 +1,65 @@
+ leds_off = <&hifiberry_dacplus>,"hifiberry-dacplus,leds_off?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/hifiberry-dacplusadc-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-dacplusadc-overlay.dts
-new file mode 100644
-index 000000000000..ea4c3572826f
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/hifiberry-dacplusadc-overlay.dts
@@ -0,0 +1,72 @@
+ leds_off = <&hifiberry_dacplusadc>,"hifiberry-dacplusadc,leds_off?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/hifiberry-dacplusadcpro-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-dacplusadcpro-overlay.dts
-new file mode 100644
-index 000000000000..a4268bd72477
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/hifiberry-dacplusadcpro-overlay.dts
@@ -0,0 +1,72 @@
+ leds_off = <&hifiberry_dacplusadcpro>,"hifiberry-dacplusadcpro,leds_off?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/hifiberry-dacplusdsp-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-dacplusdsp-overlay.dts
-new file mode 100644
-index 000000000000..e916485f737e
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/hifiberry-dacplusdsp-overlay.dts
@@ -0,0 +1,34 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/hifiberry-dacplushd-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-dacplushd-overlay.dts
-new file mode 100644
-index 000000000000..1856ac19793b
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/hifiberry-dacplushd-overlay.dts
@@ -0,0 +1,94 @@
+ };
+
+};
-diff --git a/arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts
-new file mode 100644
-index 000000000000..eb68f117a92a
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/hifiberry-digi-overlay.dts
@@ -0,0 +1,41 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts
-new file mode 100644
-index 000000000000..18d16276e120
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts
@@ -0,0 +1,43 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/highperi-overlay.dts b/arch/arm/boot/dts/overlays/highperi-overlay.dts
-new file mode 100644
-index 000000000000..46cb76c2d34f
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/highperi-overlay.dts
@@ -0,0 +1,63 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/hy28a-overlay.dts b/arch/arm/boot/dts/overlays/hy28a-overlay.dts
-new file mode 100644
-index 000000000000..d0d52ebd9bd5
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/hy28a-overlay.dts
@@ -0,0 +1,93 @@
+ <&hy28a_pins>, "brcm,pins:8";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/hy28b-2017-overlay.dts b/arch/arm/boot/dts/overlays/hy28b-2017-overlay.dts
-new file mode 100644
-index 000000000000..9df33c5d95bb
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/hy28b-2017-overlay.dts
@@ -0,0 +1,152 @@
+ <&hy28b_pins>, "brcm,pins:8";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/hy28b-overlay.dts b/arch/arm/boot/dts/overlays/hy28b-overlay.dts
-new file mode 100644
-index 000000000000..421bde94a4a0
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/hy28b-overlay.dts
@@ -0,0 +1,148 @@
+ <&hy28b_pins>, "brcm,pins:8";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/i-sabre-q2m-overlay.dts b/arch/arm/boot/dts/overlays/i-sabre-q2m-overlay.dts
-new file mode 100644
-index 000000000000..6db52955a8f8
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/i-sabre-q2m-overlay.dts
@@ -0,0 +1,39 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/i2c-bcm2708-overlay.dts b/arch/arm/boot/dts/overlays/i2c-bcm2708-overlay.dts
-new file mode 100644
-index 000000000000..8204b6b3aef8
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/i2c-bcm2708-overlay.dts
@@ -0,0 +1,13 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/i2c-buses.dtsi b/arch/arm/boot/dts/overlays/i2c-buses.dtsi
-new file mode 100644
-index 000000000000..5c7699a8ac66
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/i2c-buses.dtsi
@@ -0,0 +1,67 @@
+ <0>,"-101-102";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/i2c-fan-overlay.dts b/arch/arm/boot/dts/overlays/i2c-fan-overlay.dts
-new file mode 100644
-index 000000000000..70e204cb81e6
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/i2c-fan-overlay.dts
@@ -0,0 +1,77 @@
+ <&map1>,"cooling-device:0=",<&emc2301>;
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts b/arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts
-new file mode 100644
-index 000000000000..63231b5d7c0c
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/i2c-gpio-overlay.dts
@@ -0,0 +1,47 @@
+ bus = <&i2c_gpio>, "reg:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/i2c-mux-overlay.dts b/arch/arm/boot/dts/overlays/i2c-mux-overlay.dts
-new file mode 100644
-index 000000000000..be79831ea8d2
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/i2c-mux-overlay.dts
@@ -0,0 +1,149 @@
+ <&pca9548>,"idle-state:0=", <MUX_IDLE_DISCONNECT>;
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/i2c-pwm-pca9685a-overlay.dts b/arch/arm/boot/dts/overlays/i2c-pwm-pca9685a-overlay.dts
-new file mode 100644
-index 000000000000..4941e78a3d93
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/i2c-pwm-pca9685a-overlay.dts
@@ -0,0 +1,28 @@
+ addr = <&pca>,"reg:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/i2c-rtc-common.dtsi b/arch/arm/boot/dts/overlays/i2c-rtc-common.dtsi
-new file mode 100644
-index 000000000000..70d286211359
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/i2c-rtc-common.dtsi
@@ -0,0 +1,382 @@
+ <&pcf8563>,"wakeup-source?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/i2c-rtc-gpio-overlay.dts b/arch/arm/boot/dts/overlays/i2c-rtc-gpio-overlay.dts
-new file mode 100644
-index 000000000000..c83480c1c327
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/i2c-rtc-gpio-overlay.dts
@@ -0,0 +1,31 @@
+ i2c_gpio_delay_us = <&i2cbus>,"i2c-gpio,delay-us:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts b/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts
-new file mode 100644
-index 000000000000..e003244d894c
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts
@@ -0,0 +1,6 @@
+
+#include "i2c-rtc-common.dtsi"
+#include "i2c-buses.dtsi"
-diff --git a/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi b/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi
-new file mode 100755
-index 000000000000..04802f6dca1e
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi
@@ -0,0 +1,1006 @@
+ gain = <&ina238>,"ti,shunt-gain:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/i2c-sensor-overlay.dts b/arch/arm/boot/dts/overlays/i2c-sensor-overlay.dts
-new file mode 100755
-index 000000000000..29522e666908
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/i2c-sensor-overlay.dts
@@ -0,0 +1,6 @@
+
+#include "i2c-sensor-common.dtsi"
+#include "i2c-buses.dtsi"
-diff --git a/arch/arm/boot/dts/overlays/i2c0-overlay.dts b/arch/arm/boot/dts/overlays/i2c0-overlay.dts
-new file mode 100644
-index 000000000000..46bf1bf2dc5c
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/i2c0-overlay.dts
@@ -0,0 +1,83 @@
+ combine = <0>, "!5";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/i2c0-pi5-overlay.dts b/arch/arm/boot/dts/overlays/i2c0-pi5-overlay.dts
-new file mode 100644
-index 000000000000..152794822552
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/i2c0-pi5-overlay.dts
@@ -0,0 +1,34 @@
+ baudrate = <&frag0>, "clock-frequency:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/i2c1-overlay.dts b/arch/arm/boot/dts/overlays/i2c1-overlay.dts
-new file mode 100644
-index 000000000000..addaed73e665
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/i2c1-overlay.dts
@@ -0,0 +1,44 @@
+ combine = <0>, "!3";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/i2c1-pi5-overlay.dts b/arch/arm/boot/dts/overlays/i2c1-pi5-overlay.dts
-new file mode 100644
-index 000000000000..719966ceb59a
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/i2c1-pi5-overlay.dts
@@ -0,0 +1,34 @@
+ baudrate = <&frag0>, "clock-frequency:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/i2c2-pi5-overlay.dts b/arch/arm/boot/dts/overlays/i2c2-pi5-overlay.dts
-new file mode 100644
-index 000000000000..324d344052b8
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/i2c2-pi5-overlay.dts
@@ -0,0 +1,21 @@
+ baudrate = <&frag0>, "clock-frequency:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/i2c3-overlay.dts b/arch/arm/boot/dts/overlays/i2c3-overlay.dts
-new file mode 100644
-index 000000000000..663d4f060ee8
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/i2c3-overlay.dts
@@ -0,0 +1,34 @@
+ baudrate = <&frag0>, "clock-frequency:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/i2c3-pi5-overlay.dts b/arch/arm/boot/dts/overlays/i2c3-pi5-overlay.dts
-new file mode 100644
-index 000000000000..cbd1f9ff650d
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/i2c3-pi5-overlay.dts
@@ -0,0 +1,22 @@
+ baudrate = <&frag0>, "clock-frequency:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/i2c4-overlay.dts b/arch/arm/boot/dts/overlays/i2c4-overlay.dts
-new file mode 100644
-index 000000000000..495de00f7aa1
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/i2c4-overlay.dts
@@ -0,0 +1,34 @@
+ baudrate = <&frag0>, "clock-frequency:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/i2c5-overlay.dts b/arch/arm/boot/dts/overlays/i2c5-overlay.dts
-new file mode 100644
-index 000000000000..d498ebc72de6
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/i2c5-overlay.dts
@@ -0,0 +1,34 @@
+ baudrate = <&frag0>, "clock-frequency:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/i2c6-overlay.dts b/arch/arm/boot/dts/overlays/i2c6-overlay.dts
-new file mode 100644
-index 000000000000..4d26178a73ca
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/i2c6-overlay.dts
@@ -0,0 +1,34 @@
+ baudrate = <&frag0>, "clock-frequency:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/i2s-dac-overlay.dts b/arch/arm/boot/dts/overlays/i2s-dac-overlay.dts
-new file mode 100644
-index 000000000000..1d8874a18860
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/i2s-dac-overlay.dts
@@ -0,0 +1,34 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/i2s-gpio28-31-overlay.dts b/arch/arm/boot/dts/overlays/i2s-gpio28-31-overlay.dts
-new file mode 100644
-index 000000000000..cf43094c6ff4
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/i2s-gpio28-31-overlay.dts
@@ -0,0 +1,18 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/i2s-master-dac-overlay.dts b/arch/arm/boot/dts/overlays/i2s-master-dac-overlay.dts
-new file mode 100644
-index 000000000000..8b46067858d7
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/i2s-master-dac-overlay.dts
@@ -0,0 +1,50 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/ilitek251x-overlay.dts b/arch/arm/boot/dts/overlays/ilitek251x-overlay.dts
-new file mode 100644
-index 000000000000..226d490ce092
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/ilitek251x-overlay.dts
@@ -0,0 +1,47 @@
+ <&frag1>, "target-path";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/imx219-overlay.dts b/arch/arm/boot/dts/overlays/imx219-overlay.dts
-new file mode 100644
-index 000000000000..c855b14ff220
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/imx219-overlay.dts
@@ -0,0 +1,112 @@
+&cam_endpoint {
+ remote-endpoint = <&csi_ep>;
+};
-diff --git a/arch/arm/boot/dts/overlays/imx219.dtsi b/arch/arm/boot/dts/overlays/imx219.dtsi
-new file mode 100644
-index 000000000000..fa870f77ef07
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/imx219.dtsi
@@ -0,0 +1,27 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/imx258-overlay.dts b/arch/arm/boot/dts/overlays/imx258-overlay.dts
-new file mode 100644
-index 000000000000..bf06d681d5dc
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/imx258-overlay.dts
@@ -0,0 +1,137 @@
+&cam_endpoint {
+ remote-endpoint = <&csi_ep>;
+};
-diff --git a/arch/arm/boot/dts/overlays/imx258.dtsi b/arch/arm/boot/dts/overlays/imx258.dtsi
-new file mode 100644
-index 000000000000..cca81e1aa8b3
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/imx258.dtsi
@@ -0,0 +1,27 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/imx283-overlay.dts b/arch/arm/boot/dts/overlays/imx283-overlay.dts
-new file mode 100644
-index 000000000000..8445cf8f2856
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/imx283-overlay.dts
@@ -0,0 +1,92 @@
+&cam_endpoint {
+ remote-endpoint = <&csi_ep>;
+};
-diff --git a/arch/arm/boot/dts/overlays/imx283.dtsi b/arch/arm/boot/dts/overlays/imx283.dtsi
-new file mode 100644
-index 000000000000..07ba72379f36
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/imx283.dtsi
@@ -0,0 +1,26 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/imx290-overlay.dts b/arch/arm/boot/dts/overlays/imx290-overlay.dts
-new file mode 100644
-index 000000000000..3de3c3910d90
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/imx290-overlay.dts
@@ -0,0 +1,32 @@
+ mono = <0>, "-101+102";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/imx290_327-overlay.dtsi b/arch/arm/boot/dts/overlays/imx290_327-overlay.dtsi
-new file mode 100644
-index 000000000000..55f047e315bc
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/imx290_327-overlay.dtsi
@@ -0,0 +1,116 @@
+&cam_endpoint {
+ remote-endpoint = <&csi_ep>;
+};
-diff --git a/arch/arm/boot/dts/overlays/imx290_327.dtsi b/arch/arm/boot/dts/overlays/imx290_327.dtsi
-new file mode 100644
-index 000000000000..14d1f0b95bb3
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/imx290_327.dtsi
@@ -0,0 +1,24 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/imx296-overlay.dts b/arch/arm/boot/dts/overlays/imx296-overlay.dts
-new file mode 100644
-index 000000000000..b40abb237f6f
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/imx296-overlay.dts
@@ -0,0 +1,121 @@
+ sync-sink = <&imx296>,"trigger-mode:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/imx327-overlay.dts b/arch/arm/boot/dts/overlays/imx327-overlay.dts
-new file mode 100644
-index 000000000000..0776954bdba2
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/imx327-overlay.dts
@@ -0,0 +1,33 @@
+ mono = <0>, "-101+102";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/imx335-overlay.dts b/arch/arm/boot/dts/overlays/imx335-overlay.dts
-new file mode 100644
-index 000000000000..dfe207faecbe
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/imx335-overlay.dts
@@ -0,0 +1,112 @@
+&cam_endpoint {
+ remote-endpoint = <&csi_ep>;
+};
-diff --git a/arch/arm/boot/dts/overlays/imx335.dtsi b/arch/arm/boot/dts/overlays/imx335.dtsi
-new file mode 100644
-index 000000000000..1d4b07da3b14
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/imx335.dtsi
@@ -0,0 +1,26 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/imx378-overlay.dts b/arch/arm/boot/dts/overlays/imx378-overlay.dts
-new file mode 100644
-index 000000000000..4a5072489a34
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/imx378-overlay.dts
@@ -0,0 +1,17 @@
+ sync-source = <&cam_node>,"trigger-mode:0=1";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/imx415-overlay.dts b/arch/arm/boot/dts/overlays/imx415-overlay.dts
-new file mode 100644
-index 000000000000..e44c032dfcec
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/imx415-overlay.dts
@@ -0,0 +1,118 @@
+&cam_endpoint {
+ remote-endpoint = <&csi_ep>;
+};
-diff --git a/arch/arm/boot/dts/overlays/imx415.dtsi b/arch/arm/boot/dts/overlays/imx415.dtsi
-new file mode 100644
-index 000000000000..ba18550ddec7
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/imx415.dtsi
@@ -0,0 +1,27 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/imx462-overlay.dts b/arch/arm/boot/dts/overlays/imx462-overlay.dts
-new file mode 100644
-index 000000000000..6e4c5aaddff5
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/imx462-overlay.dts
@@ -0,0 +1,35 @@
+ mono = <0>, "-101+102";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/imx477-overlay.dts b/arch/arm/boot/dts/overlays/imx477-overlay.dts
-new file mode 100644
-index 000000000000..8645162682f4
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/imx477-overlay.dts
@@ -0,0 +1,17 @@
+ sync-source = <&cam_node>,"trigger-mode:0=1";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/imx477_378-overlay.dtsi b/arch/arm/boot/dts/overlays/imx477_378-overlay.dtsi
-new file mode 100644
-index 000000000000..686289f55029
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/imx477_378-overlay.dtsi
@@ -0,0 +1,99 @@
+&cam_endpoint {
+ remote-endpoint = <&csi_ep>;
+};
-diff --git a/arch/arm/boot/dts/overlays/imx477_378.dtsi b/arch/arm/boot/dts/overlays/imx477_378.dtsi
-new file mode 100644
-index 000000000000..a0c154c2a11f
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/imx477_378.dtsi
@@ -0,0 +1,24 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/imx500-overlay.dts b/arch/arm/boot/dts/overlays/imx500-overlay.dts
-new file mode 100644
-index 000000000000..3ed8c8cd660c
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/imx500-overlay.dts
@@ -0,0 +1,122 @@
+&cam_endpoint {
+ remote-endpoint = <&csi_ep>;
+};
-diff --git a/arch/arm/boot/dts/overlays/imx500-pi5-overlay.dts b/arch/arm/boot/dts/overlays/imx500-pi5-overlay.dts
-new file mode 100644
-index 000000000000..a512d4b76ede
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/imx500-pi5-overlay.dts
@@ -0,0 +1,127 @@
+&cam_endpoint {
+ remote-endpoint = <&csi_ep>;
+};
-diff --git a/arch/arm/boot/dts/overlays/imx500.dtsi b/arch/arm/boot/dts/overlays/imx500.dtsi
-new file mode 100644
-index 000000000000..a931aa9941e6
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/imx500.dtsi
@@ -0,0 +1,28 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/imx519-overlay.dts b/arch/arm/boot/dts/overlays/imx519-overlay.dts
-new file mode 100644
-index 000000000000..f1bcd782b99f
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/imx519-overlay.dts
@@ -0,0 +1,99 @@
+&vcm_node {
+ status = "okay";
+};
-diff --git a/arch/arm/boot/dts/overlays/imx519.dtsi b/arch/arm/boot/dts/overlays/imx519.dtsi
-new file mode 100644
-index 000000000000..18cba1781ec4
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/imx519.dtsi
@@ -0,0 +1,34 @@
+ status = "disabled";
+ vdd-supply = <&cam1_reg>;
+};
-diff --git a/arch/arm/boot/dts/overlays/imx708-overlay.dts b/arch/arm/boot/dts/overlays/imx708-overlay.dts
-new file mode 100644
-index 000000000000..3cbec474ce3e
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/imx708-overlay.dts
@@ -0,0 +1,111 @@
+&vcm_node {
+ status = "okay";
+};
-diff --git a/arch/arm/boot/dts/overlays/imx708.dtsi b/arch/arm/boot/dts/overlays/imx708.dtsi
-new file mode 100644
-index 000000000000..1558458d58ec
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/imx708.dtsi
@@ -0,0 +1,35 @@
+ status = "disabled";
+ VDD-supply = <&cam1_reg>;
+};
-diff --git a/arch/arm/boot/dts/overlays/interludeaudio-analog-overlay.dts b/arch/arm/boot/dts/overlays/interludeaudio-analog-overlay.dts
-new file mode 100644
-index 000000000000..e2590135f919
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/interludeaudio-analog-overlay.dts
@@ -0,0 +1,73 @@
+ gpiopin = <&cs4271>,"reset-gpio:4";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/interludeaudio-digital-overlay.dts b/arch/arm/boot/dts/overlays/interludeaudio-digital-overlay.dts
-new file mode 100644
-index 000000000000..24be00860310
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/interludeaudio-digital-overlay.dts
@@ -0,0 +1,49 @@
+ };
+
+};
-diff --git a/arch/arm/boot/dts/overlays/iqaudio-codec-overlay.dts b/arch/arm/boot/dts/overlays/iqaudio-codec-overlay.dts
-new file mode 100644
-index 000000000000..bffff5a4d64c
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/iqaudio-codec-overlay.dts
@@ -0,0 +1,42 @@
+ __overrides__ {
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts b/arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts
-new file mode 100644
-index 000000000000..05d348f5e58a
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/iqaudio-dac-overlay.dts
@@ -0,0 +1,46 @@
+ 24db_digital_gain = <&frag2>,"iqaudio,24db_digital_gain?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts b/arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts
-new file mode 100644
-index 000000000000..3993580f7ac1
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/iqaudio-dacplus-overlay.dts
@@ -0,0 +1,49 @@
+ unmute_amp = <&iqaudio_dac>,"iqaudio-dac,unmute-amp?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/iqaudio-digi-wm8804-audio-overlay.dts b/arch/arm/boot/dts/overlays/iqaudio-digi-wm8804-audio-overlay.dts
-new file mode 100644
-index 000000000000..f24faf11ecfa
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/iqaudio-digi-wm8804-audio-overlay.dts
@@ -0,0 +1,47 @@
+ dai_stream_name = <&wm8804_digi>,"wm8804-digi,dai-stream-name";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/iqs550-overlay.dts b/arch/arm/boot/dts/overlays/iqs550-overlay.dts
-new file mode 100644
-index 000000000000..c3956937055f
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/iqs550-overlay.dts
@@ -0,0 +1,59 @@
+ swapxy = <&iqs550>,"touchscreen-swapped-x-y?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/irs1125-overlay.dts b/arch/arm/boot/dts/overlays/irs1125-overlay.dts
-new file mode 100644
-index 000000000000..07996247a7be
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/irs1125-overlay.dts
@@ -0,0 +1,97 @@
+ <&irs1125>, "clocks:0=",<&cam0_clk>;
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/jedec-spi-nor-overlay.dts b/arch/arm/boot/dts/overlays/jedec-spi-nor-overlay.dts
-new file mode 100644
-index 000000000000..fb6d4bc91bf3
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/jedec-spi-nor-overlay.dts
@@ -0,0 +1,136 @@
+ };
+};
+
-diff --git a/arch/arm/boot/dts/overlays/justboom-both-overlay.dts b/arch/arm/boot/dts/overlays/justboom-both-overlay.dts
-new file mode 100644
-index 000000000000..9185d668d1d5
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/justboom-both-overlay.dts
@@ -0,0 +1,65 @@
+ 24db_digital_gain = <&frag3>,"justboom,24db_digital_gain?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/justboom-dac-overlay.dts b/arch/arm/boot/dts/overlays/justboom-dac-overlay.dts
-new file mode 100644
-index 000000000000..901a6aaba4bc
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/justboom-dac-overlay.dts
@@ -0,0 +1,46 @@
+ 24db_digital_gain = <&frag2>,"justboom,24db_digital_gain?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/justboom-digi-overlay.dts b/arch/arm/boot/dts/overlays/justboom-digi-overlay.dts
-new file mode 100644
-index 000000000000..c4c968200a4c
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/justboom-digi-overlay.dts
@@ -0,0 +1,41 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/ltc294x-overlay.dts b/arch/arm/boot/dts/overlays/ltc294x-overlay.dts
-new file mode 100644
-index 000000000000..6d971f3649ca
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/ltc294x-overlay.dts
@@ -0,0 +1,86 @@
+ <<c2944>, "lltc,prescaler-exponent:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/max98357a-overlay.dts b/arch/arm/boot/dts/overlays/max98357a-overlay.dts
-new file mode 100644
-index 000000000000..263d071fe977
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/max98357a-overlay.dts
@@ -0,0 +1,84 @@
+ sdmode-pin = <&max98357a_dac>,"sdmode-gpios:4";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/maxtherm-overlay.dts b/arch/arm/boot/dts/overlays/maxtherm-overlay.dts
-new file mode 100644
-index 000000000000..9964e246c14f
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/maxtherm-overlay.dts
@@ -0,0 +1,186 @@
+ type_t = <&max>,"thermocouple-type:0=",<THERMOCOUPLE_TYPE_T>;
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/mbed-dac-overlay.dts b/arch/arm/boot/dts/overlays/mbed-dac-overlay.dts
-new file mode 100644
-index 000000000000..e3f56608c643
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/mbed-dac-overlay.dts
@@ -0,0 +1,64 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/mcp23017-overlay.dts b/arch/arm/boot/dts/overlays/mcp23017-overlay.dts
-new file mode 100644
-index 000000000000..e23780b985a3
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/mcp23017-overlay.dts
@@ -0,0 +1,65 @@
+ noints = <0>,"!1!3";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/mcp23s17-overlay.dts b/arch/arm/boot/dts/overlays/mcp23s17-overlay.dts
-new file mode 100644
-index 000000000000..d10e3ef5d446
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/mcp23s17-overlay.dts
@@ -0,0 +1,764 @@
+ };
+};
+
-diff --git a/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts b/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts
-new file mode 100755
-index 000000000000..46f143d809cc
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/mcp2515-can0-overlay.dts
@@ -0,0 +1,73 @@
+ interrupt = <&can0_pins>,"brcm,pins:0",<&can0>,"interrupts:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts b/arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts
-new file mode 100644
-index 000000000000..0a8dd576818e
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/mcp2515-can1-overlay.dts
@@ -0,0 +1,73 @@
+ interrupt = <&can1_pins>,"brcm,pins:0",<&can1>,"interrupts:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/mcp2515-overlay.dts b/arch/arm/boot/dts/overlays/mcp2515-overlay.dts
-new file mode 100644
-index 000000000000..cda1fb0b1199
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/mcp2515-overlay.dts
@@ -0,0 +1,156 @@
+ <&mcp2515>, "interrupts:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/mcp251xfd-overlay.dts b/arch/arm/boot/dts/overlays/mcp251xfd-overlay.dts
-new file mode 100644
-index 000000000000..65c861bbd340
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/mcp251xfd-overlay.dts
@@ -0,0 +1,226 @@
+ xceiver_active_high = <®_mcp251xfd_xceiver>, "enable-active-high?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/mcp3008-overlay.dts b/arch/arm/boot/dts/overlays/mcp3008-overlay.dts
-new file mode 100755
-index 000000000000..957fdb9310af
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/mcp3008-overlay.dts
@@ -0,0 +1,205 @@
+ spi2-2-speed = <&mcp3008_22>, "spi-max-frequency:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/mcp3202-overlay.dts b/arch/arm/boot/dts/overlays/mcp3202-overlay.dts
-new file mode 100755
-index 000000000000..8e4e9f60f285
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/mcp3202-overlay.dts
@@ -0,0 +1,205 @@
+ spi2-2-speed = <&mcp3202_22>, "spi-max-frequency:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/mcp342x-overlay.dts b/arch/arm/boot/dts/overlays/mcp342x-overlay.dts
-new file mode 100644
-index 000000000000..714eca5a4b5e
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/mcp342x-overlay.dts
@@ -0,0 +1,164 @@
+ };
+};
+
-diff --git a/arch/arm/boot/dts/overlays/media-center-overlay.dts b/arch/arm/boot/dts/overlays/media-center-overlay.dts
-new file mode 100644
-index 000000000000..4bc2eaa1f215
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/media-center-overlay.dts
@@ -0,0 +1,86 @@
+ <&rpi_display_pins>,"brcm,pins:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/merus-amp-overlay.dts b/arch/arm/boot/dts/overlays/merus-amp-overlay.dts
-new file mode 100644
-index 000000000000..96159a48d33f
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/merus-amp-overlay.dts
@@ -0,0 +1,59 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/midi-uart0-overlay.dts b/arch/arm/boot/dts/overlays/midi-uart0-overlay.dts
-new file mode 100644
-index 000000000000..f7e44d29e101
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/midi-uart0-overlay.dts
@@ -0,0 +1,36 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/midi-uart0-pi5-overlay.dts b/arch/arm/boot/dts/overlays/midi-uart0-pi5-overlay.dts
-new file mode 100644
-index 000000000000..4efa46853bbb
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/midi-uart0-pi5-overlay.dts
@@ -0,0 +1,37 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/midi-uart1-overlay.dts b/arch/arm/boot/dts/overlays/midi-uart1-overlay.dts
-new file mode 100644
-index 000000000000..e0bc410acbff
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/midi-uart1-overlay.dts
@@ -0,0 +1,43 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/midi-uart1-pi5-overlay.dts b/arch/arm/boot/dts/overlays/midi-uart1-pi5-overlay.dts
-new file mode 100644
-index 000000000000..40948fdb82d6
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/midi-uart1-pi5-overlay.dts
@@ -0,0 +1,37 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/midi-uart2-overlay.dts b/arch/arm/boot/dts/overlays/midi-uart2-overlay.dts
-new file mode 100644
-index 000000000000..5c6985f41ea2
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/midi-uart2-overlay.dts
@@ -0,0 +1,37 @@
+ };
+};
+
-diff --git a/arch/arm/boot/dts/overlays/midi-uart2-pi5-overlay.dts b/arch/arm/boot/dts/overlays/midi-uart2-pi5-overlay.dts
-new file mode 100644
-index 000000000000..ef80ce214015
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/midi-uart2-pi5-overlay.dts
@@ -0,0 +1,37 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/midi-uart3-overlay.dts b/arch/arm/boot/dts/overlays/midi-uart3-overlay.dts
-new file mode 100644
-index 000000000000..052027db0564
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/midi-uart3-overlay.dts
@@ -0,0 +1,38 @@
+};
+
+
-diff --git a/arch/arm/boot/dts/overlays/midi-uart3-pi5-overlay.dts b/arch/arm/boot/dts/overlays/midi-uart3-pi5-overlay.dts
-new file mode 100644
-index 000000000000..ac59efe68bf9
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/midi-uart3-pi5-overlay.dts
@@ -0,0 +1,37 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/midi-uart4-overlay.dts b/arch/arm/boot/dts/overlays/midi-uart4-overlay.dts
-new file mode 100644
-index 000000000000..5f09a7ccd675
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/midi-uart4-overlay.dts
@@ -0,0 +1,38 @@
+};
+
+
-diff --git a/arch/arm/boot/dts/overlays/midi-uart4-pi5-overlay.dts b/arch/arm/boot/dts/overlays/midi-uart4-pi5-overlay.dts
-new file mode 100644
-index 000000000000..959e114d0f43
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/midi-uart4-pi5-overlay.dts
@@ -0,0 +1,37 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/midi-uart5-overlay.dts b/arch/arm/boot/dts/overlays/midi-uart5-overlay.dts
-new file mode 100644
-index 000000000000..74551ec2a672
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/midi-uart5-overlay.dts
@@ -0,0 +1,38 @@
+};
+
+
-diff --git a/arch/arm/boot/dts/overlays/minipitft13-overlay.dts b/arch/arm/boot/dts/overlays/minipitft13-overlay.dts
-new file mode 100644
-index 000000000000..5e0941e8ba54
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/minipitft13-overlay.dts
@@ -0,0 +1,70 @@
+ debug = <&pitft>,"debug:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/miniuart-bt-overlay.dts b/arch/arm/boot/dts/overlays/miniuart-bt-overlay.dts
-new file mode 100644
-index 000000000000..757e5cd3c4e8
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/miniuart-bt-overlay.dts
@@ -0,0 +1,83 @@
+ krnbt = <&minibt_frag>,"status";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/mipi-dbi-spi-overlay.dts b/arch/arm/boot/dts/overlays/mipi-dbi-spi-overlay.dts
-new file mode 100644
-index 000000000000..63fb3a5f2388
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/mipi-dbi-spi-overlay.dts
@@ -0,0 +1,175 @@
+ backlight-def-brightness = <&backlight_pwm>, "default-brightness-level:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/mira220-overlay.dts b/arch/arm/boot/dts/overlays/mira220-overlay.dts
-new file mode 100644
-index 000000000000..c969e55f4ba9
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/mira220-overlay.dts
@@ -0,0 +1,87 @@
+&cam_endpoint {
+ remote-endpoint = <&csi_ep>;
+};
-diff --git a/arch/arm/boot/dts/overlays/mira220.dtsi b/arch/arm/boot/dts/overlays/mira220.dtsi
-new file mode 100644
-index 000000000000..4e171657a3a6
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/mira220.dtsi
@@ -0,0 +1,27 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/mlx90640-overlay.dts b/arch/arm/boot/dts/overlays/mlx90640-overlay.dts
-new file mode 100644
-index 000000000000..a2655ed82585
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/mlx90640-overlay.dts
@@ -0,0 +1,22 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/mmc-overlay.dts b/arch/arm/boot/dts/overlays/mmc-overlay.dts
-new file mode 100644
-index 000000000000..c1a2f691aa1e
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/mmc-overlay.dts
@@ -0,0 +1,46 @@
+ overclock_50 = <&frag0>,"brcm,overclock-50:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/mz61581-overlay.dts b/arch/arm/boot/dts/overlays/mz61581-overlay.dts
-new file mode 100644
-index 000000000000..101ad21d8093
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/mz61581-overlay.dts
@@ -0,0 +1,117 @@
+ xohms = <&mz61581_ts>,"ti,x-plate-ohms;0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/ov2311-overlay.dts b/arch/arm/boot/dts/overlays/ov2311-overlay.dts
-new file mode 100644
-index 000000000000..4dad303c1768
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/ov2311-overlay.dts
@@ -0,0 +1,83 @@
+&cam_endpoint {
+ remote-endpoint = <&csi_ep>;
+};
-diff --git a/arch/arm/boot/dts/overlays/ov2311.dtsi b/arch/arm/boot/dts/overlays/ov2311.dtsi
-new file mode 100644
-index 000000000000..a1714d6941c3
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/ov2311.dtsi
@@ -0,0 +1,26 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/ov5647-overlay.dts b/arch/arm/boot/dts/overlays/ov5647-overlay.dts
-new file mode 100644
-index 000000000000..e2d40dac80c9
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/ov5647-overlay.dts
@@ -0,0 +1,100 @@
+&cam_endpoint {
+ remote-endpoint = <&csi_ep>;
+};
-diff --git a/arch/arm/boot/dts/overlays/ov5647.dtsi b/arch/arm/boot/dts/overlays/ov5647.dtsi
-new file mode 100644
-index 000000000000..6455a191a394
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/ov5647.dtsi
@@ -0,0 +1,25 @@
+ };
+};
+
-diff --git a/arch/arm/boot/dts/overlays/ov64a40-overlay.dts b/arch/arm/boot/dts/overlays/ov64a40-overlay.dts
-new file mode 100644
-index 000000000000..a765483aaaca
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/ov64a40-overlay.dts
@@ -0,0 +1,97 @@
+&vcm_node {
+ status = "okay";
+};
-diff --git a/arch/arm/boot/dts/overlays/ov64a40.dtsi b/arch/arm/boot/dts/overlays/ov64a40.dtsi
-new file mode 100644
-index 000000000000..471b383fa151
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/ov64a40.dtsi
@@ -0,0 +1,34 @@
+ status = "disabled";
+ vdd-supply = <&cam1_reg>;
+};
-diff --git a/arch/arm/boot/dts/overlays/ov7251-overlay.dts b/arch/arm/boot/dts/overlays/ov7251-overlay.dts
-new file mode 100644
-index 000000000000..e12953809690
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/ov7251-overlay.dts
@@ -0,0 +1,83 @@
+&cam_endpoint {
+ remote-endpoint = <&csi_ep>;
+};
-diff --git a/arch/arm/boot/dts/overlays/ov7251.dtsi b/arch/arm/boot/dts/overlays/ov7251.dtsi
-new file mode 100644
-index 000000000000..561fed1db837
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/ov7251.dtsi
@@ -0,0 +1,28 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/ov9281-overlay.dts b/arch/arm/boot/dts/overlays/ov9281-overlay.dts
-new file mode 100644
-index 000000000000..d132c6b83611
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/ov9281-overlay.dts
@@ -0,0 +1,109 @@
+&cam_endpoint {
+ remote-endpoint = <&csi_ep>;
+};
-diff --git a/arch/arm/boot/dts/overlays/ov9281.dtsi b/arch/arm/boot/dts/overlays/ov9281.dtsi
-new file mode 100644
-index 000000000000..80f9da98ee8a
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/ov9281.dtsi
@@ -0,0 +1,27 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/overlay_map.dts b/arch/arm/boot/dts/overlays/overlay_map.dts
-new file mode 100644
-index 000000000000..6d0e12773ca9
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/overlay_map.dts
@@ -0,0 +1,557 @@
+ bcm2711;
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/papirus-overlay.dts b/arch/arm/boot/dts/overlays/papirus-overlay.dts
-new file mode 100644
-index 000000000000..67052b53a59c
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/papirus-overlay.dts
@@ -0,0 +1,84 @@
+ speed = <&repaper>, "spi-max-frequency:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/pca953x-overlay.dts b/arch/arm/boot/dts/overlays/pca953x-overlay.dts
-new file mode 100644
-index 000000000000..50ff90d7c072
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pca953x-overlay.dts
@@ -0,0 +1,59 @@
+ xra1202 = <&pca>,"compatible=exar,xra1202";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/pcf857x-overlay.dts b/arch/arm/boot/dts/overlays/pcf857x-overlay.dts
-new file mode 100644
-index 000000000000..6b81d32c3818
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pcf857x-overlay.dts
@@ -0,0 +1,34 @@
+ addr = <&pcf857x>,"reg:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/pcie-32bit-dma-overlay.dts b/arch/arm/boot/dts/overlays/pcie-32bit-dma-overlay.dts
-new file mode 100644
-index 000000000000..955703563df7
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pcie-32bit-dma-overlay.dts
@@ -0,0 +1,38 @@
+ };
+
+};
-diff --git a/arch/arm/boot/dts/overlays/pcie-32bit-dma-pi5-overlay.dts b/arch/arm/boot/dts/overlays/pcie-32bit-dma-pi5-overlay.dts
-new file mode 100644
-index 000000000000..b8ce3bc53b80
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pcie-32bit-dma-pi5-overlay.dts
@@ -0,0 +1,27 @@
+ };
+
+};
-diff --git a/arch/arm/boot/dts/overlays/pciex1-compat-pi5-overlay.dts b/arch/arm/boot/dts/overlays/pciex1-compat-pi5-overlay.dts
-new file mode 100644
-index 000000000000..1f5adfc4add1
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pciex1-compat-pi5-overlay.dts
@@ -0,0 +1,60 @@
+ mmio-hi = <0>, "+3";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/pibell-overlay.dts b/arch/arm/boot/dts/overlays/pibell-overlay.dts
-new file mode 100644
-index 000000000000..99d4b6d97969
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pibell-overlay.dts
@@ -0,0 +1,81 @@
+ alsaname = <&snd>, "simple-audio-card,name";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/pifacedigital-overlay.dts b/arch/arm/boot/dts/overlays/pifacedigital-overlay.dts
-new file mode 100644
-index 000000000000..532a858683d6
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pifacedigital-overlay.dts
@@ -0,0 +1,144 @@
+ spi-present-mask = <&pfdigital>, "microchip,spi-present-mask:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/pifi-40-overlay.dts b/arch/arm/boot/dts/overlays/pifi-40-overlay.dts
-new file mode 100644
-index 000000000000..d9ef4ea4097e
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pifi-40-overlay.dts
@@ -0,0 +1,50 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/pifi-dac-hd-overlay.dts b/arch/arm/boot/dts/overlays/pifi-dac-hd-overlay.dts
-new file mode 100644
-index 000000000000..236098365dc2
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pifi-dac-hd-overlay.dts
@@ -0,0 +1,49 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/pifi-dac-zero-overlay.dts b/arch/arm/boot/dts/overlays/pifi-dac-zero-overlay.dts
-new file mode 100644
-index 000000000000..dd272388779e
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pifi-dac-zero-overlay.dts
@@ -0,0 +1,49 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/pifi-mini-210-overlay.dts b/arch/arm/boot/dts/overlays/pifi-mini-210-overlay.dts
-new file mode 100644
-index 000000000000..a7b857144a48
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pifi-mini-210-overlay.dts
@@ -0,0 +1,42 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/piglow-overlay.dts b/arch/arm/boot/dts/overlays/piglow-overlay.dts
-new file mode 100644
-index 000000000000..075bceef158c
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/piglow-overlay.dts
@@ -0,0 +1,97 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/pimidi-overlay.dts b/arch/arm/boot/dts/overlays/pimidi-overlay.dts
-new file mode 100644
-index 000000000000..183738474afb
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pimidi-overlay.dts
@@ -0,0 +1,53 @@
+ <&pimidi_ctrl>,"interrupts:0{0=23,1=5,2=6,3=27}";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/pineboards-hat-ai-overlay.dts b/arch/arm/boot/dts/overlays/pineboards-hat-ai-overlay.dts
-new file mode 100644
-index 000000000000..8160272f4705
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pineboards-hat-ai-overlay.dts
@@ -0,0 +1,18 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/pineboards-hatdrive-poe-plus-overlay.dts b/arch/arm/boot/dts/overlays/pineboards-hatdrive-poe-plus-overlay.dts
-new file mode 100644
-index 000000000000..77b8e0d3be31
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pineboards-hatdrive-poe-plus-overlay.dts
@@ -0,0 +1,19 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/piscreen-overlay.dts b/arch/arm/boot/dts/overlays/piscreen-overlay.dts
-new file mode 100644
-index 000000000000..24302314323b
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/piscreen-overlay.dts
@@ -0,0 +1,110 @@
+ swapxy = <&piscreen_ts>,"touchscreen-swapped-x-y!";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/piscreen2r-overlay.dts b/arch/arm/boot/dts/overlays/piscreen2r-overlay.dts
-new file mode 100644
-index 000000000000..4468f4a54bf7
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/piscreen2r-overlay.dts
@@ -0,0 +1,106 @@
+ };
+};
+
-diff --git a/arch/arm/boot/dts/overlays/pisound-micro-overlay.dts b/arch/arm/boot/dts/overlays/pisound-micro-overlay.dts
-new file mode 100644
-index 000000000000..84562df6ca2b
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pisound-micro-overlay.dts
@@ -0,0 +1,133 @@
+};
+
+/* vim: set ts=8 sw=8 noexpandtab: */
-diff --git a/arch/arm/boot/dts/overlays/pisound-overlay.dts b/arch/arm/boot/dts/overlays/pisound-overlay.dts
-new file mode 100644
-index 000000000000..226bcbdf8a09
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pisound-overlay.dts
@@ -0,0 +1,118 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/pisound-pi5-overlay.dts b/arch/arm/boot/dts/overlays/pisound-pi5-overlay.dts
-new file mode 100644
-index 000000000000..0b07a6d03694
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pisound-pi5-overlay.dts
@@ -0,0 +1,28 @@
+/ {
+ compatible = "brcm,bcm2712";
+};
-diff --git a/arch/arm/boot/dts/overlays/pitft22-overlay.dts b/arch/arm/boot/dts/overlays/pitft22-overlay.dts
-new file mode 100644
-index 000000000000..5759d48aed57
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pitft22-overlay.dts
@@ -0,0 +1,71 @@
+ drm = <&pitft>,"compatible=adafruit,yx240qv29";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/pitft28-capacitive-overlay.dts b/arch/arm/boot/dts/overlays/pitft28-capacitive-overlay.dts
-new file mode 100644
-index 000000000000..de98ee7b4496
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pitft28-capacitive-overlay.dts
@@ -0,0 +1,93 @@
+ touch-swapxy = <&ft6236>,"touchscreen-swapped-x-y?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts b/arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts
-new file mode 100644
-index 000000000000..bc2597179b9c
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pitft28-resistive-overlay.dts
@@ -0,0 +1,126 @@
+ touch-swapxy = <&stmpe_touchscreen>,"touchscreen-swapped-x-y?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/pitft35-resistive-overlay.dts b/arch/arm/boot/dts/overlays/pitft35-resistive-overlay.dts
-new file mode 100644
-index 000000000000..c3e81ef6003a
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pitft35-resistive-overlay.dts
@@ -0,0 +1,127 @@
+ touch-swapxy = <&stmpe_touchscreen>,"touchscreen-swapped-x-y?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/pivision-overlay.dts b/arch/arm/boot/dts/overlays/pivision-overlay.dts
-new file mode 100644
-index 000000000000..496c726e0140
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pivision-overlay.dts
@@ -0,0 +1,155 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts b/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts
-new file mode 100644
-index 000000000000..a4f6b868aad8
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pps-gpio-overlay.dts
@@ -0,0 +1,39 @@
+ pull = <&pps_pins>,"brcm,pull:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/proto-codec-overlay.dts b/arch/arm/boot/dts/overlays/proto-codec-overlay.dts
-new file mode 100644
-index 000000000000..92f6ed158923
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/proto-codec-overlay.dts
@@ -0,0 +1,39 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts b/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts
-new file mode 100644
-index 000000000000..823c8b4126d1
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pwm-2chan-overlay.dts
@@ -0,0 +1,48 @@
+ clock = <&frag1>,"assigned-clock-rates:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/pwm-gpio-fan-overlay.dts b/arch/arm/boot/dts/overlays/pwm-gpio-fan-overlay.dts
-new file mode 100644
-index 000000000000..dc5e586a3251
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pwm-gpio-fan-overlay.dts
@@ -0,0 +1,170 @@
+ };
+
+};
-diff --git a/arch/arm/boot/dts/overlays/pwm-gpio-overlay.dts b/arch/arm/boot/dts/overlays/pwm-gpio-overlay.dts
-new file mode 100644
-index 000000000000..f5a1fb38e257
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pwm-gpio-overlay.dts
@@ -0,0 +1,38 @@
+ <&pwm_gpio_pins>,"reg:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/pwm-ir-tx-overlay.dts b/arch/arm/boot/dts/overlays/pwm-ir-tx-overlay.dts
-new file mode 100644
-index 000000000000..33597eb79729
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pwm-ir-tx-overlay.dts
@@ -0,0 +1,40 @@
+ func = <&pwm0_pins>,"brcm,function:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/pwm-overlay.dts b/arch/arm/boot/dts/overlays/pwm-overlay.dts
-new file mode 100644
-index 000000000000..32853492aaea
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pwm-overlay.dts
@@ -0,0 +1,44 @@
+ clock = <&frag1>,"assigned-clock-rates:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/pwm-pio-overlay.dts b/arch/arm/boot/dts/overlays/pwm-pio-overlay.dts
-new file mode 100644
-index 000000000000..3f105a8c21ce
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pwm-pio-overlay.dts
@@ -0,0 +1,39 @@
+ <&pwm_pio_pins>,"reg:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/pwm1-overlay.dts b/arch/arm/boot/dts/overlays/pwm1-overlay.dts
-new file mode 100644
-index 000000000000..3324d4160653
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pwm1-overlay.dts
@@ -0,0 +1,59 @@
+ pull_off = <&pins>, "brcm,pull:0=", <BCM2835_PUD_OFF>;
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/qca7000-overlay.dts b/arch/arm/boot/dts/overlays/qca7000-overlay.dts
-new file mode 100644
-index 000000000000..0184c53801db
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/qca7000-overlay.dts
@@ -0,0 +1,55 @@
+ speed = <ð1>, "spi-max-frequency:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/qca7000-uart0-overlay.dts b/arch/arm/boot/dts/overlays/qca7000-uart0-overlay.dts
-new file mode 100644
-index 000000000000..3e4af02d91e2
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/qca7000-uart0-overlay.dts
@@ -0,0 +1,46 @@
+ baudrate = <ð2>, "current-speed:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/ramoops-overlay.dts b/arch/arm/boot/dts/overlays/ramoops-overlay.dts
-new file mode 100644
-index 000000000000..e5038658138d
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/ramoops-overlay.dts
@@ -0,0 +1,25 @@
+ console-size = <&ramoops>,"console-size:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/ramoops-pi4-overlay.dts b/arch/arm/boot/dts/overlays/ramoops-pi4-overlay.dts
-new file mode 100644
-index 000000000000..1737e37f5724
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/ramoops-pi4-overlay.dts
@@ -0,0 +1,25 @@
+ console-size = <&ramoops>,"console-size:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/rootmaster-overlay.dts b/arch/arm/boot/dts/overlays/rootmaster-overlay.dts
-new file mode 100644
-index 000000000000..f5ebaea2abb5
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/rootmaster-overlay.dts
@@ -0,0 +1,77 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/rotary-encoder-overlay.dts b/arch/arm/boot/dts/overlays/rotary-encoder-overlay.dts
-new file mode 100644
-index 000000000000..ea1d952734e9
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/rotary-encoder-overlay.dts
@@ -0,0 +1,59 @@
+ <&rotary_pins>,"brcm,pins:4";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/rpi-backlight-overlay.dts b/arch/arm/boot/dts/overlays/rpi-backlight-overlay.dts
-new file mode 100644
-index 000000000000..cac5e44c6ec5
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/rpi-backlight-overlay.dts
@@ -0,0 +1,21 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/rpi-codeczero-overlay.dts b/arch/arm/boot/dts/overlays/rpi-codeczero-overlay.dts
-new file mode 100644
-index 000000000000..c3b0564b2fb2
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/rpi-codeczero-overlay.dts
@@ -0,0 +1,9 @@
+ dai_name = "Raspberry Pi Codec Zero";
+ dai_stream_name = "Raspberry Pi Codec Zero HiFi";
+};
-diff --git a/arch/arm/boot/dts/overlays/rpi-dacplus-overlay.dts b/arch/arm/boot/dts/overlays/rpi-dacplus-overlay.dts
-new file mode 100644
-index 000000000000..47557aa17f19
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/rpi-dacplus-overlay.dts
@@ -0,0 +1,17 @@
+ /delete-property/ unmute_amp;
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/rpi-dacpro-overlay.dts b/arch/arm/boot/dts/overlays/rpi-dacpro-overlay.dts
-new file mode 100644
-index 000000000000..412260c64edf
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/rpi-dacpro-overlay.dts
@@ -0,0 +1,17 @@
+ /delete-property/ unmute_amp;
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/rpi-digiampplus-overlay.dts b/arch/arm/boot/dts/overlays/rpi-digiampplus-overlay.dts
-new file mode 100644
-index 000000000000..5e73d6c1bf42
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/rpi-digiampplus-overlay.dts
@@ -0,0 +1,17 @@
+ <&iqaudio_dac>,"iqaudio-dac,auto-mute-amp!";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts b/arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts
-new file mode 100644
-index 000000000000..8483c4f4b2eb
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/rpi-ft5406-overlay.dts
@@ -0,0 +1,25 @@
+ touchscreen-swapped-x-y = <&ts>,"touchscreen-swapped-x-y?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/rpi-fw-uart-overlay.dts b/arch/arm/boot/dts/overlays/rpi-fw-uart-overlay.dts
-new file mode 100644
-index 000000000000..c17556e91105
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/rpi-fw-uart-overlay.dts
@@ -0,0 +1,41 @@
+ <&rpi_fw_uart_pins>, "brcm,pins:4";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/rpi-poe-overlay.dts b/arch/arm/boot/dts/overlays/rpi-poe-overlay.dts
-new file mode 100644
-index 000000000000..6b9ac9bcf6b8
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/rpi-poe-overlay.dts
@@ -0,0 +1,154 @@
+ <&fan>,"pwms:0=",<&poe_mfd_pwm>;
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/rpi-poe-plus-overlay.dts b/arch/arm/boot/dts/overlays/rpi-poe-plus-overlay.dts
-new file mode 100644
-index 000000000000..494af0c2a20a
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/rpi-poe-plus-overlay.dts
@@ -0,0 +1,49 @@
+ <&poe_mfd>,"status=okay",
+ <&fan>,"pwms:0=",<&poe_mfd_pwm>;
+};
-diff --git a/arch/arm/boot/dts/overlays/rpi-power-hat-b-overlay.dts b/arch/arm/boot/dts/overlays/rpi-power-hat-b-overlay.dts
-new file mode 100644
-index 000000000000..2d87f2ab5a2a
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/rpi-power-hat-b-overlay.dts
@@ -0,0 +1,60 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/rpi-power-hat-t-overlay.dts b/arch/arm/boot/dts/overlays/rpi-power-hat-t-overlay.dts
-new file mode 100644
-index 000000000000..f6a2453176b9
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/rpi-power-hat-t-overlay.dts
@@ -0,0 +1,60 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/rpi-rp2040-gpio-bridge.dtsi b/arch/arm/boot/dts/overlays/rpi-rp2040-gpio-bridge.dtsi
-new file mode 100644
-index 000000000000..2b7f670a1f6d
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/rpi-rp2040-gpio-bridge.dtsi
@@ -0,0 +1,21 @@
+ spi-max-frequency = <35000000>;
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/rpi-sense-overlay.dts b/arch/arm/boot/dts/overlays/rpi-sense-overlay.dts
-new file mode 100644
-index 000000000000..7789709b10e9
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/rpi-sense-overlay.dts
@@ -0,0 +1,69 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/rpi-sense-v2-overlay.dts b/arch/arm/boot/dts/overlays/rpi-sense-v2-overlay.dts
-new file mode 100644
-index 000000000000..b24ad86cff02
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/rpi-sense-v2-overlay.dts
@@ -0,0 +1,69 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/rpi-tv-overlay.dts b/arch/arm/boot/dts/overlays/rpi-tv-overlay.dts
-new file mode 100644
-index 000000000000..3c97a545d820
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/rpi-tv-overlay.dts
@@ -0,0 +1,34 @@
+ };
+
+};
-diff --git a/arch/arm/boot/dts/overlays/rra-digidac1-wm8741-audio-overlay.dts b/arch/arm/boot/dts/overlays/rra-digidac1-wm8741-audio-overlay.dts
-new file mode 100644
-index 000000000000..97db53a91fda
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/rra-digidac1-wm8741-audio-overlay.dts
@@ -0,0 +1,49 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/sainsmart18-overlay.dts b/arch/arm/boot/dts/overlays/sainsmart18-overlay.dts
-new file mode 100644
-index 000000000000..c51f1c030a55
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/sainsmart18-overlay.dts
@@ -0,0 +1,52 @@
+ reset_pin = <&ss18>,"reset-gpios:4";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts b/arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts
-new file mode 100644
-index 000000000000..700e8a60f182
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/sc16is750-i2c-overlay.dts
@@ -0,0 +1,58 @@
+ xtal = <&sc16is750_clk>,"clock-frequency:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/sc16is752-i2c-overlay.dts b/arch/arm/boot/dts/overlays/sc16is752-i2c-overlay.dts
-new file mode 100644
-index 000000000000..d481d6aa8231
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/sc16is752-i2c-overlay.dts
@@ -0,0 +1,58 @@
+ xtal = <&sc16is752_clk>,"clock-frequency:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/sc16is75x-spi-overlay.dts b/arch/arm/boot/dts/overlays/sc16is75x-spi-overlay.dts
-new file mode 100644
-index 000000000000..ba5c7b5ffaff
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/sc16is75x-spi-overlay.dts
@@ -0,0 +1,174 @@
+ <&sc16is75x_pins>, "name=sc16is75x_spi6_1_pins";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/sdhost-overlay.dts b/arch/arm/boot/dts/overlays/sdhost-overlay.dts
-new file mode 100644
-index 000000000000..0b72b4eeac88
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/sdhost-overlay.dts
@@ -0,0 +1,38 @@
+ debug = <&frag0>,"brcm,debug?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/sdio-overlay.dts b/arch/arm/boot/dts/overlays/sdio-overlay.dts
-new file mode 100644
-index 000000000000..873e49056379
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/sdio-overlay.dts
@@ -0,0 +1,77 @@
+ gpios_34_39 = <0>,"=5";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/sdio-pi5-overlay.dts b/arch/arm/boot/dts/overlays/sdio-pi5-overlay.dts
-new file mode 100644
-index 000000000000..4e42cb5c856e
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/sdio-pi5-overlay.dts
@@ -0,0 +1,24 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/seeed-can-fd-hat-v1-overlay.dts b/arch/arm/boot/dts/overlays/seeed-can-fd-hat-v1-overlay.dts
-new file mode 100644
-index 000000000000..210d027a073e
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/seeed-can-fd-hat-v1-overlay.dts
@@ -0,0 +1,138 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/seeed-can-fd-hat-v2-overlay.dts b/arch/arm/boot/dts/overlays/seeed-can-fd-hat-v2-overlay.dts
-new file mode 100644
-index 000000000000..fc3c7794c28a
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/seeed-can-fd-hat-v2-overlay.dts
@@ -0,0 +1,112 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/sh1106-spi-overlay.dts b/arch/arm/boot/dts/overlays/sh1106-spi-overlay.dts
-new file mode 100644
-index 000000000000..57a0cc9b1741
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/sh1106-spi-overlay.dts
@@ -0,0 +1,84 @@
+ height = <&sh1106>,"sinowealth,height:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/si446x-spi0-overlay.dts b/arch/arm/boot/dts/overlays/si446x-spi0-overlay.dts
-new file mode 100644
-index 000000000000..90495f0941fb
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/si446x-spi0-overlay.dts
@@ -0,0 +1,53 @@
+ speed = <&uhf0>, "spi-max-frequency:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/smi-dev-overlay.dts b/arch/arm/boot/dts/overlays/smi-dev-overlay.dts
-new file mode 100644
-index 000000000000..bafab6c92506
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/smi-dev-overlay.dts
@@ -0,0 +1,20 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/smi-nand-overlay.dts b/arch/arm/boot/dts/overlays/smi-nand-overlay.dts
-new file mode 100644
-index 000000000000..ae1e50329d66
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/smi-nand-overlay.dts
@@ -0,0 +1,66 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/smi-overlay.dts b/arch/arm/boot/dts/overlays/smi-overlay.dts
-new file mode 100644
-index 000000000000..bb8c7830df23
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/smi-overlay.dts
@@ -0,0 +1,37 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts b/arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts
-new file mode 100644
-index 000000000000..a132b8637c31
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/spi-gpio35-39-overlay.dts
@@ -0,0 +1,31 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/spi-gpio40-45-overlay.dts b/arch/arm/boot/dts/overlays/spi-gpio40-45-overlay.dts
-new file mode 100644
-index 000000000000..9ebcaf1b5ea0
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/spi-gpio40-45-overlay.dts
@@ -0,0 +1,36 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/spi-rtc-overlay.dts b/arch/arm/boot/dts/overlays/spi-rtc-overlay.dts
-new file mode 100644
-index 000000000000..df3286929c2e
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/spi-rtc-overlay.dts
@@ -0,0 +1,75 @@
+ pcf2123 = <0>,"+2";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/spi0-0cs-overlay.dts b/arch/arm/boot/dts/overlays/spi0-0cs-overlay.dts
-new file mode 100644
-index 000000000000..0d2acabf56a4
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/spi0-0cs-overlay.dts
@@ -0,0 +1,39 @@
+ no_miso = <0>,"=3";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/spi0-1cs-inverted-overlay.dts b/arch/arm/boot/dts/overlays/spi0-1cs-inverted-overlay.dts
-new file mode 100644
-index 000000000000..dc1db2184df4
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/spi0-1cs-inverted-overlay.dts
@@ -0,0 +1,59 @@
+ no_miso = <0>,"=3";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/spi0-1cs-overlay.dts b/arch/arm/boot/dts/overlays/spi0-1cs-overlay.dts
-new file mode 100644
-index 000000000000..e6eb66e2076a
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/spi0-1cs-overlay.dts
@@ -0,0 +1,42 @@
+ no_miso = <0>,"=3";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/spi0-2cs-overlay.dts b/arch/arm/boot/dts/overlays/spi0-2cs-overlay.dts
-new file mode 100644
-index 000000000000..df6519537c3a
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/spi0-2cs-overlay.dts
@@ -0,0 +1,37 @@
+ no_miso = <0>,"=2";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/spi1-1cs-overlay.dts b/arch/arm/boot/dts/overlays/spi1-1cs-overlay.dts
-new file mode 100644
-index 000000000000..ea2794bc5fd5
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/spi1-1cs-overlay.dts
@@ -0,0 +1,57 @@
+ cs0_spidev = <&spidev1_0>,"status";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/spi1-2cs-overlay.dts b/arch/arm/boot/dts/overlays/spi1-2cs-overlay.dts
-new file mode 100644
-index 000000000000..dab34ee79ae2
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/spi1-2cs-overlay.dts
@@ -0,0 +1,69 @@
+ cs1_spidev = <&spidev1_1>,"status";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/spi1-3cs-overlay.dts b/arch/arm/boot/dts/overlays/spi1-3cs-overlay.dts
-new file mode 100644
-index 000000000000..bc7e7d04324b
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/spi1-3cs-overlay.dts
@@ -0,0 +1,81 @@
+ cs2_spidev = <&spidev1_2>,"status";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/spi2-1cs-overlay.dts b/arch/arm/boot/dts/overlays/spi2-1cs-overlay.dts
-new file mode 100644
-index 000000000000..2a29750462af
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/spi2-1cs-overlay.dts
@@ -0,0 +1,57 @@
+ cs0_spidev = <&spidev2_0>,"status";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/spi2-1cs-pi5-overlay.dts b/arch/arm/boot/dts/overlays/spi2-1cs-pi5-overlay.dts
-new file mode 100644
-index 000000000000..44382cc5a7c0
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/spi2-1cs-pi5-overlay.dts
@@ -0,0 +1,33 @@
+ cs0_spidev = <&spidev2_0>,"status";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/spi2-2cs-overlay.dts b/arch/arm/boot/dts/overlays/spi2-2cs-overlay.dts
-new file mode 100644
-index 000000000000..642678fc9ddd
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/spi2-2cs-overlay.dts
@@ -0,0 +1,69 @@
+ cs1_spidev = <&spidev2_1>,"status";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/spi2-2cs-pi5-overlay.dts b/arch/arm/boot/dts/overlays/spi2-2cs-pi5-overlay.dts
-new file mode 100644
-index 000000000000..b37a2c21c7b4
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/spi2-2cs-pi5-overlay.dts
@@ -0,0 +1,44 @@
+ cs1_spidev = <&spidev2_1>,"status";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/spi2-3cs-overlay.dts b/arch/arm/boot/dts/overlays/spi2-3cs-overlay.dts
-new file mode 100644
-index 000000000000..28d40c6c3c37
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/spi2-3cs-overlay.dts
@@ -0,0 +1,81 @@
+ cs2_spidev = <&spidev2_2>,"status";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/spi3-1cs-overlay.dts b/arch/arm/boot/dts/overlays/spi3-1cs-overlay.dts
-new file mode 100644
-index 000000000000..7abea6d86fd0
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/spi3-1cs-overlay.dts
@@ -0,0 +1,42 @@
+ cs0_spidev = <&spidev3_0>,"status";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/spi3-1cs-pi5-overlay.dts b/arch/arm/boot/dts/overlays/spi3-1cs-pi5-overlay.dts
-new file mode 100644
-index 000000000000..a94e3a9f35ce
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/spi3-1cs-pi5-overlay.dts
@@ -0,0 +1,33 @@
+ cs0_spidev = <&spidev3_0>,"status";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/spi3-2cs-overlay.dts b/arch/arm/boot/dts/overlays/spi3-2cs-overlay.dts
-new file mode 100644
-index 000000000000..2f474ac769f5
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/spi3-2cs-overlay.dts
@@ -0,0 +1,54 @@
+ cs1_spidev = <&spidev3_1>,"status";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/spi3-2cs-pi5-overlay.dts b/arch/arm/boot/dts/overlays/spi3-2cs-pi5-overlay.dts
-new file mode 100644
-index 000000000000..259548b37d5c
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/spi3-2cs-pi5-overlay.dts
@@ -0,0 +1,44 @@
+ cs1_spidev = <&spidev3_1>,"status";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/spi4-1cs-overlay.dts b/arch/arm/boot/dts/overlays/spi4-1cs-overlay.dts
-new file mode 100644
-index 000000000000..66d89521124a
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/spi4-1cs-overlay.dts
@@ -0,0 +1,42 @@
+ cs0_spidev = <&spidev4_0>,"status";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/spi4-2cs-overlay.dts b/arch/arm/boot/dts/overlays/spi4-2cs-overlay.dts
-new file mode 100644
-index 000000000000..83d8cb8b918c
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/spi4-2cs-overlay.dts
@@ -0,0 +1,54 @@
+ cs1_spidev = <&spidev4_1>,"status";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/spi5-1cs-overlay.dts b/arch/arm/boot/dts/overlays/spi5-1cs-overlay.dts
-new file mode 100644
-index 000000000000..168b4825de34
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/spi5-1cs-overlay.dts
@@ -0,0 +1,42 @@
+ cs0_spidev = <&spidev5_0>,"status";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/spi5-1cs-pi5-overlay.dts b/arch/arm/boot/dts/overlays/spi5-1cs-pi5-overlay.dts
-new file mode 100644
-index 000000000000..bde1837f26c0
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/spi5-1cs-pi5-overlay.dts
@@ -0,0 +1,33 @@
+ cs0_spidev = <&spidev5_0>,"status";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/spi5-2cs-overlay.dts b/arch/arm/boot/dts/overlays/spi5-2cs-overlay.dts
-new file mode 100644
-index 000000000000..c2a239a34b35
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/spi5-2cs-overlay.dts
@@ -0,0 +1,54 @@
+ cs1_spidev = <&spidev5_1>,"status";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/spi5-2cs-pi5-overlay.dts b/arch/arm/boot/dts/overlays/spi5-2cs-pi5-overlay.dts
-new file mode 100644
-index 000000000000..2c9eee2a9db8
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/spi5-2cs-pi5-overlay.dts
@@ -0,0 +1,44 @@
+ cs1_spidev = <&spidev5_1>,"status";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/spi6-1cs-overlay.dts b/arch/arm/boot/dts/overlays/spi6-1cs-overlay.dts
-new file mode 100644
-index 000000000000..a784f8a17d23
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/spi6-1cs-overlay.dts
@@ -0,0 +1,42 @@
+ cs0_spidev = <&spidev6_0>,"status";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/spi6-2cs-overlay.dts b/arch/arm/boot/dts/overlays/spi6-2cs-overlay.dts
-new file mode 100644
-index 000000000000..8ef513814d2b
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/spi6-2cs-overlay.dts
@@ -0,0 +1,54 @@
+ cs1_spidev = <&spidev6_1>,"status";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/ssd1306-overlay.dts b/arch/arm/boot/dts/overlays/ssd1306-overlay.dts
-new file mode 100644
-index 000000000000..bd0abec11c25
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/ssd1306-overlay.dts
@@ -0,0 +1,36 @@
+ inverted = <&ssd1306>,"solomon,com-invdir?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/ssd1306-spi-overlay.dts b/arch/arm/boot/dts/overlays/ssd1306-spi-overlay.dts
-new file mode 100644
-index 000000000000..679749fc3065
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/ssd1306-spi-overlay.dts
@@ -0,0 +1,85 @@
+ inverted = <&ssd1306>,"solomon,com-invdir?";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/ssd1327-spi-overlay.dts b/arch/arm/boot/dts/overlays/ssd1327-spi-overlay.dts
-new file mode 100644
-index 000000000000..c0770738c176
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/ssd1327-spi-overlay.dts
@@ -0,0 +1,70 @@
+ <&ssd1327_pins>,"brcm,pins:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/ssd1331-spi-overlay.dts b/arch/arm/boot/dts/overlays/ssd1331-spi-overlay.dts
-new file mode 100644
-index 000000000000..9fd5ebf2feda
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/ssd1331-spi-overlay.dts
@@ -0,0 +1,83 @@
+ <&ssd1331_pins>,"brcm,pins:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/ssd1351-spi-overlay.dts b/arch/arm/boot/dts/overlays/ssd1351-spi-overlay.dts
-new file mode 100644
-index 000000000000..ffc872c60648
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/ssd1351-spi-overlay.dts
@@ -0,0 +1,83 @@
+ <&ssd1351_pins>,"brcm,pins:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/sunfounder-pipower3-overlay.dts b/arch/arm/boot/dts/overlays/sunfounder-pipower3-overlay.dts
-new file mode 100644
-index 000000000000..071899b86b46
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/sunfounder-pipower3-overlay.dts
@@ -0,0 +1,34 @@
+ poweroff_pin = <&power_ctrl>,"gpios:4";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/sunfounder-pironman5-overlay.dts b/arch/arm/boot/dts/overlays/sunfounder-pironman5-overlay.dts
-new file mode 100644
-index 000000000000..fad68ef1813f
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/sunfounder-pironman5-overlay.dts
@@ -0,0 +1,55 @@
+ <&gpio_ir_pins>,"reg:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/superaudioboard-overlay.dts b/arch/arm/boot/dts/overlays/superaudioboard-overlay.dts
-new file mode 100755
-index 000000000000..1006d5fe9e06
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/superaudioboard-overlay.dts
@@ -0,0 +1,73 @@
+ gpiopin = <&cs4271>,"reset-gpio:4";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/sx150x-overlay.dts b/arch/arm/boot/dts/overlays/sx150x-overlay.dts
-new file mode 100644
-index 000000000000..191ccd5f9eca
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/sx150x-overlay.dts
@@ -0,0 +1,1706 @@
+ };
+};
+
-diff --git a/arch/arm/boot/dts/overlays/tc358743-audio-overlay.dts b/arch/arm/boot/dts/overlays/tc358743-audio-overlay.dts
-new file mode 100644
-index 000000000000..6bb3dceb0df3
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/tc358743-audio-overlay.dts
@@ -0,0 +1,52 @@
+ card-name = <&sound_overlay>,"simple-audio-card,name";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/tc358743-overlay.dts b/arch/arm/boot/dts/overlays/tc358743-overlay.dts
-new file mode 100644
-index 000000000000..8834c7cf0c4f
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/tc358743-overlay.dts
@@ -0,0 +1,28 @@
+ <&legacy_frag>, "target:0=",<&csi0>;
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/tc358743-pi5-overlay.dts b/arch/arm/boot/dts/overlays/tc358743-pi5-overlay.dts
-new file mode 100644
-index 000000000000..8c00138385a3
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/tc358743-pi5-overlay.dts
@@ -0,0 +1,10 @@
+/ {
+ compatible = "brcm,bcm2712";
+};
-diff --git a/arch/arm/boot/dts/overlays/tc358743.dtsi b/arch/arm/boot/dts/overlays/tc358743.dtsi
-new file mode 100644
-index 000000000000..809332e9a072
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/tc358743.dtsi
@@ -0,0 +1,101 @@
+ <&tc358743>, "clocks:0=",<&cam0_clk>;
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/tinylcd35-overlay.dts b/arch/arm/boot/dts/overlays/tinylcd35-overlay.dts
-new file mode 100644
-index 000000000000..043b25887f2d
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/tinylcd35-overlay.dts
@@ -0,0 +1,209 @@
+ keypad = <&keypad>,"status";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/tpm-slb9670-overlay.dts b/arch/arm/boot/dts/overlays/tpm-slb9670-overlay.dts
-new file mode 100644
-index 000000000000..e69188503ca3
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/tpm-slb9670-overlay.dts
@@ -0,0 +1,44 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/tpm-slb9673-overlay.dts b/arch/arm/boot/dts/overlays/tpm-slb9673-overlay.dts
-new file mode 100644
-index 000000000000..ed6de957e96c
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/tpm-slb9673-overlay.dts
@@ -0,0 +1,51 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/uart0-overlay.dts b/arch/arm/boot/dts/overlays/uart0-overlay.dts
-new file mode 100755
-index 000000000000..6bf2e0fd5c61
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/uart0-overlay.dts
@@ -0,0 +1,32 @@
+ pin_func = <&uart0_pins>,"brcm,function:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/uart0-pi5-overlay.dts b/arch/arm/boot/dts/overlays/uart0-pi5-overlay.dts
-new file mode 100755
-index 000000000000..3cc9843b812d
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/uart0-pi5-overlay.dts
@@ -0,0 +1,18 @@
+ ctsrts = <&frag0>,"pinctrl-0:4=",<&uart0_ctsrts_pins>;
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/uart1-overlay.dts b/arch/arm/boot/dts/overlays/uart1-overlay.dts
-new file mode 100644
-index 000000000000..64163bf932b7
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/uart1-overlay.dts
@@ -0,0 +1,38 @@
+ rxd1_pin = <&uart1_pins>,"brcm,pins:4";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/uart1-pi5-overlay.dts b/arch/arm/boot/dts/overlays/uart1-pi5-overlay.dts
-new file mode 100755
-index 000000000000..739f5a941ffa
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/uart1-pi5-overlay.dts
@@ -0,0 +1,18 @@
+ ctsrts = <&frag0>,"pinctrl-0:4=",<&uart1_ctsrts_pins>;
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/uart2-overlay.dts b/arch/arm/boot/dts/overlays/uart2-overlay.dts
-new file mode 100644
-index 000000000000..4efbbed72619
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/uart2-overlay.dts
@@ -0,0 +1,37 @@
+ rs485_rts_off_delay = <&rs485>, "rs485-rts-delay:4";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/uart2-pi5-overlay.dts b/arch/arm/boot/dts/overlays/uart2-pi5-overlay.dts
-new file mode 100755
-index 000000000000..1df956425d3a
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/uart2-pi5-overlay.dts
@@ -0,0 +1,18 @@
+ ctsrts = <&frag0>,"pinctrl-0:4=",<&uart2_ctsrts_pins>;
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/uart3-overlay.dts b/arch/arm/boot/dts/overlays/uart3-overlay.dts
-new file mode 100644
-index 000000000000..a1a5c12f46e2
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/uart3-overlay.dts
@@ -0,0 +1,37 @@
+ rs485_rts_off_delay = <&rs485>, "rs485-rts-delay:4";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/uart3-pi5-overlay.dts b/arch/arm/boot/dts/overlays/uart3-pi5-overlay.dts
-new file mode 100755
-index 000000000000..d8ef51b403dd
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/uart3-pi5-overlay.dts
@@ -0,0 +1,18 @@
+ ctsrts = <&frag0>,"pinctrl-0:4=",<&uart3_ctsrts_pins>;
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/uart4-overlay.dts b/arch/arm/boot/dts/overlays/uart4-overlay.dts
-new file mode 100644
-index 000000000000..782e0928393f
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/uart4-overlay.dts
@@ -0,0 +1,37 @@
+ rs485_rts_off_delay = <&rs485>, "rs485-rts-delay:4";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/uart4-pi5-overlay.dts b/arch/arm/boot/dts/overlays/uart4-pi5-overlay.dts
-new file mode 100755
-index 000000000000..7ce5be8cc95c
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/uart4-pi5-overlay.dts
@@ -0,0 +1,18 @@
+ ctsrts = <&frag0>,"pinctrl-0:4=",<&uart4_ctsrts_pins>;
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/uart5-overlay.dts b/arch/arm/boot/dts/overlays/uart5-overlay.dts
-new file mode 100644
-index 000000000000..228598ebcec3
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/uart5-overlay.dts
@@ -0,0 +1,37 @@
+ rs485_rts_off_delay = <&rs485>, "rs485-rts-delay:4";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/udrc-overlay.dts b/arch/arm/boot/dts/overlays/udrc-overlay.dts
-new file mode 100644
-index 000000000000..24a2432ccd29
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/udrc-overlay.dts
@@ -0,0 +1,124 @@
+ alsaname = <&snd>, "simple-audio-card,name";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/ugreen-dabboard-overlay.dts b/arch/arm/boot/dts/overlays/ugreen-dabboard-overlay.dts
-new file mode 100644
-index 000000000000..234f1f38225b
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/ugreen-dabboard-overlay.dts
@@ -0,0 +1,49 @@
+ card-name = <&sound_overlay>,"simple-audio-card,name";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/upstream-overlay.dts b/arch/arm/boot/dts/overlays/upstream-overlay.dts
-new file mode 100644
-index 000000000000..55a99736a33b
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/upstream-overlay.dts
@@ -0,0 +1,101 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/upstream-pi4-overlay.dts b/arch/arm/boot/dts/overlays/upstream-pi4-overlay.dts
-new file mode 100644
-index 000000000000..1dc60ae6d967
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/upstream-pi4-overlay.dts
@@ -0,0 +1,137 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/vc4-fkms-v3d-overlay.dts b/arch/arm/boot/dts/overlays/vc4-fkms-v3d-overlay.dts
-new file mode 100644
-index 000000000000..847a98f2a10c
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vc4-fkms-v3d-overlay.dts
@@ -0,0 +1,43 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/vc4-fkms-v3d-pi4-overlay.dts b/arch/arm/boot/dts/overlays/vc4-fkms-v3d-pi4-overlay.dts
-new file mode 100644
-index 000000000000..39e78280d475
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vc4-fkms-v3d-pi4-overlay.dts
@@ -0,0 +1,47 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dpi-generic-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dpi-generic-overlay.dts
-new file mode 100644
-index 000000000000..8cf41167d4cc
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vc4-kms-dpi-generic-overlay.dts
@@ -0,0 +1,83 @@
+ rgb-order = <&dpi_node_generic>, "rgb_order";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dpi-hyperpixel.dtsi b/arch/arm/boot/dts/overlays/vc4-kms-dpi-hyperpixel.dtsi
-new file mode 100644
-index 000000000000..585402a3b9b4
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vc4-kms-dpi-hyperpixel.dtsi
@@ -0,0 +1,94 @@
+ rotate = <&panel>, "rotation:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dpi-hyperpixel2r-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dpi-hyperpixel2r-overlay.dts
-new file mode 100644
-index 000000000000..4cd9d6a55c48
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vc4-kms-dpi-hyperpixel2r-overlay.dts
@@ -0,0 +1,114 @@
+ };
+
+};
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dpi-hyperpixel4-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dpi-hyperpixel4-overlay.dts
-new file mode 100644
-index 000000000000..eafc25ad79ff
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vc4-kms-dpi-hyperpixel4-overlay.dts
@@ -0,0 +1,57 @@
+ <&ft6236_5d>,"touchscreen-swapped-x-y!";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dpi-hyperpixel4sq-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dpi-hyperpixel4sq-overlay.dts
-new file mode 100644
-index 000000000000..700046348ecf
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vc4-kms-dpi-hyperpixel4sq-overlay.dts
@@ -0,0 +1,36 @@
+ touchscreen-swapped-x-y = <&polytouch>,"touchscreen-swapped-x-y!";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dpi-panel-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dpi-panel-overlay.dts
-new file mode 100644
-index 000000000000..a0fe8f810e01
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vc4-kms-dpi-panel-overlay.dts
@@ -0,0 +1,73 @@
+ mzp280 = <0>, "+2+93";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dpi.dtsi b/arch/arm/boot/dts/overlays/vc4-kms-dpi.dtsi
-new file mode 100644
-index 000000000000..67c884de2a8d
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vc4-kms-dpi.dtsi
@@ -0,0 +1,111 @@
+ rotate = <&panel>, "rotation:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dsi-7inch-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dsi-7inch-overlay.dts
-new file mode 100644
-index 000000000000..8d58d5e6067f
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vc4-kms-dsi-7inch-overlay.dts
@@ -0,0 +1,121 @@
+ disable_touch = <&ft5406>, "status=disabled";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dsi-generic-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dsi-generic-overlay.dts
-new file mode 100644
-index 000000000000..cf4ca5b6c75f
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vc4-kms-dsi-generic-overlay.dts
@@ -0,0 +1,106 @@
+ };
+
+};
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dsi-ili9881-5inch-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dsi-ili9881-5inch-overlay.dts
-new file mode 100644
-index 000000000000..830e28703e57
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vc4-kms-dsi-ili9881-5inch-overlay.dts
@@ -0,0 +1,14 @@
+&dsi_panel {
+ compatible = "raspberrypi,dsi-5inch";
+};
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dsi-ili9881-7inch-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dsi-ili9881-7inch-overlay.dts
-new file mode 100644
-index 000000000000..8a1ac11f5f92
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vc4-kms-dsi-ili9881-7inch-overlay.dts
@@ -0,0 +1,133 @@
+ rotation = <&dsi_panel>, "rotation:0";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dsi-lt070me05000-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dsi-lt070me05000-overlay.dts
-new file mode 100644
-index 000000000000..9cc6f1ae628f
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vc4-kms-dsi-lt070me05000-overlay.dts
@@ -0,0 +1,71 @@
+ <<070me05000>,"dcdc-en-gpios:4";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dsi-lt070me05000-v2-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dsi-lt070me05000-v2-overlay.dts
-new file mode 100644
-index 000000000000..5dcd0f2243e2
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vc4-kms-dsi-lt070me05000-v2-overlay.dts
@@ -0,0 +1,64 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dsi-waveshare-800x480-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dsi-waveshare-800x480-overlay.dts
-new file mode 100644
-index 000000000000..7a7058d14d6c
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vc4-kms-dsi-waveshare-800x480-overlay.dts
@@ -0,0 +1,116 @@
+ disable_touch = <&ft5406>, "status=disabled";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dsi-waveshare-panel-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dsi-waveshare-panel-overlay.dts
-new file mode 100644
-index 000000000000..c9faf02c907f
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vc4-kms-dsi-waveshare-panel-overlay.dts
@@ -0,0 +1,146 @@
+ <&i2c_frag>, "target:0=",<&i2c_csi_dsi0>;
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dsi-waveshare-panel-v2-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dsi-waveshare-panel-v2-overlay.dts
-new file mode 100644
-index 000000000000..ddb085d03cfa
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vc4-kms-dsi-waveshare-panel-v2-overlay.dts
@@ -0,0 +1,111 @@
+ <&i2c_frag>, "target:0=",<&i2c_csi_dsi0>;
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-kippah-7inch-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-kippah-7inch-overlay.dts
-new file mode 100644
-index 000000000000..4c1aa1c70158
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vc4-kms-kippah-7inch-overlay.dts
@@ -0,0 +1,26 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts
-new file mode 100644
-index 000000000000..f0b531b18dfc
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts
@@ -0,0 +1,121 @@
+ nohdmi = <0>, "-1-7";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi4-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi4-overlay.dts
-new file mode 100644
-index 000000000000..02bbad743d77
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi4-overlay.dts
@@ -0,0 +1,197 @@
+ nohdmi = <0>, "-1-2-3-4-8-10";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi5-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi5-overlay.dts
-new file mode 100644
-index 000000000000..d469e717b570
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi5-overlay.dts
@@ -0,0 +1,142 @@
+ nohdmi = <0>, "-3-4-5-6-10-11";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-vga666-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-vga666-overlay.dts
-new file mode 100644
-index 000000000000..c3a682d5b7d9
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vc4-kms-vga666-overlay.dts
@@ -0,0 +1,107 @@
+ ddc = <0>,"=2", <0>,"=3", <0>,"=4", <0>,"=5";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/vec-gpio-pi5-overlay.dts b/arch/arm/boot/dts/overlays/vec-gpio-pi5-overlay.dts
-new file mode 100644
-index 000000000000..6a99f0d0909b
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vec-gpio-pi5-overlay.dts
@@ -0,0 +1,48 @@
+ clk = <&rp1vec_overlay>, "pinctrl-0:8=", <&rp1vec_clkpin>;
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/vga666-overlay.dts b/arch/arm/boot/dts/overlays/vga666-overlay.dts
-new file mode 100644
-index 000000000000..a4968d180a5d
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vga666-overlay.dts
@@ -0,0 +1,30 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/vl805-overlay.dts b/arch/arm/boot/dts/overlays/vl805-overlay.dts
-new file mode 100644
-index 000000000000..81adf34b29f2
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vl805-overlay.dts
@@ -0,0 +1,18 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/w1-gpio-overlay.dts b/arch/arm/boot/dts/overlays/w1-gpio-overlay.dts
-new file mode 100644
-index 000000000000..f44e325bc1f2
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/w1-gpio-overlay.dts
@@ -0,0 +1,40 @@
+ pullup; // Silently ignore unneeded parameter
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/w1-gpio-pi5-overlay.dts b/arch/arm/boot/dts/overlays/w1-gpio-pi5-overlay.dts
-new file mode 100644
-index 000000000000..36f60548a7c8
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/w1-gpio-pi5-overlay.dts
@@ -0,0 +1,12 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dts b/arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dts
-new file mode 100644
-index 000000000000..953c6a1aeab9
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/w1-gpio-pullup-overlay.dts
@@ -0,0 +1,42 @@
+ pullup; // Silently ignore unneeded parameter
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/w1-gpio-pullup-pi5-overlay.dts b/arch/arm/boot/dts/overlays/w1-gpio-pullup-pi5-overlay.dts
-new file mode 100644
-index 000000000000..bca44070cbac
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/w1-gpio-pullup-pi5-overlay.dts
@@ -0,0 +1,12 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/w5500-overlay.dts b/arch/arm/boot/dts/overlays/w5500-overlay.dts
-new file mode 100644
-index 000000000000..4d3e66296753
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/w5500-overlay.dts
@@ -0,0 +1,63 @@
+ <0>, "!0=1";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/watterott-display-overlay.dts b/arch/arm/boot/dts/overlays/watterott-display-overlay.dts
-new file mode 100644
-index 000000000000..4388706d2c38
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/watterott-display-overlay.dts
@@ -0,0 +1,150 @@
+ <&rpi_display_pins>, "brcm,function:0=2"; /* Alt5 */
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/waveshare-can-fd-hat-mode-a-overlay.dts b/arch/arm/boot/dts/overlays/waveshare-can-fd-hat-mode-a-overlay.dts
-new file mode 100644
-index 000000000000..59388cc3b0b9
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/waveshare-can-fd-hat-mode-a-overlay.dts
@@ -0,0 +1,140 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/waveshare-can-fd-hat-mode-b-overlay.dts b/arch/arm/boot/dts/overlays/waveshare-can-fd-hat-mode-b-overlay.dts
-new file mode 100644
-index 000000000000..b2504922c8de
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/waveshare-can-fd-hat-mode-b-overlay.dts
@@ -0,0 +1,103 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/wifimac-overlay.dts b/arch/arm/boot/dts/overlays/wifimac-overlay.dts
-new file mode 100644
-index 000000000000..505b9e3e4e3f
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/wifimac-overlay.dts
@@ -0,0 +1,21 @@
+ wifi0;
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/wittypi-overlay.dts b/arch/arm/boot/dts/overlays/wittypi-overlay.dts
-new file mode 100644
-index 000000000000..71ce806186de
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/wittypi-overlay.dts
@@ -0,0 +1,44 @@
+ };
+
+};
-diff --git a/arch/arm/boot/dts/overlays/wm8960-soundcard-overlay.dts b/arch/arm/boot/dts/overlays/wm8960-soundcard-overlay.dts
-new file mode 100644
-index 000000000000..d896c59f469b
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/wm8960-soundcard-overlay.dts
@@ -0,0 +1,82 @@
+ compatible = <&wm8960>,"compatible";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/ws2812-pio-overlay.dts b/arch/arm/boot/dts/overlays/ws2812-pio-overlay.dts
-new file mode 100644
-index 000000000000..4550e16d44e1
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/ws2812-pio-overlay.dts
@@ -0,0 +1,46 @@
+ rgbw = <&ws2812_pio>, "rpi,rgbw?";
+ };
+};
-diff --git a/arch/arm64/boot/dts/Makefile b/arch/arm64/boot/dts/Makefile
-index b0844404eda1..ef043d0a6746 100644
--- a/arch/arm64/boot/dts/Makefile
+++ b/arch/arm64/boot/dts/Makefile
@@ -38,3 +38,5 @@ subdir-y += tesla
subdir-y += xilinx
+
+subdir-y += overlays
-diff --git a/arch/arm64/boot/dts/broadcom/Makefile b/arch/arm64/boot/dts/broadcom/Makefile
-index 83d45afc6588..ec59cc4a4524 100644
--- a/arch/arm64/boot/dts/broadcom/Makefile
+++ b/arch/arm64/boot/dts/broadcom/Makefile
-@@ -7,16 +7,35 @@ dtb-$(CONFIG_ARCH_BCM2835) += bcm2711-rpi-400.dtb \
+@@ -7,16 +7,35 @@ dtb-$(CONFIG_ARCH_BCM2835) += bcm2711-rp
bcm2711-rpi-4-b.dtb \
bcm2711-rpi-cm4-io.dtb \
bcm2712-rpi-5-b.dtb \
+ifeq ($(CONFIG_ARCH_BCM2835),y)
+ DTC_FLAGS += -Wno-gpios_property
+endif
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2710-rpi-2-b.dts b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-2-b.dts
-new file mode 100644
-index 000000000000..9b2c0120842a
--- /dev/null
+++ b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-2-b.dts
@@ -0,0 +1 @@
+#include "arm/broadcom/bcm2710-rpi-2-b.dts"
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dts b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dts
-new file mode 100644
-index 000000000000..bc869aeaee9b
--- /dev/null
+++ b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dts
@@ -0,0 +1 @@
+#include "arm/broadcom/bcm2710-rpi-3-b-plus.dts"
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dts b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dts
-new file mode 100644
-index 000000000000..263fc8db863a
--- /dev/null
+++ b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dts
@@ -0,0 +1 @@
+#include "arm/broadcom/bcm2710-rpi-3-b.dts"
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2710-rpi-cm0.dts b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-cm0.dts
-new file mode 100644
-index 000000000000..1cbe2880d792
--- /dev/null
+++ b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-cm0.dts
@@ -0,0 +1 @@
+#include "arm/broadcom/bcm2710-rpi-cm0.dts"
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2710-rpi-cm3.dts b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-cm3.dts
-new file mode 100644
-index 000000000000..6beee41b0077
--- /dev/null
+++ b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-cm3.dts
@@ -0,0 +1 @@
+#include "arm/broadcom/bcm2710-rpi-cm3.dts"
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2710-rpi-zero-2-w.dts b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-zero-2-w.dts
-new file mode 100644
-index 000000000000..65fa59a939b7
--- /dev/null
+++ b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-zero-2-w.dts
@@ -0,0 +1 @@
+#include "arm/broadcom/bcm2710-rpi-zero-2-w.dts"
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2710-rpi-zero-2.dts b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-zero-2.dts
-new file mode 100644
-index 000000000000..65fa59a939b7
--- /dev/null
+++ b/arch/arm64/boot/dts/broadcom/bcm2710-rpi-zero-2.dts
@@ -0,0 +1 @@
+#include "arm/broadcom/bcm2710-rpi-zero-2-w.dts"
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2711-rpi-cm4.dts b/arch/arm64/boot/dts/broadcom/bcm2711-rpi-cm4.dts
-new file mode 100644
-index 000000000000..3e25a0e1797f
--- /dev/null
+++ b/arch/arm64/boot/dts/broadcom/bcm2711-rpi-cm4.dts
@@ -0,0 +1 @@
+#include "arm/broadcom/bcm2711-rpi-cm4.dts"
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2711-rpi-cm4s.dts b/arch/arm64/boot/dts/broadcom/bcm2711-rpi-cm4s.dts
-new file mode 100644
-index 000000000000..c72d752e7400
--- /dev/null
+++ b/arch/arm64/boot/dts/broadcom/bcm2711-rpi-cm4s.dts
@@ -0,0 +1 @@
+#include "arm/broadcom/bcm2711-rpi-cm4s.dts"
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-d-rpi-5-b.dts b/arch/arm64/boot/dts/broadcom/bcm2712-d-rpi-5-b.dts
-index 7de24d60bcd1..4c8d28a1a0dc 100644
--- a/arch/arm64/boot/dts/broadcom/bcm2712-d-rpi-5-b.dts
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-d-rpi-5-b.dts
-@@ -35,3 +35,11 @@ &gio_aon {
- "PMIC_SCL", // AON_SGPIO_04
- "PMIC_SDA"; // AON_SGPIO_05
+@@ -49,3 +49,11 @@
+ &uart10 {
+ interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
};
+
+&pinctrl_aon {
+&pinctrl {
+ compatible = "brcm,bcm2712c0-aon-pinctrl";
+};
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-ds.dtsi b/arch/arm64/boot/dts/broadcom/bcm2712-ds.dtsi
-new file mode 100644
-index 000000000000..d6e4234077de
--- /dev/null
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-ds.dtsi
@@ -0,0 +1,501 @@
+ status = "disabled";
+ brcm,vdm-qos-map = /bits/ 8 <8 8 8 9 10 10 11 11>;
+};
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b-ovl-rp1.dts b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b-ovl-rp1.dts
-deleted file mode 100644
-index 04738bf281eb..000000000000
--- a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b-ovl-rp1.dts
+++ /dev/null
@@ -1,254 +0,0 @@
-&pcie2 {
- status = "okay";
-};
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts
-index 3e0319fdb93f..0a99dbe20e87 100644
--- a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts
@@ -1,68 +1,771 @@
+&pcie2 {
status = "okay";
};
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-500.dts b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-500.dts
-new file mode 100644
-index 000000000000..f543ff64200d
--- /dev/null
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-500.dts
@@ -0,0 +1,142 @@
+ "-", // GPIO52
+ "-"; // GPIO53
+};
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm4io.dtsi b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm4io.dtsi
-new file mode 100644
-index 000000000000..1b4c42a61817
--- /dev/null
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm4io.dtsi
@@ -0,0 +1,28 @@
+&rp1_usb1 {
+ status = "disabled";
+};
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5-cm4io.dts b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5-cm4io.dts
-new file mode 100644
-index 000000000000..96cd7cf735d5
--- /dev/null
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5-cm4io.dts
@@ -0,0 +1,5 @@
+
+#include "bcm2712-rpi-cm5.dtsi"
+#include "bcm2712-rpi-cm4io.dtsi"
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5-cm5io.dts b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5-cm5io.dts
-new file mode 100644
-index 000000000000..6b5e147d569d
--- /dev/null
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5-cm5io.dts
@@ -0,0 +1,5 @@
+
+#include "bcm2712-rpi-cm5.dtsi"
+#include "bcm2712-rpi-cm5io.dtsi"
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5.dtsi b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5.dtsi
-new file mode 100644
-index 000000000000..f1a8d6776703
--- /dev/null
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5.dtsi
@@ -0,0 +1,743 @@
+ sd_cqe = <&sdio1>, "supports-cqe:0";
+ };
+};
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5io.dtsi b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5io.dtsi
-new file mode 100644
-index 000000000000..4c616a21dc76
--- /dev/null
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5io.dtsi
@@ -0,0 +1,14 @@
+};
+
+i2c_csi_dsi: &i2c_csi_dsi1 { }; // The connector that needs no jumper to enable
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5l-cm4io.dts b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5l-cm4io.dts
-new file mode 100644
-index 000000000000..71259a673d99
--- /dev/null
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5l-cm4io.dts
@@ -0,0 +1,5 @@
+
+#include "bcm2712-rpi-cm5l.dtsi"
+#include "bcm2712-rpi-cm4io.dtsi"
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5l-cm5io.dts b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5l-cm5io.dts
-new file mode 100644
-index 000000000000..11a56dfb7b48
--- /dev/null
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5l-cm5io.dts
@@ -0,0 +1,5 @@
+
+#include "bcm2712-rpi-cm5l.dtsi"
+#include "bcm2712-rpi-cm5io.dtsi"
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5l.dtsi b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5l.dtsi
-new file mode 100644
-index 000000000000..6ba1a3efdd87
--- /dev/null
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5l.dtsi
@@ -0,0 +1,21 @@
+ /delete-property/ mmc-hs400-1_8v;
+ /delete-property/ mmc-hs400-enhanced-strobe;
+};
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-rpi.dtsi b/arch/arm64/boot/dts/broadcom/bcm2712-rpi.dtsi
-new file mode 100644
-index 000000000000..52452d0bec59
--- /dev/null
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-rpi.dtsi
@@ -0,0 +1,503 @@
+ pinctrl-names = "default";
+ pinctrl-0 = <&spi5_pins>;
+};
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712.dtsi b/arch/arm64/boot/dts/broadcom/bcm2712.dtsi
-index 205b87f557d6..5cf747c71004 100644
--- a/arch/arm64/boot/dts/broadcom/bcm2712.dtsi
+++ b/arch/arm64/boot/dts/broadcom/bcm2712.dtsi
-@@ -38,13 +38,6 @@ clk_emmc2: clk-emmc2 {
+@@ -38,13 +38,6 @@
clock-frequency = <200000000>;
clock-output-names = "emmc2-clock";
};
};
cpus: cpus {
-@@ -250,39 +243,6 @@ uart10: serial@7d001000 {
- status = "disabled";
+@@ -259,39 +252,6 @@
+ system-power-controller;
};
- pinctrl: pinctrl@7d504100 {
interrupt-controller@7d517000 {
compatible = "brcm,bcm7271-l2-intc";
reg = <0x7d517000 0x10>;
-@@ -303,21 +263,6 @@ gio_aon: gpio@7d517c00 {
+@@ -312,21 +272,6 @@
*/
};
gicv2: interrupt-controller@7fff9000 {
compatible = "arm,gic-400";
reg = <0x7fff9000 0x1000>,
-@@ -663,9 +608,14 @@ clk_108MHz: clk-108M {
+@@ -672,9 +617,14 @@
hvs: hvs@107c580000 {
compatible = "brcm,bcm2712-hvs";
+ iommus = <&iommu4>;
};
};
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712d0-rpi-5-b.dts b/arch/arm64/boot/dts/broadcom/bcm2712d0-rpi-5-b.dts
-new file mode 100644
-index 000000000000..d06536bc7592
--- /dev/null
+++ b/arch/arm64/boot/dts/broadcom/bcm2712d0-rpi-5-b.dts
@@ -0,0 +1,107 @@
+&hdmi1 {
+ dmas = <&dma40 (13|(1<<30)|(1<<24)|(10<<16)|(15<<20))>;
+};
-diff --git a/arch/arm64/boot/dts/broadcom/rp1.dtsi b/arch/arm64/boot/dts/broadcom/rp1.dtsi
-new file mode 100644
-index 000000000000..6a29960db576
--- /dev/null
+++ b/arch/arm64/boot/dts/broadcom/rp1.dtsi
@@ -0,0 +1,1343 @@
+ regulator-always-on;
+ };
+};
-diff --git a/arch/arm64/boot/dts/broadcom/rp1.dtso b/arch/arm64/boot/dts/broadcom/rp1.dtso
-deleted file mode 100644
-index ab4f146d22c0..000000000000
--- a/arch/arm64/boot/dts/broadcom/rp1.dtso
+++ /dev/null
@@ -1,11 +0,0 @@
@@ -0,0 +1 @@
+../../../arm/boot/dts/overlays
\ No newline at end of file
-diff --git a/include/dt-bindings/clock/rp1.h b/include/dt-bindings/clock/rp1.h
-new file mode 100644
-index 000000000000..1ebb25f16923
--- /dev/null
+++ b/include/dt-bindings/clock/rp1.h
@@ -0,0 +1,60 @@
+/* MIPI clocks managed by the DSI driver */
+#define RP1_CLK_MIPI0_DSI_BYTECLOCK 45
+#define RP1_CLK_MIPI1_DSI_BYTECLOCK 46
-diff --git a/include/dt-bindings/gpio/gpio-fsm.h b/include/dt-bindings/gpio/gpio-fsm.h
-new file mode 100644
-index 000000000000..eb40cfdc71df
--- /dev/null
+++ b/include/dt-bindings/gpio/gpio-fsm.h
@@ -0,0 +1,21 @@
+#define GF_SW(x) GF_IO(GF_SOFT, (x))
+
+#endif
-diff --git a/scripts/Makefile.dtbinst b/scripts/Makefile.dtbinst
-index 9d920419a62c..4be9ebd3995c 100644
--- a/scripts/Makefile.dtbinst
+++ b/scripts/Makefile.dtbinst
@@ -31,9 +31,14 @@ $(dst)/%: $(obj)/$(1)%
endif # CONFIG_ARCH_WANT_FLAT_DTB_INSTALL
-diff --git a/scripts/Makefile.dtbs b/scripts/Makefile.dtbs
-index 2d321b813600..3bcf78a9adb4 100644
--- a/scripts/Makefile.dtbs
+++ b/scripts/Makefile.dtbs
-@@ -13,6 +13,7 @@ base-dtb-y := $(filter %.dtb, $(call real-search, $(multi-dtb-y), .dtb, -dtbs))
+@@ -13,6 +13,7 @@ base-dtb-y := $(filter %.dtb, $(call rea
dtb-y := $(addprefix $(obj)/, $(dtb-y))
multi-dtb-y := $(addprefix $(obj)/, $(multi-dtb-y))
real-dtb-y := $(addprefix $(obj)/, $(real-dtb-y))
$(call if_changed,gen_order)
# Assembly file to wrap dtb(o)
-@@ -120,11 +121,32 @@ dtc_cpp_flags = -Wp,-MMD,$(depfile).pre.tmp -nostdinc -I $(DTC_INCLUDE) -undef -
+@@ -120,11 +121,32 @@ dtc_cpp_flags = -Wp,-MMD,$(depfile).pre.
dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp)
cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile) \
$(cmd_dtb_check)
---
-2.54.0
-
drivers/clk/bcm/clk-bcm2835.c | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
-diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
-index 02215ea79403..3e1568938681 100644
--- a/drivers/clk/bcm/clk-bcm2835.c
+++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -2324,8 +2324,15 @@ static int bcm2835_clk_probe(struct platform_device *pdev)
+@@ -2324,8 +2324,15 @@ static int bcm2835_clk_probe(struct plat
if (ret)
return ret;
}
static const struct cprman_plat_data cprman_bcm2835_plat_data = {
-@@ -2351,7 +2358,15 @@ static struct platform_driver bcm2835_clk_driver = {
+@@ -2351,7 +2358,15 @@ static struct platform_driver bcm2835_cl
.probe = bcm2835_clk_probe,
};
MODULE_AUTHOR("Eric Anholt <eric@anholt.net>");
MODULE_DESCRIPTION("BCM2835 clock driver");
---
-2.54.0
-
drivers/clk/bcm/clk-bcm2835.c | 5 +++++
1 file changed, 5 insertions(+)
-diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
-index 3e1568938681..3a28bb531c78 100644
--- a/drivers/clk/bcm/clk-bcm2835.c
+++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -1412,6 +1412,11 @@ bcm2835_register_pll_divider(struct bcm2835_cprman *cprman,
+@@ -1412,6 +1412,11 @@ bcm2835_register_pll_divider(struct bcm2
divider->div.hw.init = &init;
divider->div.table = NULL;
divider->cprman = cprman;
divider->data = divider_data;
---
-2.54.0
-
drivers/clk/bcm/clk-bcm2835.c | 43 +++++++++++++++++++++++++++++++++--
1 file changed, 41 insertions(+), 2 deletions(-)
-diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
-index 3a28bb531c78..785df427de58 100644
--- a/drivers/clk/bcm/clk-bcm2835.c
+++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -1340,6 +1340,8 @@ static const struct clk_ops bcm2835_vpu_clock_clk_ops = {
+@@ -1340,6 +1340,8 @@ static const struct clk_ops bcm2835_vpu_
.debug_init = bcm2835_clock_debug_init,
};
static struct clk_hw *bcm2835_register_pll(struct bcm2835_cprman *cprman,
const void *data)
{
-@@ -1357,6 +1359,9 @@ static struct clk_hw *bcm2835_register_pll(struct bcm2835_cprman *cprman,
+@@ -1357,6 +1359,9 @@ static struct clk_hw *bcm2835_register_p
init.ops = &bcm2835_pll_clk_ops;
init.flags = pll_data->flags | CLK_IGNORE_UNUSED;
pll = kzalloc(sizeof(*pll), GFP_KERNEL);
if (!pll)
return NULL;
-@@ -1413,8 +1418,10 @@ bcm2835_register_pll_divider(struct bcm2835_cprman *cprman,
+@@ -1413,8 +1418,10 @@ bcm2835_register_pll_divider(struct bcm2
divider->div.table = NULL;
if (!(cprman_read(cprman, divider_data->cm_reg) & divider_data->hold_mask)) {
}
divider->cprman = cprman;
-@@ -1470,6 +1477,15 @@ static struct clk_hw *bcm2835_register_clock(struct bcm2835_cprman *cprman,
- init.name = clock_data->name;
+@@ -1471,6 +1478,15 @@ static struct clk_hw *bcm2835_register_c
init.flags = clock_data->flags | CLK_IGNORE_UNUSED;
-+ /*
+ /*
+ * Some GPIO clocks for ethernet/wifi PLLs are marked as
+ * critical (since some platforms use them), but if the
+ * firmware didn't have them turned on then they clearly
+ if ((cprman_read(cprman, clock_data->ctl_reg) & CM_ENABLE) == 0)
+ init.flags &= ~CLK_IS_CRITICAL;
+
- /*
++ /*
* Pass the CLK_SET_RATE_PARENT flag if we are allowed to propagate
* rate changes on at least of the parents.
-@@ -2250,6 +2266,8 @@ static const struct bcm2835_clk_desc clk_desc_array[] = {
+ */
+@@ -2250,6 +2266,8 @@ static const struct bcm2835_clk_desc clk
.ctl_reg = CM_PERIICTL),
};
/*
* Permanently take a reference on the parent of the SDRAM clock.
*
-@@ -2269,6 +2287,19 @@ static int bcm2835_mark_sdc_parent_critical(struct clk *sdc)
+@@ -2269,6 +2287,19 @@ static int bcm2835_mark_sdc_parent_criti
return clk_prepare_enable(parent);
}
static int bcm2835_clk_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
-@@ -2278,6 +2309,7 @@ static int bcm2835_clk_probe(struct platform_device *pdev)
+@@ -2278,6 +2309,7 @@ static int bcm2835_clk_probe(struct plat
const size_t asize = ARRAY_SIZE(clk_desc_array);
const struct cprman_plat_data *pdata;
size_t i;
int ret;
pdata = of_device_get_match_data(&pdev->dev);
-@@ -2296,6 +2328,13 @@ static int bcm2835_clk_probe(struct platform_device *pdev)
+@@ -2296,6 +2328,13 @@ static int bcm2835_clk_probe(struct plat
if (IS_ERR(cprman->regs))
return PTR_ERR(cprman->regs);
memcpy(cprman->real_parent_names, cprman_parent_names,
sizeof(cprman_parent_names));
of_clk_parent_fill(dev->of_node, cprman->real_parent_names,
---
-2.54.0
-
drivers/clk/bcm/clk-bcm2835.c | 39 ++++++++++++++++++++++++++++++++++-
1 file changed, 38 insertions(+), 1 deletion(-)
-diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
-index 785df427de58..504fcae4114c 100644
--- a/drivers/clk/bcm/clk-bcm2835.c
+++ b/drivers/clk/bcm/clk-bcm2835.c
@@ -36,6 +36,7 @@
/*
* Names of clocks used within the driver that need to be replaced
* with an external parent's name. This array is in the order that
-@@ -314,6 +317,7 @@ static const char *const cprman_parent_names[] = {
+@@ -314,6 +317,7 @@ static const char *const cprman_parent_n
struct bcm2835_cprman {
struct device *dev;
void __iomem *regs;
spinlock_t regs_lock; /* spinlock for all clocks */
unsigned int soc;
-@@ -1044,6 +1048,30 @@ static unsigned long bcm2835_clock_get_rate(struct clk_hw *hw,
+@@ -1044,6 +1048,30 @@ static unsigned long bcm2835_clock_get_r
return rate;
}
static void bcm2835_clock_wait_busy(struct bcm2835_clock *clock)
{
struct bcm2835_cprman *cprman = clock->cprman;
-@@ -1332,7 +1360,7 @@ static int bcm2835_vpu_clock_is_on(struct clk_hw *hw)
+@@ -1332,7 +1360,7 @@ static int bcm2835_vpu_clock_is_on(struc
*/
static const struct clk_ops bcm2835_vpu_clock_clk_ops = {
.is_prepared = bcm2835_vpu_clock_is_on,
.set_rate = bcm2835_clock_set_rate,
.determine_rate = bcm2835_clock_determine_rate,
.set_parent = bcm2835_clock_set_parent,
-@@ -2308,6 +2336,7 @@ static int bcm2835_clk_probe(struct platform_device *pdev)
+@@ -2308,6 +2336,7 @@ static int bcm2835_clk_probe(struct plat
const struct bcm2835_clk_desc *desc;
const size_t asize = ARRAY_SIZE(clk_desc_array);
const struct cprman_plat_data *pdata;
size_t i;
u32 clk_id;
int ret;
-@@ -2328,6 +2357,14 @@ static int bcm2835_clk_probe(struct platform_device *pdev)
+@@ -2328,6 +2357,14 @@ static int bcm2835_clk_probe(struct plat
if (IS_ERR(cprman->regs))
return PTR_ERR(cprman->regs);
memset(bcm2835_clk_claimed, 0, sizeof(bcm2835_clk_claimed));
for (i = 0;
!of_property_read_u32_index(pdev->dev.of_node, "claim-clocks",
---
-2.54.0
-
drivers/clk/bcm/clk-bcm2835.c | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
-diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
-index 504fcae4114c..aa729951d22b 100644
--- a/drivers/clk/bcm/clk-bcm2835.c
+++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -652,15 +652,17 @@ static int bcm2835_pll_on(struct clk_hw *hw)
+@@ -652,15 +652,17 @@ static int bcm2835_pll_on(struct clk_hw
spin_unlock(&cprman->regs_lock);
/* Wait for the PLL to lock. */
- dev_err(cprman->dev, "%s: couldn't lock PLL\n",
- clk_hw_get_name(hw));
- return -ETIMEDOUT;
+- }
+ if (strcmp(data->name, "pllh")) {
+ timeout = ktime_add_ns(ktime_get(), LOCK_TIMEOUT_NS);
+ while (!(cprman_read(cprman, CM_LOCK) & data->lock_mask)) {
+ clk_hw_get_name(hw));
+ return -ETIMEDOUT;
+ }
-+
-+ cpu_relax();
- }
--
+
- cpu_relax();
++ cpu_relax();
++ }
}
cprman_write(cprman, data->a2w_ctrl_reg,
---
-2.54.0
-
drivers/clk/bcm/clk-bcm2835.c | 22 +++++++++++++---------
1 file changed, 13 insertions(+), 9 deletions(-)
-diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
-index aa729951d22b..dd76a43dcd05 100644
--- a/drivers/clk/bcm/clk-bcm2835.c
+++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -1143,15 +1143,19 @@ static int bcm2835_clock_set_rate(struct clk_hw *hw,
+@@ -1143,15 +1143,19 @@ static int bcm2835_clock_set_rate(struct
spin_lock(&cprman->regs_lock);
ctl |= (div & CM_DIV_FRAC_MASK) ? CM_FRAC : 0;
cprman_write(cprman, data->ctl_reg, ctl);
-@@ -1527,7 +1531,7 @@ static struct clk_hw *bcm2835_register_clock(struct bcm2835_cprman *cprman,
+@@ -1527,7 +1531,7 @@ static struct clk_hw *bcm2835_register_c
init.ops = &bcm2835_vpu_clock_clk_ops;
} else {
init.ops = &bcm2835_clock_clk_ops;
/* If the clock wasn't actually enabled at boot, it's not
* critical.
---
-2.54.0
-
drivers/clk/bcm/clk-bcm2835.c | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
-diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
-index dd76a43dcd05..915edad0f3b3 100644
--- a/drivers/clk/bcm/clk-bcm2835.c
+++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -1132,8 +1132,10 @@ static int bcm2835_clock_on(struct clk_hw *hw)
+@@ -1132,8 +1132,10 @@ static int bcm2835_clock_on(struct clk_h
return 0;
}
{
struct bcm2835_clock *clock = bcm2835_clock_from_hw(hw);
struct bcm2835_cprman *cprman = clock->cprman;
-@@ -1155,6 +1157,11 @@ static int bcm2835_clock_set_rate(struct clk_hw *hw,
+@@ -1155,6 +1157,11 @@ static int bcm2835_clock_set_rate(struct
bcm2835_clock_wait_busy(clock);
}
ctl &= ~CM_FRAC;
ctl |= (div & CM_DIV_FRAC_MASK) ? CM_FRAC : 0;
cprman_write(cprman, data->ctl_reg, ctl);
-@@ -1166,6 +1173,12 @@ static int bcm2835_clock_set_rate(struct clk_hw *hw,
+@@ -1166,6 +1173,12 @@ static int bcm2835_clock_set_rate(struct
return 0;
}
static bool
bcm2835_clk_is_pllc(struct clk_hw *hw)
{
-@@ -1349,6 +1362,7 @@ static const struct clk_ops bcm2835_clock_clk_ops = {
+@@ -1349,6 +1362,7 @@ static const struct clk_ops bcm2835_cloc
.unprepare = bcm2835_clock_off,
.recalc_rate = bcm2835_clock_get_rate,
.set_rate = bcm2835_clock_set_rate,
.determine_rate = bcm2835_clock_determine_rate,
.set_parent = bcm2835_clock_set_parent,
.get_parent = bcm2835_clock_get_parent,
-@@ -1531,7 +1545,6 @@ static struct clk_hw *bcm2835_register_clock(struct bcm2835_cprman *cprman,
+@@ -1531,7 +1545,6 @@ static struct clk_hw *bcm2835_register_c
init.ops = &bcm2835_vpu_clock_clk_ops;
} else {
init.ops = &bcm2835_clock_clk_ops;
/* If the clock wasn't actually enabled at boot, it's not
* critical.
---
-2.54.0
-
drivers/clk/bcm/clk-bcm2835.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
-diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
-index 915edad0f3b3..4478288bc586 100644
--- a/drivers/clk/bcm/clk-bcm2835.c
+++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -2339,9 +2339,11 @@ static bool bcm2835_clk_is_claimed(const char *name)
+@@ -2339,9 +2339,11 @@ static bool bcm2835_clk_is_claimed(const
int i;
for (i = 0; i < ARRAY_SIZE(clk_desc_array); i++) {
}
return false;
---
-2.54.0
-
drivers/clk/bcm/clk-bcm2835.c | 45 ++++++++++-------------------------
1 file changed, 12 insertions(+), 33 deletions(-)
-diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
-index 4478288bc586..56fb1e5db2f9 100644
--- a/drivers/clk/bcm/clk-bcm2835.c
+++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -1769,16 +1769,12 @@ static const struct bcm2835_clk_desc clk_desc_array[] = {
+@@ -1769,16 +1769,12 @@ static const struct bcm2835_clk_desc clk
.hold_mask = CM_PLLA_HOLDCORE,
.fixed_divider = 1,
.flags = CLK_SET_RATE_PARENT),
[BCM2835_PLLA_DSI0] = REGISTER_PLL_DIV(
SOC_ALL,
.name = "plla_dsi0",
-@@ -2079,14 +2075,12 @@ static const struct bcm2835_clk_desc clk_desc_array[] = {
+@@ -2079,14 +2075,12 @@ static const struct bcm2835_clk_desc clk
.int_bits = 6,
.frac_bits = 0,
.tcnt_mux = 3),
/*
* VPU clock. This doesn't have an enable bit, since it drives
* the bus for everything else, and is special so it doesn't need
-@@ -2249,21 +2243,6 @@ static const struct bcm2835_clk_desc clk_desc_array[] = {
+@@ -2249,21 +2243,6 @@ static const struct bcm2835_clk_desc clk
.tcnt_mux = 28,
.round_up = true),
/* dsi clocks */
[BCM2835_CLOCK_DSI0E] = REGISTER_PER_CLK(
SOC_ALL,
---
-2.54.0
-
drivers/clk/bcm/clk-bcm2835.c | 4 ++++
1 file changed, 4 insertions(+)
-diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
-index 56fb1e5db2f9..9ba61a9d9890 100644
--- a/drivers/clk/bcm/clk-bcm2835.c
+++ b/drivers/clk/bcm/clk-bcm2835.c
@@ -107,6 +107,7 @@
#define CM_PULSECTL 0x190
#define CM_PULSEDIV 0x194
#define CM_SDCCTL 0x1a8
-@@ -2357,6 +2358,9 @@ static int bcm2835_clk_probe(struct platform_device *pdev)
+@@ -2357,6 +2358,9 @@ static int bcm2835_clk_probe(struct plat
if (IS_ERR(cprman->regs))
return PTR_ERR(cprman->regs);
fw_node = of_parse_phandle(dev->of_node, "firmware", 0);
if (fw_node) {
struct rpi_firmware *fw = rpi_firmware_get(fw_node);
---
-2.54.0
-
drivers/net/usb/smsc95xx.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
-diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
-index de733e0488bf..14eb4b6b41e3 100644
--- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c
@@ -82,6 +82,10 @@ static bool turbo_mode = true;
static int __must_check smsc95xx_read_reg(struct usbnet *dev, u32 index,
u32 *data)
{
-@@ -993,13 +997,13 @@ static int smsc95xx_reset(struct usbnet *dev)
+@@ -993,13 +997,13 @@ static int smsc95xx_reset(struct usbnet
if (!turbo_mode) {
burst_cap = 0;
}
netif_dbg(dev, ifup, dev->net, "rx_urb_size=%ld\n",
---
-2.54.0
-
drivers/net/usb/smsc95xx.c | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
-diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
-index 14eb4b6b41e3..b83a9840e3c6 100644
--- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c
@@ -86,6 +86,10 @@ static int packetsize = 2560;
static int __must_check smsc95xx_read_reg(struct usbnet *dev, u32 index,
u32 *data)
{
-@@ -866,6 +870,21 @@ static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)
+@@ -866,6 +870,21 @@ static int smsc95xx_ioctl(struct net_dev
return phy_mii_ioctl(netdev->phydev, rq, cmd);
}
static void smsc95xx_init_mac_address(struct usbnet *dev)
{
u8 addr[ETH_ALEN];
-@@ -889,6 +908,14 @@ static void smsc95xx_init_mac_address(struct usbnet *dev)
+@@ -888,6 +907,14 @@ static void smsc95xx_init_mac_address(st
+ return;
}
}
-
++
+ /* Check module parameters */
+ if (smsc95xx_macaddr_param(dev, dev->net) == 0) {
+ if (is_valid_ether_addr(dev->net->dev_addr)) {
+ return;
+ }
+ }
-+
+
/* no useful static MAC address found. generate a random one */
eth_hw_addr_random(dev->net);
- netif_dbg(dev, ifup, dev->net, "MAC address set to eth_random_addr\n");
---
-2.54.0
-
kernel/resource.c | 6 ++++++
1 file changed, 6 insertions(+)
-diff --git a/kernel/resource.c b/kernel/resource.c
-index e4e9bac12e6e..edbe8ef7e8ef 100644
--- a/kernel/resource.c
+++ b/kernel/resource.c
-@@ -210,6 +210,12 @@ static int __release_resource(struct resource *old, bool release_child)
+@@ -210,6 +210,12 @@ static int __release_resource(struct res
{
struct resource *tmp, **p, *chd;
p = &old->parent->child;
for (;;) {
tmp = *p;
---
-2.54.0
-
drivers/irqchip/irq-bcm2836.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/irqchip/irq-bcm2836.c b/drivers/irqchip/irq-bcm2836.c
-index fafd1f71348e..067027467113 100644
--- a/drivers/irqchip/irq-bcm2836.c
+++ b/drivers/irqchip/irq-bcm2836.c
-@@ -131,7 +131,7 @@ static int bcm2836_map(struct irq_domain *d, unsigned int irq,
+@@ -131,7 +131,7 @@ static int bcm2836_map(struct irq_domain
irq_set_percpu_devid(irq);
irq_domain_set_info(d, irq, hw, chip, d->host_data,
handle_percpu_devid_irq, NULL, NULL);
return 0;
}
---
-2.54.0
-
drivers/irqchip/irq-bcm2835.c | 49 ++++++++++++++++++++++++++++++++---
2 files changed, 46 insertions(+), 4 deletions(-)
-diff --git a/arch/arm/mach-bcm/Kconfig b/arch/arm/mach-bcm/Kconfig
-index 24bc6e18d806..882a8dc508f2 100644
--- a/arch/arm/mach-bcm/Kconfig
+++ b/arch/arm/mach-bcm/Kconfig
@@ -158,6 +158,7 @@ config ARCH_BCM2835
select PINCTRL
select PINCTRL_BCM2835
select MFD_CORE
-diff --git a/drivers/irqchip/irq-bcm2835.c b/drivers/irqchip/irq-bcm2835.c
-index 1e384c870350..34003a61702c 100644
--- a/drivers/irqchip/irq-bcm2835.c
+++ b/drivers/irqchip/irq-bcm2835.c
@@ -45,7 +45,7 @@
static const int reg_pending[] __initconst = { 0x00, 0x04, 0x08 };
static const int reg_enable[] __initconst = { 0x18, 0x10, 0x14 };
-@@ -89,14 +93,38 @@ static void __exception_irq_entry bcm2835_handle_irq(
+@@ -89,14 +93,38 @@ static void __exception_irq_entry bcm283
struct pt_regs *regs);
static void bcm2836_chained_handle_irq(struct irq_desc *desc);
}
static struct irq_chip armctrl_chip = {
-@@ -144,7 +172,8 @@ static int __init armctrl_of_init(struct device_node *node,
+@@ -144,7 +172,8 @@ static int __init armctrl_of_init(struct
if (!base)
panic("%pOF: unable to map IC registers\n", node);
&armctrl_ops, NULL);
if (!intc.domain)
panic("%pOF: unable to create IRQ domain\n", node);
-@@ -188,6 +217,18 @@ static int __init armctrl_of_init(struct device_node *node,
+@@ -188,6 +217,18 @@ static int __init armctrl_of_init(struct
set_handle_irq(bcm2835_handle_irq);
}
return 0;
}
---
-2.54.0
-
drivers/irqchip/irq-bcm2835.c | 43 +++++++++++++++++++++++++++++++++--
1 file changed, 41 insertions(+), 2 deletions(-)
-diff --git a/drivers/irqchip/irq-bcm2835.c b/drivers/irqchip/irq-bcm2835.c
-index 34003a61702c..3bfb4a5b23c2 100644
--- a/drivers/irqchip/irq-bcm2835.c
+++ b/drivers/irqchip/irq-bcm2835.c
@@ -41,8 +41,11 @@
};
static struct armctrl_ic intc __read_mostly;
-@@ -119,12 +126,35 @@ static void armctrl_mask_irq(struct irq_data *d)
+@@ -119,12 +126,35 @@ static void armctrl_mask_irq(struct irq_
static void armctrl_unmask_irq(struct irq_data *d)
{
}
static struct irq_chip armctrl_chip = {
-@@ -217,6 +247,15 @@ static int __init armctrl_of_init(struct device_node *node,
+@@ -217,6 +247,15 @@ static int __init armctrl_of_init(struct
set_handle_irq(bcm2835_handle_irq);
}
/* Make a duplicate irq range which is used to enable FIQ */
for (b = 0; b < NR_BANKS; b++) {
for (i = 0; i < bank_irqs[b]; i++) {
---
-2.54.0
-
drivers/spi/spidev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c
-index 461d3a0009a8..3b9045e656ce 100644
--- a/drivers/spi/spidev.c
+++ b/drivers/spi/spidev.c
-@@ -710,7 +710,7 @@ MODULE_DEVICE_TABLE(spi, spidev_spi_ids);
+@@ -710,7 +710,7 @@ MODULE_DEVICE_TABLE(spi, spidev_spi_ids)
*/
static int spidev_of_check(struct device *dev)
{
return 0;
dev_err(dev, "spidev listed directly in DT is not supported\n");
---
-2.54.0
-
drivers/dma/bcm2835-dma.c | 668 +++++++++++++++++++++++++++++++-------
2 files changed, 556 insertions(+), 114 deletions(-)
-diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig
-index b8a74b1798ba..cab445e9b9a0 100644
--- a/drivers/dma/Kconfig
+++ b/drivers/dma/Kconfig
@@ -143,7 +143,7 @@ config BCM_SBA_RAID
select DMA_ENGINE
select DMA_VIRTUAL_CHANNELS
-diff --git a/drivers/dma/bcm2835-dma.c b/drivers/dma/bcm2835-dma.c
-index 0117bb2e8591..dcc77ed986bb 100644
--- a/drivers/dma/bcm2835-dma.c
+++ b/drivers/dma/bcm2835-dma.c
@@ -25,6 +25,7 @@
static inline size_t bcm2835_dma_max_frame_length(struct bcm2835_chan *c)
{
/* lite and normal channels have different max frame length */
-@@ -201,6 +359,36 @@ static inline struct bcm2835_desc *to_bcm2835_dma_desc(
+@@ -201,6 +359,36 @@ static inline struct bcm2835_desc *to_bc
return container_of(t, struct bcm2835_desc, vd.tx);
}
static void bcm2835_dma_free_cb_chain(struct bcm2835_desc *desc)
{
size_t i;
-@@ -219,45 +407,53 @@ static void bcm2835_dma_desc_free(struct virt_dma_desc *vd)
+@@ -219,45 +407,53 @@ static void bcm2835_dma_desc_free(struct
}
static void bcm2835_dma_create_cb_set_length(
- /* calculate the length that remains to reach period_length */
- control_block->length = period_len - *total_len;
-+ if (c->is_40bit_channel) {
-+ struct bcm2711_dma40_scb *scb =
-+ (struct bcm2711_dma40_scb *)control_block;
-
+-
- /* reset total_length for next period */
- *total_len = 0;
-
- /* add extrainfo bits in info */
- control_block->info |= finalextrainfo;
++ if (c->is_40bit_channel) {
++ struct bcm2711_dma40_scb *scb =
++ (struct bcm2711_dma40_scb *)control_block;
++
+ scb->len = cb_len;
+ /* add extrainfo bits to ti */
+ scb->ti |= to_bcm2711_ti(finalextrainfo);
}
static inline size_t bcm2835_dma_count_frames_for_sg(
-@@ -280,7 +476,7 @@ static inline size_t bcm2835_dma_count_frames_for_sg(
+@@ -280,7 +476,7 @@ static inline size_t bcm2835_dma_count_f
/**
* bcm2835_dma_create_cb_chain - create a control block and fills data in
*
* @direction: the direction in which we transfer
* @cyclic: it is a cyclic transfer
* @info: the default info bits to apply per controlblock
-@@ -298,12 +494,11 @@ static inline size_t bcm2835_dma_count_frames_for_sg(
+@@ -298,12 +494,11 @@ static inline size_t bcm2835_dma_count_f
* @gfp: the GFP flag to use for allocation
*/
static struct bcm2835_desc *bcm2835_dma_create_cb_chain(
size_t len = buf_len, total_len;
size_t frame;
struct bcm2835_desc *d;
-@@ -335,11 +530,23 @@ static struct bcm2835_desc *bcm2835_dma_create_cb_chain(
+@@ -335,11 +530,23 @@ static struct bcm2835_desc *bcm2835_dma_
/* fill in the control block */
control_block = cb_entry->cb;
/* set up length in control_block if requested */
if (buf_len) {
/* calculate length honoring period_length */
-@@ -349,25 +556,51 @@ static struct bcm2835_desc *bcm2835_dma_create_cb_chain(
+@@ -349,25 +556,51 @@ static struct bcm2835_desc *bcm2835_dma_
cyclic ? finalextrainfo : 0);
/* calculate new remaining length */
/* detect a size mismatch */
if (buf_len && (d->size != buf_len))
-@@ -381,13 +614,12 @@ static struct bcm2835_desc *bcm2835_dma_create_cb_chain(
+@@ -381,13 +614,12 @@ error_cb:
}
static void bcm2835_dma_fill_cb_chain_with_sg(
size_t len, max_len;
unsigned int i;
dma_addr_t addr;
-@@ -395,14 +627,35 @@ static void bcm2835_dma_fill_cb_chain_with_sg(
+@@ -395,14 +627,35 @@ static void bcm2835_dma_fill_cb_chain_wi
max_len = bcm2835_dma_max_frame_length(c);
for_each_sg(sgl, sgent, sg_len, i) {
}
}
}
-@@ -410,29 +663,74 @@ static void bcm2835_dma_fill_cb_chain_with_sg(
+@@ -410,29 +663,74 @@ static void bcm2835_dma_fill_cb_chain_wi
static void bcm2835_dma_abort(struct bcm2835_chan *c)
{
void __iomem *chan_base = c->chan_base;
+ */
+ if (!readl(chan_base + BCM2711_DMA40_CB))
+ return;
-+
+
+- /* Write 0 to the active bit - Pause the DMA */
+- writel(0, chan_base + BCM2835_DMA_CS);
+ /* Pause the current DMA */
+ writel(readl(chan_base + BCM2711_DMA40_CS) & ~BCM2711_DMA40_ACTIVE,
+ chan_base + BCM2711_DMA40_CS);
+ */
+ if (!readl(chan_base + BCM2835_DMA_ADDR))
+ return;
-+
-+ /* We need to clear the next DMA block pending */
-+ writel(0, chan_base + BCM2835_DMA_NEXTCB);
-
-- /* Write 0 to the active bit - Pause the DMA */
-- writel(0, chan_base + BCM2835_DMA_CS);
-+ /* Abort the DMA, which needs to be enabled to complete */
-+ writel(readl(chan_base + BCM2835_DMA_CS) | BCM2835_DMA_ABORT | BCM2835_DMA_ACTIVE,
-+ chan_base + BCM2835_DMA_CS);
- /* Wait for any current AXI transfer to complete */
- while ((readl(chan_base + BCM2835_DMA_CS) &
- BCM2835_DMA_WAITING_FOR_WRITES) && --timeout)
- cpu_relax();
-+ /* wait for DMA to be aborted */
-+ while ((readl(chan_base + BCM2835_DMA_CS) & BCM2835_DMA_ABORT) && --timeout)
-+ cpu_relax();
-
+-
- /* Peripheral might be stuck and fail to signal AXI write responses */
- if (!timeout)
- dev_err(c->vc.chan.device->dev,
- "failed to complete outstanding writes\n");
++ /* We need to clear the next DMA block pending */
++ writel(0, chan_base + BCM2835_DMA_NEXTCB);
+
+- writel(BCM2835_DMA_RESET, chan_base + BCM2835_DMA_CS);
++ /* Abort the DMA, which needs to be enabled to complete */
++ writel(readl(chan_base + BCM2835_DMA_CS) | BCM2835_DMA_ABORT | BCM2835_DMA_ACTIVE,
++ chan_base + BCM2835_DMA_CS);
++
++ /* wait for DMA to be aborted */
++ while ((readl(chan_base + BCM2835_DMA_CS) & BCM2835_DMA_ABORT) && --timeout)
++ cpu_relax();
++
+ /* Write 0 to the active bit - Pause the DMA */
+ writel(readl(chan_base + BCM2835_DMA_CS) & ~BCM2835_DMA_ACTIVE,
+ chan_base + BCM2835_DMA_CS);
-
-- writel(BCM2835_DMA_RESET, chan_base + BCM2835_DMA_CS);
++
+ /*
+ * Peripheral might be stuck and fail to complete
+ * This is expected when dreqs are enabled but not asserted
}
static void bcm2835_dma_start_desc(struct bcm2835_chan *c)
-@@ -449,8 +747,16 @@ static void bcm2835_dma_start_desc(struct bcm2835_chan *c)
+@@ -449,8 +747,16 @@ static void bcm2835_dma_start_desc(struc
c->desc = d = to_bcm2835_dma_desc(&vd->tx);
}
static irqreturn_t bcm2835_dma_callback(int irq, void *data)
-@@ -477,8 +783,13 @@ static irqreturn_t bcm2835_dma_callback(int irq, void *data)
+@@ -477,8 +783,13 @@ static irqreturn_t bcm2835_dma_callback(
* if this IRQ handler is threaded.) If the channel is finished, it
* will remain idle despite the ACTIVE flag being set.
*/
d = c->desc;
-@@ -540,20 +851,39 @@ static size_t bcm2835_dma_desc_size_pos(struct bcm2835_desc *d, dma_addr_t addr)
+@@ -540,20 +851,39 @@ static size_t bcm2835_dma_desc_size_pos(
unsigned int i;
size_t size;
+ dma = control_block->dst;
+ else
+ dma = control_block->src;
-+
+
+- if (size)
+- size += this_size;
+- else if (addr >= dma && addr < dma + this_size)
+- size += dma + this_size - addr;
+ if (size)
+ size += this_size;
+ else if (addr >= dma && addr < dma + this_size)
+ struct bcm2835_dma_cb *control_block = d->cb_list[i].cb;
+ size_t this_size = control_block->length;
+ dma_addr_t dma;
-
-- if (size)
-- size += this_size;
-- else if (addr >= dma && addr < dma + this_size)
-- size += dma + this_size - addr;
++
+ if (d->dir == DMA_DEV_TO_MEM)
+ dma = control_block->dst;
+ else
}
return size;
-@@ -580,12 +910,25 @@ static enum dma_status bcm2835_dma_tx_status(struct dma_chan *chan,
+@@ -580,12 +910,25 @@ static enum dma_status bcm2835_dma_tx_st
struct bcm2835_desc *d = c->desc;
dma_addr_t pos;
txstate->residue = bcm2835_dma_desc_size_pos(d, pos);
} else {
-@@ -615,8 +958,10 @@ static struct dma_async_tx_descriptor *bcm2835_dma_prep_dma_memcpy(
+@@ -615,8 +958,10 @@ static struct dma_async_tx_descriptor *b
{
struct bcm2835_chan *c = to_bcm2835_dma_chan(chan);
struct bcm2835_desc *d;
size_t max_len = bcm2835_dma_max_frame_length(c);
size_t frames;
-@@ -628,7 +973,7 @@ static struct dma_async_tx_descriptor *bcm2835_dma_prep_dma_memcpy(
+@@ -628,7 +973,7 @@ static struct dma_async_tx_descriptor *b
frames = bcm2835_dma_frames_for_length(len, max_len);
/* allocate the CB chain - this also fills in the pointers */
info, extra, frames,
src, dst, len, 0, GFP_KERNEL);
if (!d)
-@@ -646,7 +991,8 @@ static struct dma_async_tx_descriptor *bcm2835_dma_prep_slave_sg(
+@@ -646,7 +991,8 @@ static struct dma_async_tx_descriptor *b
struct bcm2835_chan *c = to_bcm2835_dma_chan(chan);
struct bcm2835_desc *d;
dma_addr_t src = 0, dst = 0;
u32 extra = BCM2835_DMA_INT_EN;
size_t frames;
-@@ -662,12 +1008,14 @@ static struct dma_async_tx_descriptor *bcm2835_dma_prep_slave_sg(
+@@ -662,12 +1008,14 @@ static struct dma_async_tx_descriptor *b
if (direction == DMA_DEV_TO_MEM) {
if (c->cfg.src_addr_width != DMA_SLAVE_BUSWIDTH_4_BYTES)
return NULL;
info |= BCM2835_DMA_D_DREQ | BCM2835_DMA_S_INC;
}
-@@ -675,7 +1023,7 @@ static struct dma_async_tx_descriptor *bcm2835_dma_prep_slave_sg(
+@@ -675,7 +1023,7 @@ static struct dma_async_tx_descriptor *b
frames = bcm2835_dma_count_frames_for_sg(c, sgl, sg_len);
/* allocate the CB chain */
info, extra,
frames, src, dst, 0, 0,
GFP_NOWAIT);
-@@ -683,7 +1031,7 @@ static struct dma_async_tx_descriptor *bcm2835_dma_prep_slave_sg(
+@@ -683,7 +1031,7 @@ static struct dma_async_tx_descriptor *b
return NULL;
/* fill in frames with scatterlist pointers */
sgl, sg_len);
return vchan_tx_prep(&c->vc, &d->vd, flags);
-@@ -698,7 +1046,8 @@ static struct dma_async_tx_descriptor *bcm2835_dma_prep_dma_cyclic(
+@@ -698,7 +1046,8 @@ static struct dma_async_tx_descriptor *b
struct bcm2835_chan *c = to_bcm2835_dma_chan(chan);
struct bcm2835_desc *d;
dma_addr_t src, dst;
u32 extra = 0;
size_t max_len = bcm2835_dma_max_frame_length(c);
size_t frames;
-@@ -736,13 +1085,15 @@ static struct dma_async_tx_descriptor *bcm2835_dma_prep_dma_cyclic(
+@@ -736,13 +1085,15 @@ static struct dma_async_tx_descriptor *b
if (direction == DMA_DEV_TO_MEM) {
if (c->cfg.src_addr_width != DMA_SLAVE_BUSWIDTH_4_BYTES)
return NULL;
src = buf_addr;
info |= BCM2835_DMA_D_DREQ | BCM2835_DMA_S_INC;
-@@ -762,7 +1113,7 @@ static struct dma_async_tx_descriptor *bcm2835_dma_prep_dma_cyclic(
+@@ -762,7 +1113,7 @@ static struct dma_async_tx_descriptor *b
* note that we need to use GFP_NOWAIT, as the ALSA i2s dmaengine
* implementation calls prep_dma_cyclic with interrupts disabled.
*/
info, extra,
frames, src, dst, buf_len,
period_len, GFP_NOWAIT);
-@@ -770,7 +1121,12 @@ static struct dma_async_tx_descriptor *bcm2835_dma_prep_dma_cyclic(
+@@ -770,7 +1121,12 @@ static struct dma_async_tx_descriptor *b
return NULL;
/* wrap around into a loop */
return vchan_tx_prep(&c->vc, &d->vd, flags);
}
-@@ -831,9 +1187,11 @@ static int bcm2835_dma_chan_init(struct bcm2835_dmadev *d, int chan_id,
+@@ -831,9 +1187,11 @@ static int bcm2835_dma_chan_init(struct
c->irq_number = irq;
c->irq_flags = irq_flags;
c->is_lite_channel = true;
return 0;
-@@ -854,7 +1212,8 @@ static void bcm2835_dma_free(struct bcm2835_dmadev *od)
+@@ -854,7 +1212,8 @@ static void bcm2835_dma_free(struct bcm2
}
static const struct of_device_id bcm2835_dma_of_match[] = {
{},
};
MODULE_DEVICE_TABLE(of, bcm2835_dma_of_match);
-@@ -898,7 +1257,10 @@ static const struct dev_pm_ops bcm2835_dma_pm_ops = {
+@@ -898,7 +1257,10 @@ static const struct dev_pm_ops bcm2835_d
static int bcm2835_dma_probe(struct platform_device *pdev)
{
void __iomem *base;
int rc;
int i, j;
-@@ -906,11 +1268,20 @@ static int bcm2835_dma_probe(struct platform_device *pdev)
+@@ -906,11 +1268,20 @@ static int bcm2835_dma_probe(struct plat
int irq_flags;
uint32_t chans_available;
char chan_name[BCM2835_DMA_CHAN_NAME_SIZE];
if (rc) {
dev_err(&pdev->dev, "Unable to set DMA mask\n");
return rc;
-@@ -922,10 +1293,17 @@ static int bcm2835_dma_probe(struct platform_device *pdev)
+@@ -922,10 +1293,17 @@ static int bcm2835_dma_probe(struct plat
dma_set_max_seg_size(&pdev->dev, 0x3FFFFFFF);
od->base = base;
dma_cap_set(DMA_SLAVE, od->ddev.cap_mask);
-@@ -961,6 +1339,14 @@ static int bcm2835_dma_probe(struct platform_device *pdev)
+@@ -961,6 +1339,14 @@ static int bcm2835_dma_probe(struct plat
return -ENOMEM;
}
/* Request DMA channel mask from device tree */
if (of_property_read_u32(pdev->dev.of_node,
"brcm,dma-channel-mask",
-@@ -970,8 +1356,36 @@ static int bcm2835_dma_probe(struct platform_device *pdev)
+@@ -970,8 +1356,36 @@ static int bcm2835_dma_probe(struct plat
goto err_no_dma;
}
/* skip masked out channels */
if (!(chans_available & (1 << i))) {
irq[i] = -1;
-@@ -994,13 +1408,17 @@ static int bcm2835_dma_probe(struct platform_device *pdev)
+@@ -994,13 +1408,17 @@ static int bcm2835_dma_probe(struct plat
irq[i] = platform_get_irq(pdev, i < 11 ? i : 11);
}
irq_flags = 0;
for (j = 0; j <= BCM2835_DMA_MAX_DMA_CHAN_SUPPORTED; j++)
if ((i != j) && (irq[j] == irq[i])) {
-@@ -1012,9 +1430,10 @@ static int bcm2835_dma_probe(struct platform_device *pdev)
+@@ -1012,9 +1430,10 @@ static int bcm2835_dma_probe(struct plat
rc = bcm2835_dma_chan_init(od, i, irq[i], irq_flags);
if (rc)
goto err_no_dma;
/* Device-tree DMA controller registration */
rc = of_dma_controller_register(pdev->dev.of_node,
-@@ -1044,7 +1463,15 @@ static void bcm2835_dma_remove(struct platform_device *pdev)
+@@ -1044,7 +1463,15 @@ static void bcm2835_dma_remove(struct pl
{
struct bcm2835_dmadev *od = platform_get_drvdata(pdev);
bcm2835_dma_free(od);
}
-@@ -1058,7 +1485,22 @@ static struct platform_driver bcm2835_dma_driver = {
+@@ -1058,7 +1485,22 @@ static struct platform_driver bcm2835_dm
},
};
MODULE_ALIAS("platform:bcm2835-dma");
MODULE_DESCRIPTION("BCM2835 DMA engine driver");
---
-2.54.0
-
drivers/rtc/rtc-pcf2123.c | 1 +
1 file changed, 1 insertion(+)
-diff --git a/drivers/rtc/rtc-pcf2123.c b/drivers/rtc/rtc-pcf2123.c
-index e714661e61a9..89cda4dea7f8 100644
--- a/drivers/rtc/rtc-pcf2123.c
+++ b/drivers/rtc/rtc-pcf2123.c
@@ -479,3 +479,4 @@ module_spi_driver(pcf2123_driver);
MODULE_DESCRIPTION("NXP PCF2123 RTC driver");
MODULE_LICENSE("GPL");
+MODULE_ALIAS("spi:rtc-pcf2123");
---
-2.54.0
-
drivers/watchdog/bcm2835_wdt.c | 49 +++++++++++++++++++---------------
1 file changed, 27 insertions(+), 22 deletions(-)
-diff --git a/drivers/watchdog/bcm2835_wdt.c b/drivers/watchdog/bcm2835_wdt.c
-index 9fcfee63905b..b2960f67d8a8 100644
--- a/drivers/watchdog/bcm2835_wdt.c
+++ b/drivers/watchdog/bcm2835_wdt.c
@@ -32,13 +32,7 @@
#define SECS_TO_WDOG_TICKS(x) ((x) << 16)
#define WDOG_TICKS_TO_SECS(x) ((x) >> 16)
-@@ -98,9 +92,24 @@ static unsigned int bcm2835_wdt_get_timeleft(struct watchdog_device *wdog)
+@@ -98,9 +92,24 @@ static unsigned int bcm2835_wdt_get_time
return WDOG_TICKS_TO_SECS(ret & PM_WDOG_TIME_SET);
}
/* use a timeout of 10 ticks (~150us) */
writel_relaxed(10 | PM_PASSWORD, wdt->base + PM_WDOG);
-@@ -118,7 +127,13 @@ static int bcm2835_restart(struct watchdog_device *wdog,
+@@ -118,7 +127,13 @@ static int bcm2835_restart(struct watchd
{
struct bcm2835_wdt *wdt = watchdog_get_drvdata(wdog);
return 0;
}
-@@ -153,19 +168,9 @@ static struct watchdog_device bcm2835_wdt_wdd = {
+@@ -153,19 +168,9 @@ static struct watchdog_device bcm2835_wd
static void bcm2835_power_off(void)
{
struct bcm2835_wdt *wdt = bcm2835_power_off_wdt;
}
static int bcm2835_wdt_probe(struct platform_device *pdev)
---
-2.54.0
-
arch/arm64/kernel/process.c | 4 +---
2 files changed, 2 insertions(+), 6 deletions(-)
-diff --git a/arch/arm/kernel/reboot.c b/arch/arm/kernel/reboot.c
-index 3f0d5c3dae11..cfdbcc9826c0 100644
--- a/arch/arm/kernel/reboot.c
+++ b/arch/arm/kernel/reboot.c
@@ -102,9 +102,7 @@ void machine_shutdown(void)
}
/*
-diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c
-index 489554931231..811f9063ab19 100644
--- a/arch/arm64/kernel/process.c
+++ b/arch/arm64/kernel/process.c
-@@ -98,9 +98,7 @@ void machine_shutdown(void)
+@@ -99,9 +99,7 @@ void machine_shutdown(void)
*/
void machine_halt(void)
{
}
/*
---
-2.54.0
-
drivers/char/hw_random/bcm2835-rng.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
-diff --git a/drivers/char/hw_random/bcm2835-rng.c b/drivers/char/hw_random/bcm2835-rng.c
-index aa2b135e3ee2..d74b2c593033 100644
--- a/drivers/char/hw_random/bcm2835-rng.c
+++ b/drivers/char/hw_random/bcm2835-rng.c
-@@ -107,8 +107,10 @@ static int bcm2835_rng_init(struct hwrng *rng)
+@@ -107,8 +107,10 @@ static int bcm2835_rng_init(struct hwrng
}
/* set warm-up count & enable */
return ret;
}
---
-2.54.0
-
arch/arm/vfp/vfpmodule.c | 25 +++++++++++++++++++------
1 file changed, 19 insertions(+), 6 deletions(-)
-diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c
-index e559ad3cd148..4d26e72b009e 100644
--- a/arch/arm/vfp/vfpmodule.c
+++ b/arch/arm/vfp/vfpmodule.c
-@@ -204,8 +204,11 @@ static int vfp_notifier(struct notifier_block *self, unsigned long cmd, void *v)
+@@ -204,8 +204,11 @@ static int vfp_notifier(struct notifier_
* case the thread migrates to a different CPU. The
* restoring is done lazily.
*/
vfp_save_state(vfp_current_hw_state[ti->cpu], fpexc);
fmxr(FPEXC, fpexc);
#endif
-@@ -554,7 +560,8 @@ void vfp_sync_hwstate(struct thread_info *thread)
+@@ -554,7 +560,8 @@ void vfp_sync_hwstate(struct thread_info
/*
* Save the last VFP state on this CPU.
*/
vfp_save_state(&thread->vfpstate, fpexc | FPEXC_EN);
fmxr(FPEXC, fpexc);
}
-@@ -620,6 +627,7 @@ int vfp_restore_user_hwstate(struct user_vfp *ufp, struct user_vfp_exc *ufp_exc)
+@@ -620,6 +627,7 @@ int vfp_restore_user_hwstate(struct user
struct thread_info *thread = current_thread_info();
struct vfp_hard_struct *hwstate = &thread->vfpstate.hard;
unsigned long fpexc;
/* Disable VFP to avoid corrupting the new thread state. */
vfp_flush_hwstate(thread);
-@@ -642,8 +650,12 @@ int vfp_restore_user_hwstate(struct user_vfp *ufp, struct user_vfp_exc *ufp_exc)
+@@ -642,8 +650,12 @@ int vfp_restore_user_hwstate(struct user
/* Ensure the VFP is enabled. */
fpexc |= FPEXC_EN;
/*
* Save the userland NEON/VFP state. Under UP,
---
-2.54.0
-
drivers/i2c/busses/i2c-bcm2835.c | 99 +++++++++++++++++++++++++++++++-
1 file changed, 98 insertions(+), 1 deletion(-)
-diff --git a/drivers/i2c/busses/i2c-bcm2835.c b/drivers/i2c/busses/i2c-bcm2835.c
-index 8554e790f8e3..e56349228c14 100644
--- a/drivers/i2c/busses/i2c-bcm2835.c
+++ b/drivers/i2c/busses/i2c-bcm2835.c
@@ -56,6 +56,18 @@
static inline void bcm2835_i2c_writel(struct bcm2835_i2c_dev *i2c_dev,
u32 reg, u32 val)
{
-@@ -257,6 +339,7 @@ static void bcm2835_i2c_start_transfer(struct bcm2835_i2c_dev *i2c_dev)
+@@ -257,6 +339,7 @@ static void bcm2835_i2c_start_transfer(s
bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_A, msg->addr);
bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_DLEN, msg->len);
bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_C, c);
}
static void bcm2835_i2c_finish_transfer(struct bcm2835_i2c_dev *i2c_dev)
-@@ -283,6 +366,7 @@ static irqreturn_t bcm2835_i2c_isr(int this_irq, void *data)
+@@ -283,6 +366,7 @@ static irqreturn_t bcm2835_i2c_isr(int t
u32 val, err;
val = bcm2835_i2c_readl(i2c_dev, BCM2835_I2C_S);
err = val & (BCM2835_I2C_S_CLKT | BCM2835_I2C_S_ERR);
if (err) {
-@@ -349,6 +433,13 @@ static int bcm2835_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[],
+@@ -349,6 +433,13 @@ static int bcm2835_i2c_xfer(struct i2c_a
unsigned long time_left;
int i;
for (i = 0; i < (num - 1); i++)
if (msgs[i].flags & I2C_M_RD) {
dev_warn_once(i2c_dev->dev,
-@@ -367,6 +458,10 @@ static int bcm2835_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[],
+@@ -367,6 +458,10 @@ static int bcm2835_i2c_xfer(struct i2c_a
bcm2835_i2c_finish_transfer(i2c_dev);
if (!time_left) {
bcm2835_i2c_writel(i2c_dev, BCM2835_I2C_C,
BCM2835_I2C_C_CLEAR);
-@@ -376,7 +471,9 @@ static int bcm2835_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[],
+@@ -376,7 +471,9 @@ static int bcm2835_i2c_xfer(struct i2c_a
if (!i2c_dev->msg_err)
return num;
if (i2c_dev->msg_err & BCM2835_I2C_S_ERR)
return -EREMOTEIO;
---
-2.54.0
-
drivers/irqchip/irq-bcm2836.c | 5 +++++
2 files changed, 17 insertions(+), 20 deletions(-)
-diff --git a/drivers/irqchip/irq-bcm2835.c b/drivers/irqchip/irq-bcm2835.c
-index 3bfb4a5b23c2..9b60e4223399 100644
--- a/drivers/irqchip/irq-bcm2835.c
+++ b/drivers/irqchip/irq-bcm2835.c
@@ -41,8 +41,6 @@
};
static struct armctrl_ic intc __read_mostly;
-@@ -129,24 +127,20 @@ static void armctrl_unmask_irq(struct irq_data *d)
+@@ -129,24 +127,20 @@ static void armctrl_unmask_irq(struct ir
if (d->hwirq >= NUMBER_IRQS) {
if (num_online_cpus() > 1) {
unsigned int data;
}
writel_relaxed(REG_FIQ_ENABLE | hwirq_to_fiq(d->hwirq),
-@@ -248,12 +242,10 @@ static int __init armctrl_of_init(struct device_node *node,
+@@ -248,12 +242,10 @@ static int __init armctrl_of_init(struct
}
if (is_2836) {
}
/* Make a duplicate irq range which is used to enable FIQ */
-diff --git a/drivers/irqchip/irq-bcm2836.c b/drivers/irqchip/irq-bcm2836.c
-index 067027467113..22519f3f4f66 100644
--- a/drivers/irqchip/irq-bcm2836.c
+++ b/drivers/irqchip/irq-bcm2836.c
@@ -22,6 +22,9 @@ struct bcm2836_arm_irqchip_intc {
static void bcm2836_arm_irqchip_mask_per_cpu_irq(unsigned int reg_offset,
unsigned int bit,
int cpu)
-@@ -323,6 +326,8 @@ static int __init bcm2836_arm_irqchip_l1_intc_of_init(struct device_node *node,
+@@ -323,6 +326,8 @@ static int __init bcm2836_arm_irqchip_l1
panic("%pOF: unable to map local interrupt registers\n", node);
}
bcm2835_init_local_timer_frequency();
intc.domain = irq_domain_create_linear(of_fwnode_handle(node), LAST_IRQ + 1,
---
-2.54.0
-
drivers/tty/serial/amba-pl011.c | 1 +
1 file changed, 1 insertion(+)
-diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
-index 7f17d288c807..f9bbfe065ba9 100644
--- a/drivers/tty/serial/amba-pl011.c
+++ b/drivers/tty/serial/amba-pl011.c
-@@ -1495,6 +1495,7 @@ static bool pl011_tx_char(struct uart_amba_port *uap, unsigned char c,
+@@ -1495,6 +1495,7 @@ static bool pl011_tx_char(struct uart_am
return false; /* unable to transmit character */
pl011_write(c, uap, REG_DR);
uap->port.icount.tx++;
return true;
---
-2.54.0
-
drivers/tty/serial/amba-pl011.c | 5 +++++
2 files changed, 11 insertions(+)
-diff --git a/Documentation/devicetree/bindings/serial/pl011.yaml b/Documentation/devicetree/bindings/serial/pl011.yaml
-index 3fcf2d042372..e7472ef4e193 100644
--- a/Documentation/devicetree/bindings/serial/pl011.yaml
+++ b/Documentation/devicetree/bindings/serial/pl011.yaml
@@ -104,6 +104,12 @@ properties:
required:
- compatible
- reg
-diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
-index f9bbfe065ba9..898504443644 100644
--- a/drivers/tty/serial/amba-pl011.c
+++ b/drivers/tty/serial/amba-pl011.c
-@@ -2895,6 +2895,11 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id)
+@@ -2895,6 +2895,11 @@ static int pl011_probe(struct amba_devic
if (IS_ERR(uap->clk))
return PTR_ERR(uap->clk);
uap->reg_offset = vendor->reg_offset;
uap->vendor = vendor;
uap->fifosize = vendor->get_fifosize(dev);
---
-2.54.0
-
drivers/tty/serial/amba-pl011.c | 4 ++++
1 file changed, 4 insertions(+)
-diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
-index 898504443644..2273ffccd2c9 100644
--- a/drivers/tty/serial/amba-pl011.c
+++ b/drivers/tty/serial/amba-pl011.c
-@@ -1528,6 +1528,10 @@ static bool pl011_tx_chars(struct uart_amba_port *uap, bool from_irq)
+@@ -1528,6 +1528,10 @@ static bool pl011_tx_chars(struct uart_a
if (likely(from_irq) && count-- == 0)
break;
if (!kfifo_peek(&tport->xmit_fifo, &c))
break;
---
-2.54.0
-
drivers/mailbox/bcm2835-mailbox.c | 18 ++++++++++++++++--
4 files changed, 35 insertions(+), 6 deletions(-)
-diff --git a/arch/arm/mach-bcm/Kconfig b/arch/arm/mach-bcm/Kconfig
-index 882a8dc508f2..653a909c5ecd 100644
--- a/arch/arm/mach-bcm/Kconfig
+++ b/arch/arm/mach-bcm/Kconfig
@@ -162,6 +162,7 @@ config ARCH_BCM2835
help
This enables support for the Broadcom BCM2711 and BCM283x SoCs.
This SoC is used in the Raspberry Pi and Roku 2 devices.
-diff --git a/arch/arm/mm/proc-v6.S b/arch/arm/mm/proc-v6.S
-index 90a01f5950b9..3ff019fb1f43 100644
--- a/arch/arm/mm/proc-v6.S
+++ b/arch/arm/mm/proc-v6.S
@@ -75,10 +75,19 @@ SYM_FUNC_END(cpu_v6_reset)
ret lr
SYM_FUNC_END(cpu_v6_do_idle)
-diff --git a/drivers/irqchip/irq-bcm2835.c b/drivers/irqchip/irq-bcm2835.c
-index 9b60e4223399..527cc962d6fd 100644
--- a/drivers/irqchip/irq-bcm2835.c
+++ b/drivers/irqchip/irq-bcm2835.c
@@ -43,7 +43,9 @@
#define FIQ_START (NR_IRQS_BANK0 + MAKE_HWIRQ(NR_BANKS - 1, 0))
static const int reg_pending[] __initconst = { 0x00, 0x04, 0x08 };
-@@ -255,10 +258,12 @@ static int __init armctrl_of_init(struct device_node *node,
+@@ -255,10 +258,12 @@ static int __init armctrl_of_init(struct
MAKE_HWIRQ(b, i) + NUMBER_IRQS);
BUG_ON(irq <= 0);
irq_set_chip(irq, &armctrl_chip);
return 0;
}
-diff --git a/drivers/mailbox/bcm2835-mailbox.c b/drivers/mailbox/bcm2835-mailbox.c
-index ea12fb8d2401..8c54980b4b7e 100644
--- a/drivers/mailbox/bcm2835-mailbox.c
+++ b/drivers/mailbox/bcm2835-mailbox.c
@@ -45,12 +45,15 @@
struct bcm2835_mbox {
void __iomem *regs;
-@@ -144,7 +147,7 @@ static int bcm2835_mbox_probe(struct platform_device *pdev)
+@@ -144,7 +147,7 @@ static int bcm2835_mbox_probe(struct pla
return -ENOMEM;
spin_lock_init(&mbox->lock);
bcm2835_mbox_irq, IRQF_NO_SUSPEND, dev_name(dev),
mbox);
if (ret) {
-@@ -193,7 +196,18 @@ static struct platform_driver bcm2835_mbox_driver = {
+@@ -193,7 +196,18 @@ static struct platform_driver bcm2835_mb
},
.probe = bcm2835_mbox_probe,
};
MODULE_AUTHOR("Lubomir Rintel <lkundrak@v3.sk>");
MODULE_DESCRIPTION("BCM2835 mailbox IPC driver");
---
-2.54.0
-
create mode 100644 drivers/usb/host/dwc_otg/test/test_mod_param.pl
create mode 100644 drivers/usb/host/dwc_otg/test/test_sysfs.pl
-diff --git a/arch/arm/include/asm/irqflags.h b/arch/arm/include/asm/irqflags.h
-index aeec7f24eb75..a3b186608c60 100644
--- a/arch/arm/include/asm/irqflags.h
+++ b/arch/arm/include/asm/irqflags.h
-@@ -163,13 +163,23 @@ static inline unsigned long arch_local_save_flags(void)
+@@ -163,13 +163,23 @@ static inline unsigned long arch_local_s
}
/*
:
: "r" (flags)
: "memory", "cc");
-diff --git a/arch/arm/kernel/fiqasm.S b/arch/arm/kernel/fiqasm.S
-index 8dd26e1a9bd6..eef484756af2 100644
--- a/arch/arm/kernel/fiqasm.S
+++ b/arch/arm/kernel/fiqasm.S
@@ -47,3 +47,7 @@ ENTRY(__get_fiq_regs)
+ENTRY(__FIQ_Branch)
+ mov pc, r8
+ENDPROC(__FIQ_Branch)
-diff --git a/drivers/usb/Makefile b/drivers/usb/Makefile
-index 949eca0adebe..80af388baede 100644
--- a/drivers/usb/Makefile
+++ b/drivers/usb/Makefile
@@ -9,6 +9,7 @@ obj-$(CONFIG_USB_COMMON) += common/
obj-$(CONFIG_USB_DWC3) += dwc3/
obj-$(CONFIG_USB_DWC2) += dwc2/
obj-$(CONFIG_USB_ISP1760) += isp1760/
-diff --git a/drivers/usb/core/generic.c b/drivers/usb/core/generic.c
-index a48994e11ef3..88723aea8488 100644
--- a/drivers/usb/core/generic.c
+++ b/drivers/usb/core/generic.c
-@@ -202,6 +202,7 @@ int usb_choose_configuration(struct usb_device *udev)
+@@ -202,6 +202,7 @@ int usb_choose_configuration(struct usb_
dev_warn(&udev->dev,
"no configuration chosen from %d choice%s\n",
num_configs, str_plural(num_configs));
}
return i;
}
-diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
-index 256fe8c86828..49107595caa8 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
-@@ -5788,7 +5788,7 @@ static void port_event(struct usb_hub *hub, int port1)
+@@ -5788,7 +5788,7 @@ static void port_event(struct usb_hub *h
port_dev->over_current_count++;
port_over_current_notify(port_dev);
port_dev->over_current_count);
usb_clear_port_feature(hdev, port1,
USB_PORT_FEAT_C_OVER_CURRENT);
-diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
-index 43522f1d6b2b..d25022abdbdc 100644
--- a/drivers/usb/core/message.c
+++ b/drivers/usb/core/message.c
-@@ -2238,6 +2238,85 @@ int usb_set_configuration(struct usb_device *dev, int configuration)
+@@ -2238,6 +2238,85 @@ free_interfaces:
if (cp->string == NULL &&
!(dev->quirks & USB_QUIRK_CONFIG_INTF_STRINGS))
cp->string = usb_cache_string(dev, cp->desc.iConfiguration);
/* Now that the interfaces are installed, re-enable LPM. */
usb_unlocked_enable_lpm(dev);
-diff --git a/drivers/usb/core/otg_productlist.h b/drivers/usb/core/otg_productlist.h
-index db67df29fb2b..b16e528859a8 100644
--- a/drivers/usb/core/otg_productlist.h
+++ b/drivers/usb/core/otg_productlist.h
@@ -11,33 +11,82 @@
static int is_targeted(struct usb_device *dev)
{
struct usb_device_id *id = productlist_table;
-@@ -87,16 +136,57 @@ static int is_targeted(struct usb_device *dev)
+@@ -87,16 +136,57 @@ static int is_targeted(struct usb_device
continue;
return 1;
+ if ((id->match_flags & USB_DEVICE_ID_MATCH_VENDOR) &&
+ id->idVendor != le16_to_cpu(dev->descriptor.idVendor))
+ continue;
-
++
+ if ((id->match_flags & USB_DEVICE_ID_MATCH_PRODUCT) &&
+ id->idProduct != le16_to_cpu(dev->descriptor.idProduct))
+ continue;
-
-- /* OTG MESSAGE: report errors here, customize to match your product */
-- dev_err(&dev->dev, "device v%04x p%04x is not supported\n",
-- le16_to_cpu(dev->descriptor.idVendor),
-- le16_to_cpu(dev->descriptor.idProduct));
++
+ /* No need to test id->bcdDevice_lo != 0, since 0 is never
+ greater than any unsigned number. */
+ if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_LO) &&
+ if ((id->match_flags & USB_DEVICE_ID_MATCH_DEV_PROTOCOL) &&
+ (id->bDeviceProtocol != dev->descriptor.bDeviceProtocol))
+ continue;
-+
+
+ return 1;
+ }
+ }
-+
+
+- /* OTG MESSAGE: report errors here, customize to match your product */
+- dev_err(&dev->dev, "device v%04x p%04x is not supported\n",
+- le16_to_cpu(dev->descriptor.idVendor),
+- le16_to_cpu(dev->descriptor.idProduct));
+ /* add other match criteria here ... */
+ report_errors(dev);
return 0;
}
-diff --git a/drivers/usb/gadget/file_storage.c b/drivers/usb/gadget/file_storage.c
-new file mode 100644
-index 000000000000..a896d73f7a93
--- /dev/null
+++ b/drivers/usb/gadget/file_storage.c
@@ -0,0 +1,3676 @@
+ kref_put(&fsg->ref, fsg_release);
+}
+module_exit(fsg_cleanup);
-diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
-index c4f17ce5c77b..08e80deee437 100644
--- a/drivers/usb/host/Kconfig
+++ b/drivers/usb/host/Kconfig
@@ -687,6 +687,16 @@ config USB_RENESAS_USBHS_HCD
config USB_HCD_BCMA
tristate "BCMA usb host driver"
depends on BCMA
-diff --git a/drivers/usb/host/Makefile b/drivers/usb/host/Makefile
-index 4df946c05ba0..ca260ef6df90 100644
--- a/drivers/usb/host/Makefile
+++ b/drivers/usb/host/Makefile
-@@ -81,6 +81,7 @@ obj-$(CONFIG_USB_XHCI_TEGRA) += xhci-tegra.o
+@@ -81,6 +81,7 @@ obj-$(CONFIG_USB_XHCI_TEGRA) += xhci-teg
obj-$(CONFIG_USB_SL811_HCD) += sl811-hcd.o
obj-$(CONFIG_USB_SL811_CS) += sl811_cs.o
obj-$(CONFIG_USB_R8A66597_HCD) += r8a66597-hcd.o
obj-$(CONFIG_USB_FSL_USB2) += fsl-mph-dr-of.o
obj-$(CONFIG_USB_EHCI_FSL) += fsl-mph-dr-of.o
obj-$(CONFIG_USB_EHCI_FSL) += ehci-fsl.o
-diff --git a/drivers/usb/host/dwc_common_port/Makefile b/drivers/usb/host/dwc_common_port/Makefile
-new file mode 100644
-index 000000000000..f10d466d1aea
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/Makefile
@@ -0,0 +1,58 @@
+
+clean:
+ rm -rf *.o *.ko .*.cmd *.mod.c .*.o.d .*.o.tmp modules.order Module.markers Module.symvers .tmp_versions/
-diff --git a/drivers/usb/host/dwc_common_port/Makefile.fbsd b/drivers/usb/host/dwc_common_port/Makefile.fbsd
-new file mode 100644
-index 000000000000..45db9915b9d3
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/Makefile.fbsd
@@ -0,0 +1,17 @@
+ dwc_common_fbsd.c dwc_mem.c
+
+.include <bsd.kmod.mk>
-diff --git a/drivers/usb/host/dwc_common_port/Makefile.linux b/drivers/usb/host/dwc_common_port/Makefile.linux
-new file mode 100644
-index 000000000000..0cef7b461bd5
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/Makefile.linux
@@ -0,0 +1,49 @@
+
+clean:
+ rm -rf *.o *.ko .*.cmd *.mod.c .*.o.d .*.o.tmp modules.order Module.markers Module.symvers .tmp_versions/
-diff --git a/drivers/usb/host/dwc_common_port/changes.txt b/drivers/usb/host/dwc_common_port/changes.txt
-new file mode 100644
-index 000000000000..f6839f92c276
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/changes.txt
@@ -0,0 +1,174 @@
+A DWC_LIBMODULE #define has also been added. If this is not defined, then the
+module code in dwc_common_linux.c is not compiled in. This allows linking the
+library code directly into a driver module, instead of as a standalone module.
-diff --git a/drivers/usb/host/dwc_common_port/doc/doxygen.cfg b/drivers/usb/host/dwc_common_port/doc/doxygen.cfg
-new file mode 100644
-index 000000000000..89aa887af29d
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/doc/doxygen.cfg
@@ -0,0 +1,270 @@
+# Configuration::additions related to the search engine
+#---------------------------------------------------------------------------
+SEARCHENGINE = NO
-diff --git a/drivers/usb/host/dwc_common_port/dwc_cc.c b/drivers/usb/host/dwc_common_port/dwc_cc.c
-new file mode 100644
-index 000000000000..5ec2ae28698c
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_cc.c
@@ -0,0 +1,532 @@
+}
+
+#endif /* DWC_CCLIB */
-diff --git a/drivers/usb/host/dwc_common_port/dwc_cc.h b/drivers/usb/host/dwc_common_port/dwc_cc.h
-new file mode 100644
-index 000000000000..f86e6f21792b
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_cc.h
@@ -0,0 +1,224 @@
+#endif
+
+#endif /* _DWC_CC_H_ */
-diff --git a/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c b/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c
-new file mode 100644
-index 000000000000..6dd04b58f8f6
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_common_fbsd.c
@@ -0,0 +1,1308 @@
+{
+ return wq->pending;
+}
-diff --git a/drivers/usb/host/dwc_common_port/dwc_common_linux.c b/drivers/usb/host/dwc_common_port/dwc_common_linux.c
-new file mode 100644
-index 000000000000..43a2c60c2b5f
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_common_linux.c
@@ -0,0 +1,1409 @@
+MODULE_LICENSE ("GPL");
+
+#endif /* DWC_LIBMODULE */
-diff --git a/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c b/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c
-new file mode 100644
-index 000000000000..49b07e172264
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_common_nbsd.c
@@ -0,0 +1,1275 @@
+{
+ return wq->pending;
+}
-diff --git a/drivers/usb/host/dwc_common_port/dwc_crypto.c b/drivers/usb/host/dwc_common_port/dwc_crypto.c
-new file mode 100644
-index 000000000000..3b0353296148
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_crypto.c
@@ -0,0 +1,308 @@
+}
+
+#endif /* DWC_CRYPTOLIB */
-diff --git a/drivers/usb/host/dwc_common_port/dwc_crypto.h b/drivers/usb/host/dwc_common_port/dwc_crypto.h
-new file mode 100644
-index 000000000000..26fcddcfe9ba
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_crypto.h
@@ -0,0 +1,111 @@
+#endif
+
+#endif /* _DWC_CRYPTO_H_ */
-diff --git a/drivers/usb/host/dwc_common_port/dwc_dh.c b/drivers/usb/host/dwc_common_port/dwc_dh.c
-new file mode 100644
-index 000000000000..2b429a32aaf0
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_dh.c
@@ -0,0 +1,291 @@
+#endif /* !CONFIG_MACH_IPMATE */
+
+#endif /* DWC_CRYPTOLIB */
-diff --git a/drivers/usb/host/dwc_common_port/dwc_dh.h b/drivers/usb/host/dwc_common_port/dwc_dh.h
-new file mode 100644
-index 000000000000..25c1cc0d588a
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_dh.h
@@ -0,0 +1,106 @@
+#endif
+
+#endif /* _DWC_DH_H_ */
-diff --git a/drivers/usb/host/dwc_common_port/dwc_list.h b/drivers/usb/host/dwc_common_port/dwc_list.h
-new file mode 100644
-index 000000000000..4ce560df0cae
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_list.h
@@ -0,0 +1,594 @@
+#endif
+
+#endif /* _DWC_LIST_H_ */
-diff --git a/drivers/usb/host/dwc_common_port/dwc_mem.c b/drivers/usb/host/dwc_common_port/dwc_mem.c
-new file mode 100644
-index 000000000000..ad645ff1ba7e
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_mem.c
@@ -0,0 +1,245 @@
+}
+
+#endif /* DWC_DEBUG_MEMORY */
-diff --git a/drivers/usb/host/dwc_common_port/dwc_modpow.c b/drivers/usb/host/dwc_common_port/dwc_modpow.c
-new file mode 100644
-index 000000000000..20045381208a
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_modpow.c
@@ -0,0 +1,636 @@
+#endif /* CONFIG_MACH_IPMATE */
+
+#endif /*DWC_CRYPTOLIB */
-diff --git a/drivers/usb/host/dwc_common_port/dwc_modpow.h b/drivers/usb/host/dwc_common_port/dwc_modpow.h
-new file mode 100644
-index 000000000000..64f00c276e71
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_modpow.h
@@ -0,0 +1,34 @@
+#endif
+
+#endif /* _LINUX_BIGNUM_H */
-diff --git a/drivers/usb/host/dwc_common_port/dwc_notifier.c b/drivers/usb/host/dwc_common_port/dwc_notifier.c
-new file mode 100644
-index 000000000000..8b3772afe11d
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_notifier.c
@@ -0,0 +1,319 @@
+}
+
+#endif /* DWC_NOTIFYLIB */
-diff --git a/drivers/usb/host/dwc_common_port/dwc_notifier.h b/drivers/usb/host/dwc_common_port/dwc_notifier.h
-new file mode 100644
-index 000000000000..4a8cdfe565b1
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_notifier.h
@@ -0,0 +1,122 @@
+#endif
+
+#endif /* __DWC_NOTIFIER_H__ */
-diff --git a/drivers/usb/host/dwc_common_port/dwc_os.h b/drivers/usb/host/dwc_common_port/dwc_os.h
-new file mode 100644
-index 000000000000..7a4052964e95
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/dwc_os.h
@@ -0,0 +1,1275 @@
+#endif
+
+#endif /* _DWC_OS_H_ */
-diff --git a/drivers/usb/host/dwc_common_port/usb.h b/drivers/usb/host/dwc_common_port/usb.h
-new file mode 100644
-index 000000000000..b1cedb1876b7
--- /dev/null
+++ b/drivers/usb/host/dwc_common_port/usb.h
@@ -0,0 +1,275 @@
+#endif
+
+#endif /* _USB_H_ */
-diff --git a/drivers/usb/host/dwc_otg/Makefile b/drivers/usb/host/dwc_otg/Makefile
-new file mode 100644
-index 000000000000..8cbe3e684f26
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/Makefile
@@ -0,0 +1,86 @@
+ rm -rf *.o *.ko .*cmd *.mod.c .tmp_versions Module.symvers
+
+endif
-diff --git a/drivers/usb/host/dwc_otg/doc/doxygen.cfg b/drivers/usb/host/dwc_otg/doc/doxygen.cfg
-new file mode 100644
-index 000000000000..712b057ef7c2
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/doc/doxygen.cfg
@@ -0,0 +1,224 @@
+# Configuration::additions related to the search engine
+#---------------------------------------------------------------------------
+SEARCHENGINE = NO
-diff --git a/drivers/usb/host/dwc_otg/dummy_audio.c b/drivers/usb/host/dwc_otg/dummy_audio.c
-new file mode 100644
-index 000000000000..7cf69282abce
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dummy_audio.c
@@ -0,0 +1,1574 @@
+ remove_proc_entry("isoc_test", NULL);
+}
+module_exit (cleanup);
-diff --git a/drivers/usb/host/dwc_otg/dwc_cfi_common.h b/drivers/usb/host/dwc_otg/dwc_cfi_common.h
-new file mode 100644
-index 000000000000..7770e201ad3b
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_cfi_common.h
@@ -0,0 +1,142 @@
+typedef struct cfi_string cfi_string_t;
+
+#endif
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_adp.c b/drivers/usb/host/dwc_otg/dwc_otg_adp.c
-new file mode 100644
-index 000000000000..cb49aedd51f6
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_adp.c
@@ -0,0 +1,842 @@
+#endif
+ return 1;
+}
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_adp.h b/drivers/usb/host/dwc_otg/dwc_otg_adp.h
-new file mode 100644
-index 000000000000..4110b25d2002
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_adp.h
@@ -0,0 +1,80 @@
+extern int32_t dwc_otg_adp_handle_srp_intr(dwc_otg_core_if_t * core_if);
+
+#endif //__DWC_OTG_ADP_H__
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_attr.c b/drivers/usb/host/dwc_otg/dwc_otg_attr.c
-new file mode 100644
-index 000000000000..2f8ea77c3892
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_attr.c
@@ -0,0 +1,1212 @@
+ device_remove_file(&dev->dev, &dev_attr_sleep_status);
+#endif
+}
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_attr.h b/drivers/usb/host/dwc_otg/dwc_otg_attr.h
-new file mode 100644
-index 000000000000..e10b67f97c52
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_attr.h
@@ -0,0 +1,89 @@
+#endif
+ );
+#endif
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_cfi.c b/drivers/usb/host/dwc_otg/dwc_otg_cfi.c
-new file mode 100644
-index 000000000000..e73016ef863d
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_cfi.c
@@ -0,0 +1,1874 @@
+}
+
+#endif //DWC_UTE_CFI
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_cfi.h b/drivers/usb/host/dwc_otg/dwc_otg_cfi.h
-new file mode 100644
-index 000000000000..55fd337a283c
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_cfi.h
@@ -0,0 +1,320 @@
+int cfi_setup(struct dwc_otg_pcd *pcd, struct cfi_usb_ctrlrequest *ctrl);
+
+#endif /* (__DWC_OTG_CFI_H__) */
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_cil.c b/drivers/usb/host/dwc_otg/dwc_otg_cil.c
-new file mode 100644
-index 000000000000..b3dd2ad5237c
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_cil.c
@@ -0,0 +1,7121 @@
+ dwc_otg_pcd_start_srp_timer(core_if);
+ return;
+}
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_cil.h b/drivers/usb/host/dwc_otg/dwc_otg_cil.h
-new file mode 100644
-index 000000000000..79dbf8374f02
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_cil.h
@@ -0,0 +1,1464 @@
+//////////////////////////////////////////////////////////////////////
+
+#endif
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c b/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c
-new file mode 100644
-index 000000000000..57a9fe4e5ee0
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_cil_intr.c
@@ -0,0 +1,1578 @@
+ DWC_SPINUNLOCK(core_if->lock);
+ return retval;
+}
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_core_if.h b/drivers/usb/host/dwc_otg/dwc_otg_core_if.h
-new file mode 100644
-index 000000000000..4138fd173337
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_core_if.h
@@ -0,0 +1,705 @@
+/** @} */
+
+#endif /* __DWC_CORE_IF_H__ */
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_dbg.h b/drivers/usb/host/dwc_otg/dwc_otg_dbg.h
-new file mode 100644
-index 000000000000..ccc24e010e44
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_dbg.h
@@ -0,0 +1,117 @@
+
+#endif /*DEBUG*/
+#endif
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_driver.c b/drivers/usb/host/dwc_otg/dwc_otg_driver.c
-new file mode 100644
-index 000000000000..b3e72bffafa1
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_driver.c
@@ -0,0 +1,1725 @@
+ </td></tr>
+
+*/
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_driver.h b/drivers/usb/host/dwc_otg/dwc_otg_driver.h
-new file mode 100644
-index 000000000000..6a8be63a0ab2
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_driver.h
@@ -0,0 +1,86 @@
+#endif
+
+#endif
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c
-new file mode 100644
-index 000000000000..98e4563fee02
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c
@@ -0,0 +1,1370 @@
+ mb();
+ fiq_fsm_spin_unlock(&state->lock);
+}
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h
-new file mode 100644
-index 000000000000..1399d579eb58
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h
@@ -0,0 +1,476 @@
+extern void dwc_otg_fiq_nop(struct fiq_state *state);
+
+#endif /* DWC_OTG_FIQ_FSM_H_ */
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S b/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S
-new file mode 100644
-index 000000000000..ffa8d21bc61e
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_fiq_stub.S
@@ -0,0 +1,80 @@
+ subs pc, lr, #4;
+_dwc_otg_fiq_stub_end:
+END(_dwc_otg_fiq_stub)
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
-new file mode 100644
-index 000000000000..9e05e075172b
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.c
@@ -0,0 +1,4362 @@
+}
+
+#endif /* DWC_DEVICE_ONLY */
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd.h b/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
-new file mode 100644
-index 000000000000..e0611c1592b1
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd.h
@@ -0,0 +1,870 @@
+#endif
+#endif
+#endif /* DWC_DEVICE_ONLY */
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c
-new file mode 100644
-index 000000000000..0cf505019090
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_ddma.c
@@ -0,0 +1,1135 @@
+}
+
+#endif /* DWC_DEVICE_ONLY */
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h b/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h
-new file mode 100644
-index 000000000000..847c547d7ebb
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h
@@ -0,0 +1,441 @@
+
+#endif /* __DWC_HCD_IF_H__ */
+#endif /* DWC_DEVICE_ONLY */
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
-new file mode 100644
-index 000000000000..2a1617b475fc
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
@@ -0,0 +1,2757 @@
+ return retval;
+}
+#endif /* DWC_DEVICE_ONLY */
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
-new file mode 100644
-index 000000000000..430a1a510295
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
@@ -0,0 +1,1081 @@
+}
+
+#endif /* DWC_DEVICE_ONLY */
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c b/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
-new file mode 100644
-index 000000000000..d8a49a8568f2
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_queue.c
@@ -0,0 +1,974 @@
+}
+
+#endif /* DWC_DEVICE_ONLY */
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h b/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h
-new file mode 100644
-index 000000000000..0bfa98157169
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_os_dep.h
@@ -0,0 +1,200 @@
+
+
+#endif /* _DWC_OS_DEP_H_ */
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_pcd.c b/drivers/usb/host/dwc_otg/dwc_otg_pcd.c
-new file mode 100644
-index 000000000000..ec2d45167a0f
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_pcd.c
@@ -0,0 +1,2723 @@
+}
+
+#endif /* DWC_HOST_ONLY */
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_pcd.h b/drivers/usb/host/dwc_otg/dwc_otg_pcd.h
-new file mode 100644
-index 000000000000..fffc4c9d8bc6
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_pcd.h
@@ -0,0 +1,277 @@
+extern void do_test_mode(void *data);
+#endif
+#endif /* DWC_HOST_ONLY */
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h b/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h
-new file mode 100644
-index 000000000000..badc93a41c38
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_pcd_if.h
@@ -0,0 +1,381 @@
+#endif /* __DWC_PCD_IF_H__ */
+
+#endif /* DWC_HOST_ONLY */
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c b/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c
-new file mode 100644
-index 000000000000..9a255a96c209
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_pcd_intr.c
@@ -0,0 +1,5148 @@
+}
+
+#endif /* DWC_HOST_ONLY */
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c b/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c
-new file mode 100644
-index 000000000000..e214955d6914
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_pcd_linux.c
@@ -0,0 +1,1262 @@
+}
+
+#endif /* DWC_HOST_ONLY */
-diff --git a/drivers/usb/host/dwc_otg/dwc_otg_regs.h b/drivers/usb/host/dwc_otg/dwc_otg_regs.h
-new file mode 100644
-index 000000000000..8e0e7b569f1a
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/dwc_otg_regs.h
@@ -0,0 +1,2550 @@
+} gpwrdn_data_t;
+
+#endif
-diff --git a/drivers/usb/host/dwc_otg/test/Makefile b/drivers/usb/host/dwc_otg/test/Makefile
-new file mode 100644
-index 000000000000..fc453759dea3
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/test/Makefile
@@ -0,0 +1,16 @@
+ else echo "=======> $$test, FAILED" ; \
+ fi \
+ done
-diff --git a/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm b/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm
-new file mode 100644
-index 000000000000..85e55fd6ddbc
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/test/dwc_otg_test.pm
@@ -0,0 +1,337 @@
+);
+
+1;
-diff --git a/drivers/usb/host/dwc_otg/test/test_mod_param.pl b/drivers/usb/host/dwc_otg/test/test_mod_param.pl
-new file mode 100644
-index 000000000000..dc3820df577b
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/test/test_mod_param.pl
@@ -0,0 +1,133 @@
+
+test_main();
+0;
-diff --git a/drivers/usb/host/dwc_otg/test/test_sysfs.pl b/drivers/usb/host/dwc_otg/test/test_sysfs.pl
-new file mode 100644
-index 000000000000..cdc9963176e5
--- /dev/null
+++ b/drivers/usb/host/dwc_otg/test/test_sysfs.pl
@@ -0,0 +1,193 @@
+
+test_main();
+0;
---
-2.54.0
-
6 files changed, 2204 insertions(+), 1602 deletions(-)
create mode 100644 drivers/video/fbdev/bcm2708_fb.c
-diff --git a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig
-index a257b739188d..9353d51f38d3 100644
--- a/drivers/video/fbdev/Kconfig
+++ b/drivers/video/fbdev/Kconfig
@@ -61,6 +61,19 @@ config FB_MACMODES
config FB_GRVGA
tristate "Aeroflex Gaisler framebuffer support"
depends on FB && SPARC
-diff --git a/drivers/video/fbdev/Makefile b/drivers/video/fbdev/Makefile
-index b3d12f977c06..ee9b2c3c7206 100644
--- a/drivers/video/fbdev/Makefile
+++ b/drivers/video/fbdev/Makefile
-@@ -12,6 +12,7 @@ obj-$(CONFIG_FB_SBUS) += sbuslib.o
+@@ -12,6 +12,7 @@ obj-$(CONFIG_FB_SBUS) += sbusli
obj-$(CONFIG_FB_WMT_GE_ROPS) += wmt_ge_rops.o
# Hardware specific drivers go first
obj-$(CONFIG_FB_AMIGA) += amifb.o c2p_planar.o
obj-$(CONFIG_FB_ARC) += arcfb.o
obj-$(CONFIG_FB_CLPS711X) += clps711x-fb.o
-diff --git a/drivers/video/fbdev/bcm2708_fb.c b/drivers/video/fbdev/bcm2708_fb.c
-new file mode 100644
-index 000000000000..91f3e55538bf
--- /dev/null
+++ b/drivers/video/fbdev/bcm2708_fb.c
@@ -0,0 +1,1262 @@
+MODULE_PARM_DESC(fbheight, "Height of ARM Framebuffer");
+MODULE_PARM_DESC(fbdepth, "Bit depth of ARM Framebuffer");
+MODULE_PARM_DESC(fbswap, "Swap order of red and blue in 24 and 32 bit modes");
-diff --git a/drivers/video/fbdev/core/fb_chrdev.c b/drivers/video/fbdev/core/fb_chrdev.c
-index 4ebd16b7e3b8..e3dd94bb7ef5 100644
--- a/drivers/video/fbdev/core/fb_chrdev.c
+++ b/drivers/video/fbdev/core/fb_chrdev.c
-@@ -59,6 +59,30 @@ static ssize_t fb_write(struct file *file, const char __user *buf, size_t count,
+@@ -59,6 +59,30 @@ static ssize_t fb_write(struct file *fil
return info->fbops->fb_write(info, buf, count, ppos);
}
static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,
unsigned long arg)
{
-@@ -67,6 +91,7 @@ static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,
+@@ -67,6 +91,7 @@ static long do_fb_ioctl(struct fb_info *
struct fb_fix_screeninfo fix;
struct fb_cmap cmap_from;
struct fb_cmap_user cmap;
void __user *argp = (void __user *)arg;
long ret = 0;
-@@ -148,6 +173,15 @@ static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,
+@@ -148,6 +173,15 @@ static long do_fb_ioctl(struct fb_info *
unlock_fb_info(info);
console_unlock();
break;
default:
lock_fb_info(info);
fb = info->fbops;
-@@ -287,6 +321,7 @@ static long fb_compat_ioctl(struct file *file, unsigned int cmd,
+@@ -287,6 +321,7 @@ static long fb_compat_ioctl(struct file
case FBIOPAN_DISPLAY:
case FBIOGET_CON2FBMAP:
case FBIOPUT_CON2FBMAP:
arg = (unsigned long) compat_ptr(arg);
fallthrough;
case FBIOBLANK:
-diff --git a/drivers/video/logo/logo_linux_clut224.ppm b/drivers/video/logo/logo_linux_clut224.ppm
-index 3c14e43b82fe..7626beb6a5bb 100644
--- a/drivers/video/logo/logo_linux_clut224.ppm
+++ b/drivers/video/logo/logo_linux_clut224.ppm
@@ -1,1604 +1,883 @@
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0
-diff --git a/include/uapi/linux/fb.h b/include/uapi/linux/fb.h
-index 22acaaec7b1c..eab4c7f3d833 100644
--- a/include/uapi/linux/fb.h
+++ b/include/uapi/linux/fb.h
@@ -36,6 +36,12 @@
struct fb_fillrect {
__u32 dx; /* screen-relative */
__u32 dy;
---
-2.54.0
-
create mode 100644 drivers/dma/bcm2708-dmaengine.c
create mode 100644 include/linux/platform_data/dma-bcm2708.h
-diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig
-index cab445e9b9a0..4ddb58fb0959 100644
--- a/drivers/dma/Kconfig
+++ b/drivers/dma/Kconfig
@@ -143,7 +143,7 @@ config BCM_SBA_RAID
config XGENE_DMA
tristate "APM X-Gene DMA support"
depends on ARCH_XGENE || COMPILE_TEST
-diff --git a/drivers/dma/Makefile b/drivers/dma/Makefile
-index a54d7688392b..d45d964899b4 100644
--- a/drivers/dma/Makefile
+++ b/drivers/dma/Makefile
@@ -22,6 +22,7 @@ obj-$(CONFIG_AT_HDMAC) += at_hdmac.o
obj-$(CONFIG_DMA_BCM2835) += bcm2835-dma.o
obj-$(CONFIG_DMA_JZ4780) += dma-jz4780.o
obj-$(CONFIG_DMA_SA11X0) += sa11x0-dma.o
-diff --git a/drivers/dma/bcm2708-dmaengine.c b/drivers/dma/bcm2708-dmaengine.c
-new file mode 100644
-index 000000000000..a9a7f92584c8
--- /dev/null
+++ b/drivers/dma/bcm2708-dmaengine.c
@@ -0,0 +1,281 @@
+EXPORT_SYMBOL(bcm_dmaman_remove);
+
+MODULE_LICENSE("GPL");
-diff --git a/include/linux/platform_data/dma-bcm2708.h b/include/linux/platform_data/dma-bcm2708.h
-new file mode 100644
-index 000000000000..6ca874d332a8
--- /dev/null
+++ b/include/linux/platform_data/dma-bcm2708.h
@@ -0,0 +1,143 @@
+#endif /* CONFIG_DMA_BCM2708 || CONFIG_DMA_BCM2708_MODULE */
+
+#endif /* _PLAT_BCM2708_DMA_H */
---
-2.54.0
-
9 files changed, 1641 insertions(+), 5 deletions(-)
create mode 100644 drivers/mmc/host/bcm2835-mmc.c
-diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
-index c0ffe0817fd4..b90bbd28acc8 100644
--- a/drivers/mmc/core/block.c
+++ b/drivers/mmc/core/block.c
@@ -180,6 +180,13 @@ static DEFINE_MUTEX(open_lock);
static inline int mmc_blk_part_switch(struct mmc_card *card,
unsigned int part_type);
static void mmc_blk_rw_rq_prep(struct mmc_queue_req *mqrq,
-@@ -3265,6 +3272,8 @@ static int mmc_blk_probe(struct mmc_card *card)
+@@ -3278,6 +3285,8 @@ static int mmc_blk_probe(struct mmc_card
{
struct mmc_blk_data *md;
int ret = 0;
/*
* Check that the card supports the command class(es) we need.
-@@ -3272,7 +3281,16 @@ static int mmc_blk_probe(struct mmc_card *card)
+@@ -3285,7 +3294,16 @@ static int mmc_blk_probe(struct mmc_card
if (!(card->csd.cmdclass & CCC_BLOCK_READ))
return -ENODEV;
card->complete_wq = alloc_workqueue("mmc_complete",
WQ_MEM_RECLAIM | WQ_HIGHPRI, 0);
-@@ -3287,6 +3305,17 @@ static int mmc_blk_probe(struct mmc_card *card)
+@@ -3300,6 +3318,17 @@ static int mmc_blk_probe(struct mmc_card
goto out_free;
}
ret = mmc_blk_alloc_parts(card, md);
if (ret)
goto out;
-diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
-index 860378bea557..0c51f3df9537 100644
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
@@ -1861,7 +1861,8 @@ EXPORT_SYMBOL(mmc_erase);
}
EXPORT_SYMBOL(mmc_card_can_erase);
-diff --git a/drivers/mmc/core/quirks.h b/drivers/mmc/core/quirks.h
-index c417ed34c057..832ddaffa9ef 100644
--- a/drivers/mmc/core/quirks.h
+++ b/drivers/mmc/core/quirks.h
-@@ -153,6 +153,20 @@ static const struct mmc_fixup __maybe_unused mmc_blk_fixups[] = {
- MMC_FIXUP("M62704", CID_MANFID_KINGSTON, 0x0100, add_quirk_mmc,
- MMC_QUIRK_TRIM_BROKEN),
+@@ -162,6 +162,20 @@ static const struct mmc_fixup __maybe_un
+ MMC_FIXUP("IB2932", CID_MANFID_KINGSTON, 0x0100, add_quirk_mmc,
+ MMC_QUIRK_FIXED_SECURE_ERASE_TRIM_TIME),
+ /*
+ * Some SD cards reports discard support while they don't
END_FIXUP
};
-diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
-index c94ae4794545..85e418954f20 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -5,6 +5,35 @@
config MMC_DEBUG
bool "MMC host drivers debugging"
depends on MMC != n
-diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile
-index 5057fea8afb6..f0cb916d248f 100644
--- a/drivers/mmc/host/Makefile
+++ b/drivers/mmc/host/Makefile
-@@ -23,6 +23,7 @@ obj-$(CONFIG_MMC_SDHCI_F_SDH30) += sdhci_f_sdh30.o
+@@ -23,6 +23,7 @@ obj-$(CONFIG_MMC_SDHCI_F_SDH30) += sdhci
obj-$(CONFIG_MMC_SDHCI_MILBEAUT) += sdhci-milbeaut.o
obj-$(CONFIG_MMC_SDHCI_SPEAR) += sdhci-spear.o
obj-$(CONFIG_MMC_SDHCI_AM654) += sdhci_am654.o
obj-$(CONFIG_MMC_WBSD) += wbsd.o
obj-$(CONFIG_MMC_AU1X) += au1xmmc.o
obj-$(CONFIG_MMC_ALCOR) += alcor.o
-diff --git a/drivers/mmc/host/bcm2835-mmc.c b/drivers/mmc/host/bcm2835-mmc.c
-new file mode 100644
-index 000000000000..c0d25994b166
--- /dev/null
+++ b/drivers/mmc/host/bcm2835-mmc.c
@@ -0,0 +1,1560 @@
+MODULE_DESCRIPTION("BCM2835 SDHCI driver");
+MODULE_LICENSE("GPL v2");
+MODULE_AUTHOR("Gellert Weisz");
-diff --git a/drivers/mmc/host/sdhci-iproc.c b/drivers/mmc/host/sdhci-iproc.c
-index 35ef5c5f5146..a2c5e886bd35 100644
--- a/drivers/mmc/host/sdhci-iproc.c
+++ b/drivers/mmc/host/sdhci-iproc.c
-@@ -198,6 +198,7 @@ static const struct sdhci_ops sdhci_iproc_32only_ops = {
+@@ -198,6 +198,7 @@ static const struct sdhci_ops sdhci_ipro
.write_b = sdhci_iproc_writeb,
.set_clock = sdhci_set_clock,
.get_max_clock = sdhci_iproc_get_max_clock,
.set_bus_width = sdhci_set_bus_width,
.reset = sdhci_reset,
.set_uhs_signaling = sdhci_set_uhs_signaling,
-diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
-index fec9329e1edb..6e6efe8d419b 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -40,7 +40,7 @@
#define MAX_TUNING_LOOP 40
-@@ -3245,7 +3245,7 @@ static void sdhci_timeout_timer(struct timer_list *t)
+@@ -3245,7 +3245,7 @@ static void sdhci_timeout_timer(struct t
spin_lock_irqsave(&host->lock, flags);
if (host->cmd && !sdhci_data_line_cmd(host->cmd)) {
mmc_hostname(host->mmc));
sdhci_err_stats_inc(host, REQ_TIMEOUT);
sdhci_dumpregs(host);
-@@ -3268,7 +3268,7 @@ static void sdhci_timeout_data_timer(struct timer_list *t)
+@@ -3268,7 +3268,7 @@ static void sdhci_timeout_data_timer(str
if (host->data || host->data_cmd ||
(host->cmd && sdhci_data_line_cmd(host->cmd))) {
mmc_hostname(host->mmc));
sdhci_err_stats_inc(host, REQ_TIMEOUT);
sdhci_dumpregs(host);
-diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h
-index ddcdf23d731c..b1ad2c63ca59 100644
--- a/include/linux/mmc/card.h
+++ b/include/linux/mmc/card.h
-@@ -330,6 +330,7 @@ struct mmc_card {
- #define MMC_QUIRK_BROKEN_CACHE_FLUSH (1<<16) /* Don't flush cache until the write has occurred */
- #define MMC_QUIRK_BROKEN_SD_POWEROFF_NOTIFY (1<<17) /* Disable broken SD poweroff notify support */
+@@ -332,6 +332,7 @@ struct mmc_card {
#define MMC_QUIRK_NO_UHS_DDR50_TUNING (1<<18) /* Disable DDR50 tuning */
+ #define MMC_QUIRK_BROKEN_MDT (1<<19) /* Wrong manufacturing year */
+ #define MMC_QUIRK_FIXED_SECURE_ERASE_TRIM_TIME (1<<20) /* Secure erase/trim time is fixed regardless of size */
+#define MMC_QUIRK_ERASE_BROKEN (1<<31) /* Skip erase */
bool written_flag; /* Indicates eMMC has been written since power on */
bool reenable_cmdq; /* Re-enable Command Queue */
---
-2.54.0
-
drivers/mmc/core/block.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
-index b90bbd28acc8..f6262101198a 100644
--- a/drivers/mmc/core/block.c
+++ b/drivers/mmc/core/block.c
-@@ -1979,7 +1979,7 @@ static void mmc_blk_mq_rw_recovery(struct mmc_queue *mq, struct request *req)
+@@ -1985,7 +1985,7 @@ static void mmc_blk_mq_rw_recovery(struc
return;
}
queue_physical_block_size(mq->queue) >> 9) {
/* Read one (native) sector at a time */
mmc_blk_read_single(mq, req);
---
-2.54.0
-
create mode 100644 drivers/char/broadcom/vc_mem.c
create mode 100644 include/linux/broadcom/vc_mem.h
-diff --git a/drivers/char/broadcom/Kconfig b/drivers/char/broadcom/Kconfig
-new file mode 100644
-index 000000000000..fc1315209dab
--- /dev/null
+++ b/drivers/char/broadcom/Kconfig
@@ -0,0 +1,18 @@
+ Helper for videocore memory access and total size allocation.
+
+endif
-diff --git a/drivers/char/broadcom/Makefile b/drivers/char/broadcom/Makefile
-new file mode 100644
-index 000000000000..06c5c8ad00e7
--- /dev/null
+++ b/drivers/char/broadcom/Makefile
@@ -0,0 +1 @@
+obj-$(CONFIG_BCM2708_VCMEM) += vc_mem.o
-diff --git a/drivers/char/broadcom/vc_mem.c b/drivers/char/broadcom/vc_mem.c
-new file mode 100644
-index 000000000000..4b7faf084e0c
--- /dev/null
+++ b/drivers/char/broadcom/vc_mem.c
@@ -0,0 +1,635 @@
+module_param(phys_addr, uint, 0644);
+module_param(mem_size, uint, 0644);
+module_param(mem_base, uint, 0644);
-diff --git a/include/linux/broadcom/vc_mem.h b/include/linux/broadcom/vc_mem.h
-new file mode 100644
-index 000000000000..3c7079237496
--- /dev/null
+++ b/include/linux/broadcom/vc_mem.h
@@ -0,0 +1,39 @@
+#endif
+
+#endif /* _VC_MEM_H */
---
-2.54.0
-
create mode 100644 drivers/misc/bcm2835_smi.c
create mode 100644 include/linux/broadcom/bcm2835_smi.h
-diff --git a/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi-dev.txt b/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi-dev.txt
-new file mode 100644
-index 000000000000..68cc8ebc3392
--- /dev/null
+++ b/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi-dev.txt
@@ -0,0 +1,17 @@
+- None.
+
+
-diff --git a/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi.txt b/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi.txt
-new file mode 100644
-index 000000000000..b76dc694f1ac
--- /dev/null
+++ b/Documentation/devicetree/bindings/misc/brcm,bcm2835-smi.txt
@@ -0,0 +1,48 @@
+ brcm,pull = <2 2 2 2 2 2 0 0 0 0 0 0 0 0>;
+};
+
-diff --git a/drivers/char/broadcom/Kconfig b/drivers/char/broadcom/Kconfig
-index fc1315209dab..875429161b9a 100644
--- a/drivers/char/broadcom/Kconfig
+++ b/drivers/char/broadcom/Kconfig
@@ -16,3 +16,12 @@ config BCM2708_VCMEM
+ This driver provides a character device interface (ioctl + read/write) to
+ Broadcom's Secondary Memory interface. The low-level functionality is provided
+ by the SMI driver itself.
-diff --git a/drivers/char/broadcom/Makefile b/drivers/char/broadcom/Makefile
-index 06c5c8ad00e7..a1f3da49e5f1 100644
--- a/drivers/char/broadcom/Makefile
+++ b/drivers/char/broadcom/Makefile
@@ -1 +1,2 @@
obj-$(CONFIG_BCM2708_VCMEM) += vc_mem.o
+obj-$(CONFIG_BCM2835_SMI_DEV) += bcm2835_smi_dev.o
-diff --git a/drivers/char/broadcom/bcm2835_smi_dev.c b/drivers/char/broadcom/bcm2835_smi_dev.c
-new file mode 100644
-index 000000000000..ae0c0d24fad9
--- /dev/null
+++ b/drivers/char/broadcom/bcm2835_smi_dev.c
@@ -0,0 +1,408 @@
+MODULE_DESCRIPTION(
+ "Character device driver for BCM2835's secondary memory interface");
+MODULE_AUTHOR("Luke Wren <luke@raspberrypi.org>");
-diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
-index b9c11f67315f..c59f251c7aa4 100644
--- a/drivers/misc/Kconfig
+++ b/drivers/misc/Kconfig
@@ -9,6 +9,14 @@ config SENSORS_LIS3LV02D
config AD525X_DPOT
tristate "Analog Devices Digital Potentiometers"
depends on (I2C || SPI) && SYSFS
-diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
-index b32a2597d246..fcbf09dfee39 100644
--- a/drivers/misc/Makefile
+++ b/drivers/misc/Makefile
-@@ -9,6 +9,7 @@ obj-$(CONFIG_AD525X_DPOT) += ad525x_dpot.o
+@@ -9,6 +9,7 @@ obj-$(CONFIG_AD525X_DPOT) += ad525x_dpot
obj-$(CONFIG_AD525X_DPOT_I2C) += ad525x_dpot-i2c.o
obj-$(CONFIG_AD525X_DPOT_SPI) += ad525x_dpot-spi.o
obj-$(CONFIG_ATMEL_SSC) += atmel-ssc.o
obj-$(CONFIG_DUMMY_IRQ) += dummy-irq.o
obj-$(CONFIG_ICS932S401) += ics932s401.o
obj-$(CONFIG_LKDTM) += lkdtm/
-diff --git a/drivers/misc/bcm2835_smi.c b/drivers/misc/bcm2835_smi.c
-new file mode 100644
-index 000000000000..09246d5ea7d0
--- /dev/null
+++ b/drivers/misc/bcm2835_smi.c
@@ -0,0 +1,952 @@
+MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("Device driver for BCM2835's secondary memory interface");
+MODULE_AUTHOR("Luke Wren <luke@raspberrypi.org>");
-diff --git a/include/linux/broadcom/bcm2835_smi.h b/include/linux/broadcom/bcm2835_smi.h
-new file mode 100644
-index 000000000000..ee3a75edfc03
--- /dev/null
+++ b/include/linux/broadcom/bcm2835_smi.h
@@ -0,0 +1,391 @@
+#endif /* BCM2835_SMI_IMPLEMENTATION */
+
+#endif /* BCM2835_SMI_H */
---
-2.54.0
-
3 files changed, 531 insertions(+)
create mode 100644 drivers/i2c/busses/i2c-bcm2708.c
-diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
-index 4515ded4338c..aa18e6bd7399 100644
--- a/drivers/i2c/busses/Kconfig
+++ b/drivers/i2c/busses/Kconfig
@@ -16,6 +16,25 @@ config I2C_CCGX_UCSI
config I2C_ALI1535
tristate "ALI 1535"
depends on PCI && HAS_IOPORT
-diff --git a/drivers/i2c/busses/Makefile b/drivers/i2c/busses/Makefile
-index fb985769f5ff..86b29cbfc42d 100644
--- a/drivers/i2c/busses/Makefile
+++ b/drivers/i2c/busses/Makefile
@@ -3,6 +3,8 @@
# ACPI drivers
obj-$(CONFIG_I2C_SCMI) += i2c-scmi.o
-diff --git a/drivers/i2c/busses/i2c-bcm2708.c b/drivers/i2c/busses/i2c-bcm2708.c
-new file mode 100644
-index 000000000000..09907b5c2540
--- /dev/null
+++ b/drivers/i2c/busses/i2c-bcm2708.c
@@ -0,0 +1,510 @@
+MODULE_AUTHOR("Chris Boot <bootc@bootc.net>");
+MODULE_LICENSE("GPL v2");
+MODULE_ALIAS("platform:" DRV_NAME);
---
-2.54.0
-
drivers/char/Makefile | 1 +
2 files changed, 3 insertions(+)
-diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig
-index d2cfc584e202..57442c5c8f63 100644
--- a/drivers/char/Kconfig
+++ b/drivers/char/Kconfig
@@ -5,6 +5,8 @@
source "drivers/tty/Kconfig"
config TTY_PRINTK
-diff --git a/drivers/char/Makefile b/drivers/char/Makefile
-index 1291369b9126..da45158c075e 100644
--- a/drivers/char/Makefile
+++ b/drivers/char/Makefile
@@ -44,3 +44,4 @@ obj-$(CONFIG_PS3_FLASH) += ps3flash.o
obj-$(CONFIG_POWERNV_OP_PANEL) += powernv-op-panel.o
obj-$(CONFIG_ADI) += adi.o
+obj-$(CONFIG_BRCM_CHAR_DRIVERS) += broadcom/
---
-2.54.0
-
3 files changed, 194 insertions(+)
create mode 100644 drivers/char/broadcom/vcio.c
-diff --git a/drivers/char/broadcom/Kconfig b/drivers/char/broadcom/Kconfig
-index 875429161b9a..29d880d47282 100644
--- a/drivers/char/broadcom/Kconfig
+++ b/drivers/char/broadcom/Kconfig
@@ -15,6 +15,12 @@ config BCM2708_VCMEM
endif
config BCM2835_SMI_DEV
-diff --git a/drivers/char/broadcom/Makefile b/drivers/char/broadcom/Makefile
-index a1f3da49e5f1..2ae3e9d411e9 100644
--- a/drivers/char/broadcom/Makefile
+++ b/drivers/char/broadcom/Makefile
@@ -1,2 +1,3 @@
obj-$(CONFIG_BCM2708_VCMEM) += vc_mem.o
+obj-$(CONFIG_BCM_VCIO) += vcio.o
obj-$(CONFIG_BCM2835_SMI_DEV) += bcm2835_smi_dev.o
-diff --git a/drivers/char/broadcom/vcio.c b/drivers/char/broadcom/vcio.c
-new file mode 100644
-index 000000000000..9db2408c781a
--- /dev/null
+++ b/drivers/char/broadcom/vcio.c
@@ -0,0 +1,187 @@
+MODULE_DESCRIPTION("Mailbox userspace access");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:rpi-vcio");
---
-2.54.0
-
3 files changed, 284 insertions(+)
create mode 100644 drivers/char/raspberrypi-gpiomem.c
-diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig
-index 57442c5c8f63..ff87476d945a 100644
--- a/drivers/char/Kconfig
+++ b/drivers/char/Kconfig
@@ -425,4 +425,12 @@ config ADI
+ register page to the user's pointer.
+
endmenu
-diff --git a/drivers/char/Makefile b/drivers/char/Makefile
-index da45158c075e..2c5ea59dfec6 100644
--- a/drivers/char/Makefile
+++ b/drivers/char/Makefile
-@@ -45,3 +45,4 @@ obj-$(CONFIG_XILLYBUS_CLASS) += xillybus/
+@@ -45,3 +45,4 @@ obj-$(CONFIG_XILLYBUS_CLASS) += xillybus
obj-$(CONFIG_POWERNV_OP_PANEL) += powernv-op-panel.o
obj-$(CONFIG_ADI) += adi.o
obj-$(CONFIG_BRCM_CHAR_DRIVERS) += broadcom/
+obj-$(CONFIG_RASPBERRYPI_GPIOMEM) += raspberrypi-gpiomem.o
-diff --git a/drivers/char/raspberrypi-gpiomem.c b/drivers/char/raspberrypi-gpiomem.c
-new file mode 100644
-index 000000000000..0f9b15bc14a8
--- /dev/null
+++ b/drivers/char/raspberrypi-gpiomem.c
@@ -0,0 +1,275 @@
+MODULE_LICENSE("Dual BSD/GPL");
+MODULE_DESCRIPTION("Driver for accessing GPIOs from userspace");
+MODULE_AUTHOR("Jonathan Bell <jonathan@raspberrypi.com>");
---
-2.54.0
-
drivers/firmware/raspberrypi.c | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
-diff --git a/drivers/firmware/raspberrypi.c b/drivers/firmware/raspberrypi.c
-index 7ecde6921a0a..3ce22dac1786 100644
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
@@ -34,6 +34,8 @@ struct rpi_firmware {
static DEFINE_MUTEX(transaction_lock);
static void response_callback(struct mbox_client *cl, void *msg)
-@@ -301,6 +303,7 @@ static int rpi_firmware_probe(struct platform_device *pdev)
+@@ -301,6 +303,7 @@ static int rpi_firmware_probe(struct pla
kref_init(&fw->consumers);
platform_set_drvdata(pdev, fw);
rpi_firmware_print_firmware_revision(fw);
rpi_register_hwmon_driver(dev, fw);
-@@ -329,6 +332,7 @@ static void rpi_firmware_remove(struct platform_device *pdev)
+@@ -329,6 +332,7 @@ static void rpi_firmware_remove(struct p
rpi_clk = NULL;
rpi_firmware_put(fw);
}
static const struct of_device_id rpi_firmware_of_match[] = {
-@@ -408,7 +412,18 @@ static struct platform_driver rpi_firmware_driver = {
+@@ -408,7 +412,18 @@ static struct platform_driver rpi_firmwa
.shutdown = rpi_firmware_shutdown,
.remove = rpi_firmware_remove,
};
MODULE_AUTHOR("Eric Anholt <eric@anholt.net>");
MODULE_DESCRIPTION("Raspberry Pi firmware driver");
---
-2.54.0
-
5 files changed, 82 insertions(+), 1 deletion(-)
create mode 100644 drivers/leds/trigger/ledtrig-input.c
-diff --git a/drivers/leds/leds-gpio.c b/drivers/leds/leds-gpio.c
-index a3428b22de3a..c4e0ceda70a7 100644
--- a/drivers/leds/leds-gpio.c
+++ b/drivers/leds/leds-gpio.c
-@@ -50,8 +50,15 @@ static void gpio_led_set(struct led_classdev *led_cdev,
+@@ -50,8 +50,15 @@ static void gpio_led_set(struct led_clas
led_dat->platform_gpio_blink_set(led_dat->gpiod, level,
NULL, NULL);
led_dat->blinking = 0;
gpiod_set_value_cansleep(led_dat->gpiod, level);
else
gpiod_set_value(led_dat->gpiod, level);
-@@ -65,6 +72,13 @@ static int gpio_led_set_blocking(struct led_classdev *led_cdev,
+@@ -65,6 +72,13 @@ static int gpio_led_set_blocking(struct
return 0;
}
static int gpio_blink_set(struct led_classdev *led_cdev,
unsigned long *delay_on, unsigned long *delay_off)
{
-@@ -94,6 +108,7 @@ static int create_gpio_led(const struct gpio_led *template,
+@@ -94,6 +108,7 @@ static int create_gpio_led(const struct
led_dat->platform_gpio_blink_set = blink_set;
led_dat->cdev.blink_set = gpio_blink_set;
}
if (template->default_state == LEDS_GPIO_DEFSTATE_KEEP) {
state = gpiod_get_value_cansleep(led_dat->gpiod);
if (state < 0)
-diff --git a/drivers/leds/trigger/Kconfig b/drivers/leds/trigger/Kconfig
-index c11282a74b5a..011b27ef30ec 100644
--- a/drivers/leds/trigger/Kconfig
+++ b/drivers/leds/trigger/Kconfig
@@ -113,6 +113,13 @@ config LEDS_TRIGGER_CAMERA
config LEDS_TRIGGER_PANIC
bool "LED Panic Trigger"
help
-diff --git a/drivers/leds/trigger/Makefile b/drivers/leds/trigger/Makefile
-index 3b3628889f68..5c4653d7f4de 100644
--- a/drivers/leds/trigger/Makefile
+++ b/drivers/leds/trigger/Makefile
-@@ -11,6 +11,7 @@ obj-$(CONFIG_LEDS_TRIGGER_ACTIVITY) += ledtrig-activity.o
+@@ -11,6 +11,7 @@ obj-$(CONFIG_LEDS_TRIGGER_ACTIVITY) += l
obj-$(CONFIG_LEDS_TRIGGER_DEFAULT_ON) += ledtrig-default-on.o
obj-$(CONFIG_LEDS_TRIGGER_TRANSIENT) += ledtrig-transient.o
obj-$(CONFIG_LEDS_TRIGGER_CAMERA) += ledtrig-camera.o
obj-$(CONFIG_LEDS_TRIGGER_PANIC) += ledtrig-panic.o
obj-$(CONFIG_LEDS_TRIGGER_NETDEV) += ledtrig-netdev.o
obj-$(CONFIG_LEDS_TRIGGER_PATTERN) += ledtrig-pattern.o
-diff --git a/drivers/leds/trigger/ledtrig-input.c b/drivers/leds/trigger/ledtrig-input.c
-new file mode 100644
-index 000000000000..8a974a355656
--- /dev/null
+++ b/drivers/leds/trigger/ledtrig-input.c
@@ -0,0 +1,55 @@
+MODULE_AUTHOR("Phil Elwell <phil@raspberrypi.org>");
+MODULE_DESCRIPTION("Set LED GPIO to Input \"trigger\"");
+MODULE_LICENSE("GPL");
-diff --git a/include/linux/leds.h b/include/linux/leds.h
-index b16b803cc1ac..4dff7add72ce 100644
--- a/include/linux/leds.h
+++ b/include/linux/leds.h
@@ -109,6 +109,9 @@ struct led_classdev {
/* set_brightness_work / blink_timer flags, atomic, private. */
unsigned long work_flags;
---
-2.54.0
-
drivers/media/usb/dvb-usb-v2/rtl28xxu.c | 4 ++++
1 file changed, 4 insertions(+)
-diff --git a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
-index 487c6ab784ab..62dc688f0ac7 100644
--- a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
+++ b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
-@@ -1964,6 +1964,10 @@ static const struct usb_device_id rtl28xxu_id_table[] = {
+@@ -1964,6 +1964,10 @@ static const struct usb_device_id rtl28x
&rtl28xxu_props, "Compro VideoMate U650F", NULL) },
{ DVB_USB_DEVICE(USB_VID_KWORLD_2, 0xd394,
&rtl28xxu_props, "MaxMedia HU394-T", NULL) },
{ DVB_USB_DEVICE(USB_VID_LEADTEK, 0x6a03,
&rtl28xxu_props, "Leadtek WinFast DTV Dongle mini", NULL) },
{ DVB_USB_DEVICE(USB_VID_GTEK, USB_PID_CPYTO_REDI_PC50A,
---
-2.54.0
-
create mode 100644 arch/arm/lib/memmove_rpi.S
create mode 100644 arch/arm/lib/memset_rpi.S
-diff --git a/arch/arm/include/asm/string.h b/arch/arm/include/asm/string.h
-index 96fc6cf460ec..94f1abb48d49 100644
--- a/arch/arm/include/asm/string.h
+++ b/arch/arm/include/asm/string.h
-@@ -72,4 +72,9 @@ static inline void *memset64(uint64_t *p, uint64_t v, __kernel_size_t n)
+@@ -72,4 +72,9 @@ static inline void *memset64(uint64_t *p
#endif
+#endif
+
#endif
-diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h
-index f90be312418e..4fe53e1a647c 100644
--- a/arch/arm/include/asm/uaccess.h
+++ b/arch/arm/include/asm/uaccess.h
@@ -533,6 +533,9 @@ do { \
static inline unsigned long __must_check
raw_copy_from_user(void *to, const void __user *from, unsigned long n)
{
-diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile
-index 0ca5aae1bcc3..c3a0c40550ee 100644
--- a/arch/arm/lib/Makefile
+++ b/arch/arm/lib/Makefile
@@ -7,8 +7,8 @@
# using lib_ here won't override already available weak symbols
obj-$(CONFIG_UACCESS_WITH_MEMCPY) += uaccess_with_memcpy.o
-diff --git a/arch/arm/lib/arm-mem.h b/arch/arm/lib/arm-mem.h
-new file mode 100644
-index 000000000000..5d4bda19ad20
--- /dev/null
+++ b/arch/arm/lib/arm-mem.h
@@ -0,0 +1,159 @@
+ .endif
+92:
+.endm
-diff --git a/arch/arm/lib/copy_from_user.S b/arch/arm/lib/copy_from_user.S
-index 270de7debd0f..2eda93fc22e6 100644
--- a/arch/arm/lib/copy_from_user.S
+++ b/arch/arm/lib/copy_from_user.S
@@ -104,7 +104,8 @@ UNWIND( .save {r0, r2, r3, \regs} )
.pushsection .text.fixup,"ax"
.align 0
-diff --git a/arch/arm/lib/exports_rpi.c b/arch/arm/lib/exports_rpi.c
-new file mode 100644
-index 000000000000..1f826047db75
--- /dev/null
+++ b/arch/arm/lib/exports_rpi.c
@@ -0,0 +1,37 @@
+#include <linux/module.h>
+
+EXPORT_SYMBOL(memcmp);
-diff --git a/arch/arm/lib/memcmp_rpi.S b/arch/arm/lib/memcmp_rpi.S
-new file mode 100644
-index 000000000000..bf6e4edfc9d3
--- /dev/null
+++ b/arch/arm/lib/memcmp_rpi.S
@@ -0,0 +1,285 @@
+ .unreq DAT7
+ .unreq OFF
+ENDPROC(memcmp)
-diff --git a/arch/arm/lib/memcpy_rpi.S b/arch/arm/lib/memcpy_rpi.S
-new file mode 100644
-index 000000000000..d246f9f3903a
--- /dev/null
+++ b/arch/arm/lib/memcpy_rpi.S
@@ -0,0 +1,65 @@
+ENDPROC(__memcpy)
+ENDPROC(memcpy)
+ENDPROC(mmiocpy)
-diff --git a/arch/arm/lib/memcpymove.h b/arch/arm/lib/memcpymove.h
-new file mode 100644
-index 000000000000..65a6e065a7f2
--- /dev/null
+++ b/arch/arm/lib/memcpymove.h
@@ -0,0 +1,488 @@
+ .unreq LAST
+ .unreq OFF
+.endm
-diff --git a/arch/arm/lib/memmove_rpi.S b/arch/arm/lib/memmove_rpi.S
-new file mode 100644
-index 000000000000..5715dfd95859
--- /dev/null
+++ b/arch/arm/lib/memmove_rpi.S
@@ -0,0 +1,63 @@
+ bpl memcpy /* pl works even over -1 - 0 and 0x7fffffff - 0x80000000 boundaries */
+ memcpy 1
+ENDPROC(memmove)
-diff --git a/arch/arm/lib/memset_rpi.S b/arch/arm/lib/memset_rpi.S
-new file mode 100644
-index 000000000000..087d68ea5d18
--- /dev/null
+++ b/arch/arm/lib/memset_rpi.S
@@ -0,0 +1,132 @@
+ENDPROC(__memset)
+ENDPROC(memset)
+ENDPROC(mmioset)
-diff --git a/arch/arm/lib/uaccess_with_memcpy.c b/arch/arm/lib/uaccess_with_memcpy.c
-index c0ac7796d775..c416c7d3242f 100644
--- a/arch/arm/lib/uaccess_with_memcpy.c
+++ b/arch/arm/lib/uaccess_with_memcpy.c
@@ -19,6 +19,14 @@
static int
pin_page_for_write(const void __user *_addr, pte_t **ptep, spinlock_t **ptlp)
{
-@@ -43,7 +51,7 @@ pin_page_for_write(const void __user *_addr, pte_t **ptep, spinlock_t **ptlp)
+@@ -43,7 +51,7 @@ pin_page_for_write(const void __user *_a
return 0;
pmd = pmd_offset(pud, addr);
return 0;
/*
-@@ -89,6 +97,47 @@ pin_page_for_write(const void __user *_addr, pte_t **ptep, spinlock_t **ptlp)
+@@ -89,6 +97,47 @@ pin_page_for_write(const void __user *_a
return 1;
}
static unsigned long noinline
__copy_to_user_memcpy(void __user *to, const void *from, unsigned long n)
{
-@@ -137,6 +186,54 @@ __copy_to_user_memcpy(void __user *to, const void *from, unsigned long n)
+@@ -137,6 +186,54 @@ out:
return n;
}
unsigned long
arm_copy_to_user(void __user *to, const void *from, unsigned long n)
{
-@@ -147,7 +244,7 @@ arm_copy_to_user(void __user *to, const void *from, unsigned long n)
+@@ -147,7 +244,7 @@ arm_copy_to_user(void __user *to, const
* With frame pointer disabled, tail call optimization kicks in
* as well making this test almost invisible.
*/
unsigned long ua_flags = uaccess_save_and_enable();
n = __copy_to_user_std(to, from, n);
uaccess_restore(ua_flags);
-@@ -157,6 +254,32 @@ arm_copy_to_user(void __user *to, const void *from, unsigned long n)
+@@ -157,6 +254,32 @@ arm_copy_to_user(void __user *to, const
}
return n;
}
static unsigned long noinline
__clear_user_memset(void __user *addr, unsigned long n)
-diff --git a/arch/arm/mach-bcm/Kconfig b/arch/arm/mach-bcm/Kconfig
-index 653a909c5ecd..203be91af9eb 100644
--- a/arch/arm/mach-bcm/Kconfig
+++ b/arch/arm/mach-bcm/Kconfig
@@ -181,6 +181,13 @@ config ARCH_BCM_53573
config ARCH_BRCMSTB
bool "Broadcom BCM7XXX based boards"
depends on ARCH_MULTI_V7
---
-2.54.0
-
create mode 100644 drivers/video/fbdev/rpisense-fb.c
create mode 100644 include/linux/mfd/rpisense/framebuffer.h
-diff --git a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig
-index 9353d51f38d3..062bf7338c54 100644
--- a/drivers/video/fbdev/Kconfig
+++ b/drivers/video/fbdev/Kconfig
@@ -1833,6 +1833,19 @@ config FB_SM712
source "drivers/video/fbdev/omap/Kconfig"
source "drivers/video/fbdev/omap2/Kconfig"
source "drivers/video/fbdev/mmp/Kconfig"
-diff --git a/drivers/video/fbdev/Makefile b/drivers/video/fbdev/Makefile
-index ee9b2c3c7206..ea305adc3f3c 100644
--- a/drivers/video/fbdev/Makefile
+++ b/drivers/video/fbdev/Makefile
-@@ -124,6 +124,7 @@ obj-$(CONFIG_FB_VGA16) += vga16fb.o
+@@ -124,6 +124,7 @@ obj-$(CONFIG_FB_VGA16) += vga
obj-$(CONFIG_FB_OF) += offb.o
obj-$(CONFIG_FB_SSD1307) += ssd1307fb.o
obj-$(CONFIG_FB_SIMPLE) += simplefb.o
# the test framebuffer is last
obj-$(CONFIG_FB_VIRTUAL) += vfb.o
-diff --git a/drivers/video/fbdev/rpisense-fb.c b/drivers/video/fbdev/rpisense-fb.c
-new file mode 100644
-index 000000000000..a2a63ddbe012
--- /dev/null
+++ b/drivers/video/fbdev/rpisense-fb.c
@@ -0,0 +1,295 @@
+MODULE_AUTHOR("Serge Schneider <serge@raspberrypi.org>");
+MODULE_LICENSE("GPL");
+
-diff --git a/include/linux/mfd/rpisense/framebuffer.h b/include/linux/mfd/rpisense/framebuffer.h
-new file mode 100644
-index 000000000000..621f24386bb0
--- /dev/null
+++ b/include/linux/mfd/rpisense/framebuffer.h
@@ -0,0 +1,35 @@
+};
+
+#endif
---
-2.54.0
-
drivers/mfd/simple-mfd-i2c.c | 1 +
1 file changed, 1 insertion(+)
-diff --git a/drivers/mfd/simple-mfd-i2c.c b/drivers/mfd/simple-mfd-i2c.c
-index 9f911afafc25..28675b53cbc4 100644
--- a/drivers/mfd/simple-mfd-i2c.c
+++ b/drivers/mfd/simple-mfd-i2c.c
-@@ -118,6 +118,7 @@ static const struct of_device_id simple_mfd_i2c_of_match[] = {
+@@ -118,6 +118,7 @@ static const struct of_device_id simple_
{ .compatible = "maxim,max5970", .data = &maxim_max5970},
{ .compatible = "maxim,max5978", .data = &maxim_max5970},
{ .compatible = "maxim,max77705-battery", .data = &maxim_mon_max77705},
{ .compatible = "silergy,sy7636a", .data = &silergy_sy7636a},
{ .compatible = "spacemit,p1", .data = &spacemit_p1, },
{}
---
-2.54.0
-
drivers/input/joystick/sensehat-joystick.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/input/joystick/sensehat-joystick.c b/drivers/input/joystick/sensehat-joystick.c
-index a84df39d3b2f..f24beb98e444 100644
--- a/drivers/input/joystick/sensehat-joystick.c
+++ b/drivers/input/joystick/sensehat-joystick.c
@@ -28,7 +28,7 @@ struct sensehat_joystick {
};
static irqreturn_t sensehat_joystick_report(int irq, void *cookie)
---
-2.54.0
-
create mode 100644 sound/soc/raspberrypi/Makefile
create mode 100644 sound/soc/raspberrypi/rp1_aout.c
-diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt
-new file mode 100644
-index 000000000000..7bc73e57add3
--- /dev/null
+++ b/Documentation/devicetree/bindings/vendor-prefixes.txt
@@ -0,0 +1,464 @@
+zii Zodiac Inflight Innovations
+zte ZTE Corp.
+zyxel ZyXEL Communications Corp.
-diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
-index f1d1882009ba..8f01aa016db1 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
@@ -235,6 +235,8 @@ patternProperties:
"^bluegiga,.*":
description: Bluegiga Technologies Ltd.
"^blutek,.*":
-diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig
-index 3a1611008e48..977df860c856 100644
--- a/drivers/clk/Kconfig
+++ b/drivers/clk/Kconfig
@@ -106,6 +106,12 @@ config COMMON_CLK_HI655X
config COMMON_CLK_SCMI
tristate "Clock driver controlled via SCMI interface"
depends on ARM_SCMI_PROTOCOL || COMPILE_TEST
-diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile
-index 61ec08404442..fc95155f9167 100644
--- a/drivers/clk/Makefile
+++ b/drivers/clk/Makefile
-@@ -72,6 +72,8 @@ obj-$(CONFIG_COMMON_CLK_LAN966X) += clk-lan966x.o
+@@ -72,6 +72,8 @@ obj-$(CONFIG_COMMON_CLK_LAN966X) += clk-
obj-$(CONFIG_COMMON_CLK_LOCHNAGAR) += clk-lochnagar.o
obj-$(CONFIG_MACH_LOONGSON32) += clk-loongson1.o
obj-$(CONFIG_COMMON_CLK_LOONGSON2) += clk-loongson2.o
obj-$(CONFIG_COMMON_CLK_MAX77686) += clk-max77686.o
obj-$(CONFIG_COMMON_CLK_MAX9485) += clk-max9485.o
obj-$(CONFIG_ARCH_MILBEAUT_M10V) += clk-milbeaut.o
-diff --git a/drivers/clk/clk-hifiberry-dachd.c b/drivers/clk/clk-hifiberry-dachd.c
-new file mode 100644
-index 000000000000..5280b5100559
--- /dev/null
+++ b/drivers/clk/clk-hifiberry-dachd.c
@@ -0,0 +1,331 @@
+MODULE_AUTHOR("Joerg Schambacher <joerg@i2audio.com>");
+MODULE_LICENSE("GPL v2");
+MODULE_ALIAS("platform:clk-hifiberry-dachd");
-diff --git a/drivers/clk/clk-hifiberry-dacpro.c b/drivers/clk/clk-hifiberry-dacpro.c
-new file mode 100644
-index 000000000000..0cbc0349f9f6
--- /dev/null
+++ b/drivers/clk/clk-hifiberry-dacpro.c
@@ -0,0 +1,180 @@
+MODULE_DESCRIPTION("HiFiBerry DAC Pro clock driver");
+MODULE_LICENSE("GPL v2");
+MODULE_ALIAS("platform:clk-hifiberry-dacpro");
-diff --git a/sound/drivers/Kconfig b/sound/drivers/Kconfig
-index 6debd8e95cb7..51b17967f206 100644
--- a/sound/drivers/Kconfig
+++ b/sound/drivers/Kconfig
@@ -263,4 +263,25 @@ config SND_AC97_POWER_SAVE_DEFAULT
+ will be called snd-soc-upisnd-ctrl and snd-soc-upisnd-codec.
+
endif # SND_DRIVERS
-diff --git a/sound/drivers/Makefile b/sound/drivers/Makefile
-index a08bdd70ec9c..1cce9943ddef 100644
--- a/sound/drivers/Makefile
+++ b/sound/drivers/Makefile
@@ -9,6 +9,7 @@ snd-aloop-y := aloop.o
snd-portman2x4-y := portman2x4.o
snd-serial-u16550-y := serial-u16550.o
snd-serial-generic-y := serial-generic.o
-@@ -23,6 +24,7 @@ obj-$(CONFIG_SND_SERIAL_U16550) += snd-serial-u16550.o
+@@ -23,6 +24,7 @@ obj-$(CONFIG_SND_SERIAL_U16550) += snd-s
obj-$(CONFIG_SND_SERIAL_GENERIC) += snd-serial-generic.o
obj-$(CONFIG_SND_MTPAV) += snd-mtpav.o
obj-$(CONFIG_SND_MTS64) += snd-mts64.o
-obj-$(CONFIG_SND) += opl3/ opl4/ mpu401/ vx/ pcsp/
+obj-$(CONFIG_SND) += opl3/ opl4/ mpu401/ vx/ pcsp/ upisnd/
-diff --git a/sound/drivers/pimidi.c b/sound/drivers/pimidi.c
-new file mode 100644
-index 000000000000..c399707425b7
--- /dev/null
+++ b/sound/drivers/pimidi.c
@@ -0,0 +1,1113 @@
+MODULE_LICENSE("GPL");
+
+/* vim: set ts=8 sw=8 noexpandtab: */
-diff --git a/sound/drivers/upisnd/Makefile b/sound/drivers/upisnd/Makefile
-new file mode 100644
-index 000000000000..00f3d5125380
--- /dev/null
+++ b/sound/drivers/upisnd/Makefile
@@ -0,0 +1,23 @@
+obj-$(CONFIG_SND_PISOUND_MICRO) := snd-soc-upisnd-ctrl.o snd-soc-upisnd-codec.o
+snd-soc-upisnd-ctrl-objs := upisnd_module.o upisnd_ctrl.o upisnd_comm.o upisnd_sound.o upisnd_midi.o upisnd_pins.o upisnd_gpio.o upisnd_sysfs.o upisnd_utils.o
+snd-soc-upisnd-codec-objs := upisnd_codec.o
-diff --git a/sound/drivers/upisnd/upisnd_codec.c b/sound/drivers/upisnd/upisnd_codec.c
-new file mode 100644
-index 000000000000..1ca772555048
--- /dev/null
+++ b/sound/drivers/upisnd/upisnd_codec.c
@@ -0,0 +1,1748 @@
+MODULE_LICENSE("GPL v2");
+
+/* vim: set ts=8 sw=8 noexpandtab: */
-diff --git a/sound/drivers/upisnd/upisnd_codec.h b/sound/drivers/upisnd/upisnd_codec.h
-new file mode 100644
-index 000000000000..c82be33711ff
--- /dev/null
+++ b/sound/drivers/upisnd/upisnd_codec.h
@@ -0,0 +1,23 @@
+extern bool adau1961_is_hp_capless(struct snd_soc_component *component);
+
+#endif // UPISOUND_CODEC_H
-diff --git a/sound/drivers/upisnd/upisnd_comm.c b/sound/drivers/upisnd/upisnd_comm.c
-new file mode 100644
-index 000000000000..361098324c1d
--- /dev/null
+++ b/sound/drivers/upisnd/upisnd_comm.c
@@ -0,0 +1,638 @@
+}
+
+/* vim: set ts=8 sw=8 noexpandtab: */
-diff --git a/sound/drivers/upisnd/upisnd_comm.h b/sound/drivers/upisnd/upisnd_comm.h
-new file mode 100644
-index 000000000000..5ecbaa14f81a
--- /dev/null
+++ b/sound/drivers/upisnd/upisnd_comm.h
@@ -0,0 +1,104 @@
+#endif // UPISOUND_COMM_H
+
+/* vim: set ts=8 sw=8 noexpandtab: */
-diff --git a/sound/drivers/upisnd/upisnd_common.h b/sound/drivers/upisnd/upisnd_common.h
-new file mode 100644
-index 000000000000..0f810de86030
--- /dev/null
+++ b/sound/drivers/upisnd/upisnd_common.h
@@ -0,0 +1,97 @@
+#endif // UPISOUND_COMMON_H
+
+/* vim: set ts=8 sw=8 noexpandtab: */
-diff --git a/sound/drivers/upisnd/upisnd_ctrl.c b/sound/drivers/upisnd/upisnd_ctrl.c
-new file mode 100644
-index 000000000000..fcd0b326bef7
--- /dev/null
+++ b/sound/drivers/upisnd/upisnd_ctrl.c
@@ -0,0 +1,246 @@
+}
+
+/* vim: set ts=8 sw=8 noexpandtab: */
-diff --git a/sound/drivers/upisnd/upisnd_ctrl.h b/sound/drivers/upisnd/upisnd_ctrl.h
-new file mode 100644
-index 000000000000..6851a491cc6a
--- /dev/null
+++ b/sound/drivers/upisnd/upisnd_ctrl.h
@@ -0,0 +1,36 @@
+#endif // UPISOUND_CTRL_H
+
+/* vim: set ts=8 sw=8 noexpandtab: */
-diff --git a/sound/drivers/upisnd/upisnd_debug.h b/sound/drivers/upisnd/upisnd_debug.h
-new file mode 100644
-index 000000000000..b0b3fda9451f
--- /dev/null
+++ b/sound/drivers/upisnd/upisnd_debug.h
@@ -0,0 +1,34 @@
+#endif // UPISOUND_DEBUG_H
+
+/* vim: set ts=8 sw=8 noexpandtab: */
-diff --git a/sound/drivers/upisnd/upisnd_gpio.c b/sound/drivers/upisnd/upisnd_gpio.c
-new file mode 100644
-index 000000000000..8b0df275792c
--- /dev/null
+++ b/sound/drivers/upisnd/upisnd_gpio.c
@@ -0,0 +1,869 @@
+}
+
+/* vim: set ts=8 sw=8 noexpandtab: */
-diff --git a/sound/drivers/upisnd/upisnd_gpio.h b/sound/drivers/upisnd/upisnd_gpio.h
-new file mode 100644
-index 000000000000..7ad50b557063
--- /dev/null
+++ b/sound/drivers/upisnd/upisnd_gpio.h
@@ -0,0 +1,75 @@
+#endif // UPISOUND_GPIO_H
+
+/* vim: set ts=8 sw=8 noexpandtab: */
-diff --git a/sound/drivers/upisnd/upisnd_midi.c b/sound/drivers/upisnd/upisnd_midi.c
-new file mode 100644
-index 000000000000..b7fea8227bf6
--- /dev/null
+++ b/sound/drivers/upisnd/upisnd_midi.c
@@ -0,0 +1,337 @@
+}
+
+/* vim: set ts=8 sw=8 noexpandtab: */
-diff --git a/sound/drivers/upisnd/upisnd_midi.h b/sound/drivers/upisnd/upisnd_midi.h
-new file mode 100644
-index 000000000000..0a4678e17e07
--- /dev/null
+++ b/sound/drivers/upisnd/upisnd_midi.h
@@ -0,0 +1,47 @@
+#endif // UPISOUND_MIDI_H
+
+/* vim: set ts=8 sw=8 noexpandtab: */
-diff --git a/sound/drivers/upisnd/upisnd_module.c b/sound/drivers/upisnd/upisnd_module.c
-new file mode 100644
-index 000000000000..ef545313c0c2
--- /dev/null
+++ b/sound/drivers/upisnd/upisnd_module.c
@@ -0,0 +1,273 @@
+MODULE_LICENSE("GPL v2");
+
+/* vim: set ts=8 sw=8 noexpandtab: */
-diff --git a/sound/drivers/upisnd/upisnd_pins.c b/sound/drivers/upisnd/upisnd_pins.c
-new file mode 100644
-index 000000000000..8e3e9bac6bed
--- /dev/null
+++ b/sound/drivers/upisnd/upisnd_pins.c
@@ -0,0 +1,113 @@
+}
+
+/* vim: set ts=8 sw=8 noexpandtab: */
-diff --git a/sound/drivers/upisnd/upisnd_pins.h b/sound/drivers/upisnd/upisnd_pins.h
-new file mode 100644
-index 000000000000..5f4b3a5660a3
--- /dev/null
+++ b/sound/drivers/upisnd/upisnd_pins.h
@@ -0,0 +1,67 @@
+#endif // UPISOUND_PINS_H
+
+/* vim: set ts=8 sw=8 noexpandtab: */
-diff --git a/sound/drivers/upisnd/upisnd_protocol.h b/sound/drivers/upisnd/upisnd_protocol.h
-new file mode 100644
-index 000000000000..59beaa3e6cbf
--- /dev/null
+++ b/sound/drivers/upisnd/upisnd_protocol.h
@@ -0,0 +1,323 @@
+#endif // UPISND_PROTOCOL_H
+
+/* vim: set ts=8 sw=8 noexpandtab: */
-diff --git a/sound/drivers/upisnd/upisnd_sound.c b/sound/drivers/upisnd/upisnd_sound.c
-new file mode 100644
-index 000000000000..c3df5e1f1570
--- /dev/null
+++ b/sound/drivers/upisnd/upisnd_sound.c
@@ -0,0 +1,277 @@
+}
+
+/* vim: set ts=8 sw=8 noexpandtab: */
-diff --git a/sound/drivers/upisnd/upisnd_sound.h b/sound/drivers/upisnd/upisnd_sound.h
-new file mode 100644
-index 000000000000..100f30733ba2
--- /dev/null
+++ b/sound/drivers/upisnd/upisnd_sound.h
@@ -0,0 +1,28 @@
+#endif // UPISOUND_SOUND_H
+
+/* vim: set ts=8 sw=8 noexpandtab: */
-diff --git a/sound/drivers/upisnd/upisnd_sysfs.c b/sound/drivers/upisnd/upisnd_sysfs.c
-new file mode 100644
-index 000000000000..3feaa1289dba
--- /dev/null
+++ b/sound/drivers/upisnd/upisnd_sysfs.c
@@ -0,0 +1,1826 @@
+}
+
+/* vim: set ts=8 sw=8 noexpandtab: */
-diff --git a/sound/drivers/upisnd/upisnd_sysfs.h b/sound/drivers/upisnd/upisnd_sysfs.h
-new file mode 100644
-index 000000000000..72a5666c0dc6
--- /dev/null
+++ b/sound/drivers/upisnd/upisnd_sysfs.h
@@ -0,0 +1,32 @@
+#endif // UPISOUND_SYSFS_H
+
+/* vim: set ts=8 sw=8 noexpandtab: */
-diff --git a/sound/drivers/upisnd/upisnd_utils.c b/sound/drivers/upisnd/upisnd_utils.c
-new file mode 100644
-index 000000000000..bf3346512d74
--- /dev/null
+++ b/sound/drivers/upisnd/upisnd_utils.c
@@ -0,0 +1,33 @@
+}
+
+/* vim: set ts=8 sw=8 noexpandtab: */
-diff --git a/sound/drivers/upisnd/upisnd_utils.h b/sound/drivers/upisnd/upisnd_utils.h
-new file mode 100644
-index 000000000000..e4b41f52fad0
--- /dev/null
+++ b/sound/drivers/upisnd/upisnd_utils.h
@@ -0,0 +1,25 @@
+#endif // UPISOUND_UTILS_H
+
+/* vim: set ts=8 sw=8 noexpandtab: */
-diff --git a/sound/soc/Kconfig b/sound/soc/Kconfig
-index ce74818bd715..c2521d6d8342 100644
--- a/sound/soc/Kconfig
+++ b/sound/soc/Kconfig
@@ -123,6 +123,7 @@ source "sound/soc/meson/Kconfig"
source "sound/soc/renesas/Kconfig"
source "sound/soc/rockchip/Kconfig"
source "sound/soc/samsung/Kconfig"
-diff --git a/sound/soc/Makefile b/sound/soc/Makefile
-index 462322c38aa4..c99ebbcc6652 100644
--- a/sound/soc/Makefile
+++ b/sound/soc/Makefile
@@ -65,6 +65,7 @@ obj-$(CONFIG_SND_SOC) += mxs/
obj-$(CONFIG_SND_SOC) += renesas/
obj-$(CONFIG_SND_SOC) += rockchip/
obj-$(CONFIG_SND_SOC) += samsung/
-diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig
-index de4e8a0daf1c..07532624467a 100644
--- a/sound/soc/bcm/Kconfig
+++ b/sound/soc/bcm/Kconfig
@@ -29,4 +29,288 @@ config SND_BCM63XX_I2S_WHISTLER
+ Say Y or M if you want to add support for tlv320aic3x add-on
+
endmenu
-diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile
-index 0c1325a97b70..15c3c4a742c6 100644
--- a/sound/soc/bcm/Makefile
+++ b/sound/soc/bcm/Makefile
-@@ -12,4 +12,75 @@ obj-$(CONFIG_SND_SOC_CYGNUS) += snd-soc-cygnus.o
+@@ -12,4 +12,75 @@ obj-$(CONFIG_SND_SOC_CYGNUS) += snd-soc-
# BCM63XX Platform Support
snd-soc-63xx-y := bcm63xx-i2s-whistler.o bcm63xx-pcm-whistler.o
+obj-$(CONFIG_SND_BCM2708_SOC_PIFI_40) += snd-soc-pifi-40.o
+obj-$(CONFIG_SND_BCM2708_SOC_CHIPDIP_DAC) += snd-soc-chipdip-dac.o
+obj-$(CONFIG_SND_DACBERRY400) += snd-soc-dacberry400.o
-diff --git a/sound/soc/bcm/allo-boss-dac.c b/sound/soc/bcm/allo-boss-dac.c
-new file mode 100644
-index 000000000000..342a03e6a7f8
--- /dev/null
+++ b/sound/soc/bcm/allo-boss-dac.c
@@ -0,0 +1,470 @@
+MODULE_AUTHOR("Baswaraj K <jaikumar@cem-solutions.net>");
+MODULE_DESCRIPTION("ALSA ASoC Machine Driver for Allo Boss DAC");
+MODULE_LICENSE("GPL v2");
-diff --git a/sound/soc/bcm/allo-boss2-dac.c b/sound/soc/bcm/allo-boss2-dac.c
-new file mode 100644
-index 000000000000..7d0232678c9c
--- /dev/null
+++ b/sound/soc/bcm/allo-boss2-dac.c
@@ -0,0 +1,1130 @@
+MODULE_DESCRIPTION("ASoC Allo Boss2 Codec Driver");
+MODULE_AUTHOR("Sudeepkumar <sudeepkumar@cem-solutions.net>");
+MODULE_LICENSE("GPL v2");
-diff --git a/sound/soc/bcm/allo-katana-codec.c b/sound/soc/bcm/allo-katana-codec.c
-new file mode 100644
-index 000000000000..4578e8d6501b
--- /dev/null
+++ b/sound/soc/bcm/allo-katana-codec.c
@@ -0,0 +1,386 @@
+MODULE_DESCRIPTION("ASoC Allo Katana Codec Driver");
+MODULE_AUTHOR("Jaikumar <jaikumar@cem-solutions.net>");
+MODULE_LICENSE("GPL v2");
-diff --git a/sound/soc/bcm/allo-piano-dac-plus.c b/sound/soc/bcm/allo-piano-dac-plus.c
-new file mode 100644
-index 000000000000..187eff7a9aa1
--- /dev/null
+++ b/sound/soc/bcm/allo-piano-dac-plus.c
@@ -0,0 +1,1026 @@
+MODULE_AUTHOR("Baswaraj K <jaikumar@cem-solutions.net>");
+MODULE_DESCRIPTION("ALSA ASoC Machine Driver for Allo Piano DAC Plus");
+MODULE_LICENSE("GPL v2");
-diff --git a/sound/soc/bcm/allo-piano-dac.c b/sound/soc/bcm/allo-piano-dac.c
-new file mode 100644
-index 000000000000..bb36de653626
--- /dev/null
+++ b/sound/soc/bcm/allo-piano-dac.c
@@ -0,0 +1,122 @@
+MODULE_AUTHOR("Baswaraj K <jaikumar@cem-solutions.net>");
+MODULE_DESCRIPTION("ALSA ASoC Machine Driver for Allo Piano DAC");
+MODULE_LICENSE("GPL v2");
-diff --git a/sound/soc/bcm/audioinjector-isolated-soundcard.c b/sound/soc/bcm/audioinjector-isolated-soundcard.c
-new file mode 100644
-index 000000000000..cf3c9929cb8d
--- /dev/null
+++ b/sound/soc/bcm/audioinjector-isolated-soundcard.c
@@ -0,0 +1,184 @@
+MODULE_DESCRIPTION("AudioInjector.net isolated Soundcard");
+MODULE_LICENSE("GPL v2");
+MODULE_ALIAS("platform:audioinjector-isolated-soundcard");
-diff --git a/sound/soc/bcm/audioinjector-octo-soundcard.c b/sound/soc/bcm/audioinjector-octo-soundcard.c
-new file mode 100644
-index 000000000000..0a5761109865
--- /dev/null
+++ b/sound/soc/bcm/audioinjector-octo-soundcard.c
@@ -0,0 +1,347 @@
+MODULE_DESCRIPTION("AudioInjector.net octo Soundcard");
+MODULE_LICENSE("GPL v2");
+MODULE_ALIAS("platform:audioinjector-octo-soundcard");
-diff --git a/sound/soc/bcm/audioinjector-pi-soundcard.c b/sound/soc/bcm/audioinjector-pi-soundcard.c
-new file mode 100644
-index 000000000000..5ff0b28eac8b
--- /dev/null
+++ b/sound/soc/bcm/audioinjector-pi-soundcard.c
@@ -0,0 +1,190 @@
+MODULE_LICENSE("GPL v2");
+MODULE_ALIAS("platform:audioinjector-pi-soundcard");
+
-diff --git a/sound/soc/bcm/audiosense-pi.c b/sound/soc/bcm/audiosense-pi.c
-new file mode 100644
-index 000000000000..1975576e49ac
--- /dev/null
+++ b/sound/soc/bcm/audiosense-pi.c
@@ -0,0 +1,247 @@
+MODULE_LICENSE("GPL v2");
+MODULE_ALIAS("platform:audiosense-pi");
+
-diff --git a/sound/soc/bcm/bcm2835-i2s.c b/sound/soc/bcm/bcm2835-i2s.c
-index 87d2f06c2f53..cbbf6723ba20 100644
--- a/sound/soc/bcm/bcm2835-i2s.c
+++ b/sound/soc/bcm/bcm2835-i2s.c
@@ -30,7 +30,6 @@
#include <linux/slab.h>
#include <sound/core.h>
-@@ -620,6 +619,10 @@ static int bcm2835_i2s_prepare(struct snd_pcm_substream *substream,
+@@ -620,6 +619,10 @@ static int bcm2835_i2s_prepare(struct sn
struct bcm2835_i2s_dev *dev = snd_soc_dai_get_drvdata(dai);
uint32_t cs_reg;
/*
* Clear both FIFOs if the one that should be started
* is not empty at the moment. This should only happen
-@@ -701,6 +704,10 @@ static int bcm2835_i2s_startup(struct snd_pcm_substream *substream,
+@@ -701,6 +704,10 @@ static int bcm2835_i2s_startup(struct sn
/* Should this still be running stop it */
bcm2835_i2s_stop_clock(dev);
/* Enable PCM block */
regmap_update_bits(dev->i2s_regmap, BCM2835_I2S_CS_A_REG,
BCM2835_I2S_EN, BCM2835_I2S_EN);
-@@ -830,8 +837,7 @@ static int bcm2835_i2s_probe(struct platform_device *pdev)
+@@ -830,8 +837,7 @@ static int bcm2835_i2s_probe(struct plat
struct bcm2835_i2s_dev *dev;
int ret;
void __iomem *base;
dev = devm_kzalloc(&pdev->dev, sizeof(*dev),
GFP_KERNEL);
-@@ -846,7 +852,7 @@ static int bcm2835_i2s_probe(struct platform_device *pdev)
+@@ -846,7 +852,7 @@ static int bcm2835_i2s_probe(struct plat
"could not get clk\n");
/* Request ioarea */
if (IS_ERR(base))
return PTR_ERR(base);
-@@ -855,19 +861,11 @@ static int bcm2835_i2s_probe(struct platform_device *pdev)
+@@ -855,19 +861,11 @@ static int bcm2835_i2s_probe(struct plat
if (IS_ERR(dev->i2s_regmap))
return PTR_ERR(dev->i2s_regmap);
/* Set the bus width */
dev->dma_data[SNDRV_PCM_STREAM_PLAYBACK].addr_width =
-diff --git a/sound/soc/bcm/chipdip-dac.c b/sound/soc/bcm/chipdip-dac.c
-new file mode 100644
-index 000000000000..64e346f1a066
--- /dev/null
+++ b/sound/soc/bcm/chipdip-dac.c
@@ -0,0 +1,275 @@
+MODULE_AUTHOR("Evgenij Sapunov <evgenij.sapunov@chipdip.ru>");
+MODULE_DESCRIPTION("ASoC Driver for ChipDip DAC");
+MODULE_LICENSE("GPL v2");
-diff --git a/sound/soc/bcm/dacberry400.c b/sound/soc/bcm/dacberry400.c
-new file mode 100644
-index 000000000000..42ede1511e0f
--- /dev/null
+++ b/sound/soc/bcm/dacberry400.c
@@ -0,0 +1,258 @@
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:dacberry400");
+MODULE_SOFTDEP("pre: snd-soc-tlv320aic3x");
-diff --git a/sound/soc/bcm/digidac1-soundcard.c b/sound/soc/bcm/digidac1-soundcard.c
-new file mode 100644
-index 000000000000..320de17ffa3d
--- /dev/null
+++ b/sound/soc/bcm/digidac1-soundcard.c
@@ -0,0 +1,421 @@
+MODULE_AUTHOR("José M. Tasende <vintage@redrocksaudio.es>");
+MODULE_DESCRIPTION("ASoC Driver for RRA DigiDAC1");
+MODULE_LICENSE("GPL v2");
-diff --git a/sound/soc/bcm/dionaudio_loco-v2.c b/sound/soc/bcm/dionaudio_loco-v2.c
-new file mode 100644
-index 000000000000..81506325e07f
--- /dev/null
+++ b/sound/soc/bcm/dionaudio_loco-v2.c
@@ -0,0 +1,118 @@
+MODULE_AUTHOR("Miquel Blauw <info@dionaudio.nl>");
+MODULE_DESCRIPTION("ASoC Driver for DionAudio LOCO-V2");
+MODULE_LICENSE("GPL v2");
-diff --git a/sound/soc/bcm/dionaudio_loco.c b/sound/soc/bcm/dionaudio_loco.c
-new file mode 100644
-index 000000000000..3082df7f886b
--- /dev/null
+++ b/sound/soc/bcm/dionaudio_loco.c
@@ -0,0 +1,121 @@
+MODULE_AUTHOR("Miquel Blauw <info@dionaudio.nl>");
+MODULE_DESCRIPTION("ASoC Driver for DionAudio LOCO");
+MODULE_LICENSE("GPL v2");
-diff --git a/sound/soc/bcm/fe-pi-audio.c b/sound/soc/bcm/fe-pi-audio.c
-new file mode 100644
-index 000000000000..ab66cfd25d4c
--- /dev/null
+++ b/sound/soc/bcm/fe-pi-audio.c
@@ -0,0 +1,154 @@
+MODULE_AUTHOR("Henry Kupis <fe-pi@cox.net>");
+MODULE_DESCRIPTION("ASoC Driver for Fe-Pi Audio");
+MODULE_LICENSE("GPL v2");
-diff --git a/sound/soc/bcm/googlevoicehat-codec.c b/sound/soc/bcm/googlevoicehat-codec.c
-new file mode 100644
-index 000000000000..572db9373e63
--- /dev/null
+++ b/sound/soc/bcm/googlevoicehat-codec.c
@@ -0,0 +1,212 @@
+MODULE_DESCRIPTION("Google voiceHAT Codec driver");
+MODULE_AUTHOR("Peter Malkin <petermalkin@google.com>");
+MODULE_LICENSE("GPL v2");
-diff --git a/sound/soc/bcm/hifiberry_adc.c b/sound/soc/bcm/hifiberry_adc.c
-new file mode 100644
-index 000000000000..45c642e056c1
--- /dev/null
+++ b/sound/soc/bcm/hifiberry_adc.c
@@ -0,0 +1,174 @@
+MODULE_AUTHOR("Joerg Schambacher <joerg@hifiberry.com>");
+MODULE_DESCRIPTION("ASoC Driver for HiFiBerry ADC");
+MODULE_LICENSE("GPL");
-diff --git a/sound/soc/bcm/hifiberry_adc_controls.h b/sound/soc/bcm/hifiberry_adc_controls.h
-new file mode 100644
-index 000000000000..8d8911bb0afb
--- /dev/null
+++ b/sound/soc/bcm/hifiberry_adc_controls.h
@@ -0,0 +1,128 @@
+ SOC_ENUM("PGA Gain Left", pcm186x_gain_sel[0]),
+ SOC_ENUM("PGA Gain Right", pcm186x_gain_sel[1]),
+};
-diff --git a/sound/soc/bcm/hifiberry_dacplus.c b/sound/soc/bcm/hifiberry_dacplus.c
-new file mode 100644
-index 000000000000..589ff3825e10
--- /dev/null
+++ b/sound/soc/bcm/hifiberry_dacplus.c
@@ -0,0 +1,563 @@
+MODULE_AUTHOR("Daniel Matuschek <daniel@hifiberry.com>");
+MODULE_DESCRIPTION("ASoC Driver for HiFiBerry DAC+");
+MODULE_LICENSE("GPL v2");
-diff --git a/sound/soc/bcm/hifiberry_dacplusadc.c b/sound/soc/bcm/hifiberry_dacplusadc.c
-new file mode 100644
-index 000000000000..e73da125e70d
--- /dev/null
+++ b/sound/soc/bcm/hifiberry_dacplusadc.c
@@ -0,0 +1,399 @@
+MODULE_AUTHOR("Daniel Matuschek <daniel@hifiberry.com>");
+MODULE_DESCRIPTION("ASoC Driver for HiFiBerry DAC+ADC");
+MODULE_LICENSE("GPL v2");
-diff --git a/sound/soc/bcm/hifiberry_dacplusadcpro.c b/sound/soc/bcm/hifiberry_dacplusadcpro.c
-new file mode 100644
-index 000000000000..9c853379dc49
--- /dev/null
+++ b/sound/soc/bcm/hifiberry_dacplusadcpro.c
@@ -0,0 +1,498 @@
+MODULE_AUTHOR("Daniel Matuschek <daniel@hifiberry.com>");
+MODULE_DESCRIPTION("ASoC Driver for HiFiBerry DAC+ADC");
+MODULE_LICENSE("GPL v2");
-diff --git a/sound/soc/bcm/hifiberry_dacplusdsp.c b/sound/soc/bcm/hifiberry_dacplusdsp.c
-new file mode 100644
-index 000000000000..5a6ea965042d
--- /dev/null
+++ b/sound/soc/bcm/hifiberry_dacplusdsp.c
@@ -0,0 +1,89 @@
+MODULE_AUTHOR("Joerg Schambacher <joerg@i2audio.com>");
+MODULE_DESCRIPTION("ASoC Driver for HiFiBerry DAC+DSP");
+MODULE_LICENSE("GPL v2");
-diff --git a/sound/soc/bcm/hifiberry_dacplushd.c b/sound/soc/bcm/hifiberry_dacplushd.c
-new file mode 100644
-index 000000000000..b535384f9fc7
--- /dev/null
+++ b/sound/soc/bcm/hifiberry_dacplushd.c
@@ -0,0 +1,233 @@
+MODULE_AUTHOR("Joerg Schambacher <joerg@i2audio.com>");
+MODULE_DESCRIPTION("ASoC Driver for HiFiBerry DAC+ HD");
+MODULE_LICENSE("GPL v2");
-diff --git a/sound/soc/bcm/i-sabre-q2m.c b/sound/soc/bcm/i-sabre-q2m.c
-new file mode 100644
-index 000000000000..dc538400a05d
--- /dev/null
+++ b/sound/soc/bcm/i-sabre-q2m.c
@@ -0,0 +1,159 @@
+MODULE_DESCRIPTION("ASoC Driver for I-Sabre Q2M");
+MODULE_AUTHOR("Audiophonics <http://www.audiophonics.fr>");
+MODULE_LICENSE("GPL");
-diff --git a/sound/soc/bcm/iqaudio-codec.c b/sound/soc/bcm/iqaudio-codec.c
-new file mode 100644
-index 000000000000..02ea79029efc
--- /dev/null
+++ b/sound/soc/bcm/iqaudio-codec.c
@@ -0,0 +1,283 @@
+MODULE_AUTHOR("Gordon Garrity <gordon@iqaudio.com>");
+MODULE_DESCRIPTION("ASoC Driver for IQaudIO CODEC");
+MODULE_LICENSE("GPL v2");
-diff --git a/sound/soc/bcm/iqaudio-dac.c b/sound/soc/bcm/iqaudio-dac.c
-new file mode 100644
-index 000000000000..a86531bf3687
--- /dev/null
+++ b/sound/soc/bcm/iqaudio-dac.c
@@ -0,0 +1,223 @@
+MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>");
+MODULE_DESCRIPTION("ASoC Driver for IQAudio DAC");
+MODULE_LICENSE("GPL v2");
-diff --git a/sound/soc/bcm/justboom-both.c b/sound/soc/bcm/justboom-both.c
-new file mode 100644
-index 000000000000..6e5e6510238a
--- /dev/null
+++ b/sound/soc/bcm/justboom-both.c
@@ -0,0 +1,266 @@
+MODULE_AUTHOR("Johannes Krude <johannes@krude.de>");
+MODULE_DESCRIPTION("ASoC Driver for simultaneous use of JustBoom PI Digi & DAC HAT Sound Cards");
+MODULE_LICENSE("GPL v2");
-diff --git a/sound/soc/bcm/justboom-dac.c b/sound/soc/bcm/justboom-dac.c
-new file mode 100644
-index 000000000000..dc6b2ddaa8cb
--- /dev/null
+++ b/sound/soc/bcm/justboom-dac.c
@@ -0,0 +1,147 @@
+MODULE_AUTHOR("Milan Neskovic <info@justboom.co>");
+MODULE_DESCRIPTION("ASoC Driver for JustBoom PI DAC HAT Sound Card");
+MODULE_LICENSE("GPL v2");
-diff --git a/sound/soc/bcm/pifi-40.c b/sound/soc/bcm/pifi-40.c
-new file mode 100644
-index 000000000000..64e755cf0595
--- /dev/null
+++ b/sound/soc/bcm/pifi-40.c
@@ -0,0 +1,281 @@
+MODULE_AUTHOR("David Knell <david.knell@gmail.com>");
+MODULE_DESCRIPTION("ALSA ASoC Machine Driver for PiFi-40");
+MODULE_LICENSE("GPL v2");
-diff --git a/sound/soc/bcm/pisound.c b/sound/soc/bcm/pisound.c
-new file mode 100644
-index 000000000000..72adf9f5aa87
--- /dev/null
+++ b/sound/soc/bcm/pisound.c
@@ -0,0 +1,1254 @@
+MODULE_AUTHOR("Giedrius Trainavicius <giedrius@blokas.io>");
+MODULE_DESCRIPTION("ASoC Driver for Pisound, https://blokas.io/pisound");
+MODULE_LICENSE("GPL v2");
-diff --git a/sound/soc/bcm/rpi-cirrus.c b/sound/soc/bcm/rpi-cirrus.c
-new file mode 100644
-index 000000000000..09383e604346
--- /dev/null
+++ b/sound/soc/bcm/rpi-cirrus.c
@@ -0,0 +1,1027 @@
+MODULE_AUTHOR("Matthias Reichl <hias@horus.com>");
+MODULE_DESCRIPTION("ASoC driver for Cirrus Logic Audio Card");
+MODULE_LICENSE("GPL");
-diff --git a/sound/soc/bcm/rpi-proto.c b/sound/soc/bcm/rpi-proto.c
-new file mode 100644
-index 000000000000..39a0e7c0975d
--- /dev/null
+++ b/sound/soc/bcm/rpi-proto.c
@@ -0,0 +1,147 @@
+MODULE_AUTHOR("Florian Meier");
+MODULE_DESCRIPTION("ASoC Driver for Raspberry Pi connected to PROTO board (WM8731)");
+MODULE_LICENSE("GPL");
-diff --git a/sound/soc/bcm/rpi-simple-soundcard.c b/sound/soc/bcm/rpi-simple-soundcard.c
-new file mode 100644
-index 000000000000..91252697800f
--- /dev/null
+++ b/sound/soc/bcm/rpi-simple-soundcard.c
@@ -0,0 +1,590 @@
+MODULE_AUTHOR("Tim Gover <tim.gover@raspberrypi.org>");
+MODULE_DESCRIPTION("ASoC Raspberry Pi simple soundcard driver ");
+MODULE_LICENSE("GPL v2");
-diff --git a/sound/soc/bcm/rpi-wm8804-soundcard.c b/sound/soc/bcm/rpi-wm8804-soundcard.c
-new file mode 100644
-index 000000000000..9e09047b6d1b
--- /dev/null
+++ b/sound/soc/bcm/rpi-wm8804-soundcard.c
@@ -0,0 +1,549 @@
+MODULE_AUTHOR("Tim Gover <tim.gover@raspberrypi.org>");
+MODULE_DESCRIPTION("ASoC Raspberry Pi Hat generic digi driver for WM8804 based cards");
+MODULE_LICENSE("GPL v2");
-diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig
-index 91ac99bc3edb..b6eed6d6d4ab 100644
--- a/sound/soc/codecs/Kconfig
+++ b/sound/soc/codecs/Kconfig
@@ -133,6 +133,7 @@ config SND_SOC_ALL_CODECS
+ depends on I2C
+
endmenu
-diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile
-index da4077463278..8cc7279814b1 100644
--- a/sound/soc/codecs/Makefile
+++ b/sound/soc/codecs/Makefile
-@@ -874,3 +874,12 @@ obj-$(CONFIG_SND_SOC_LPASS_TX_MACRO) += snd-soc-lpass-tx-macro.o
+@@ -874,3 +874,12 @@ obj-$(CONFIG_SND_SOC_LPASS_TX_MACRO) +=
# Mux
obj-$(CONFIG_SND_SOC_SIMPLE_MUX) += snd-soc-simple-mux.o
+obj-$(CONFIG_SND_SOC_MA120X0P) += snd-soc-ma120x0p.o
+obj-$(CONFIG_SND_SOC_PCM1794A) += snd-soc-pcm1794a.o
+obj-$(CONFIG_SND_SOC_TAS5713) += snd-soc-tas5713.o
-diff --git a/sound/soc/codecs/adau1977-i2c.c b/sound/soc/codecs/adau1977-i2c.c
-index 441c8079246a..034965008891 100644
--- a/sound/soc/codecs/adau1977-i2c.c
+++ b/sound/soc/codecs/adau1977-i2c.c
-@@ -35,9 +35,19 @@ static const struct i2c_device_id adau1977_i2c_ids[] = {
+@@ -35,9 +35,19 @@ static const struct i2c_device_id adau19
};
MODULE_DEVICE_TABLE(i2c, adau1977_i2c_ids);
},
.probe = adau1977_i2c_probe,
.id_table = adau1977_i2c_ids,
-diff --git a/sound/soc/codecs/cs42xx8-i2c.c b/sound/soc/codecs/cs42xx8-i2c.c
-index 039b3ecb3b9b..d1d11473066d 100644
--- a/sound/soc/codecs/cs42xx8-i2c.c
+++ b/sound/soc/codecs/cs42xx8-i2c.c
-@@ -58,11 +58,18 @@ static const struct i2c_device_id cs42xx8_i2c_id[] = {
+@@ -58,11 +58,18 @@ static const struct i2c_device_id cs42xx
};
MODULE_DEVICE_TABLE(i2c, cs42xx8_i2c_id);
},
.probe = cs42xx8_i2c_probe,
.remove = cs42xx8_i2c_remove,
-diff --git a/sound/soc/codecs/cs42xx8.c b/sound/soc/codecs/cs42xx8.c
-index 6a925f3f7137..b905e9a3538c 100644
--- a/sound/soc/codecs/cs42xx8.c
+++ b/sound/soc/codecs/cs42xx8.c
-@@ -510,6 +510,16 @@ const struct cs42xx8_driver_data cs42888_data = {
+@@ -510,6 +510,16 @@ const struct cs42xx8_driver_data cs42888
};
EXPORT_SYMBOL_GPL(cs42888_data);
int cs42xx8_probe(struct device *dev, struct regmap *regmap, struct cs42xx8_driver_data *drvdata)
{
struct cs42xx8_priv *cs42xx8;
-diff --git a/sound/soc/codecs/da7213.c b/sound/soc/codecs/da7213.c
-index 3420011da444..96bb581ae631 100644
--- a/sound/soc/codecs/da7213.c
+++ b/sound/soc/codecs/da7213.c
-@@ -1347,6 +1347,8 @@ static int da7213_hw_params(struct snd_pcm_substream *substream,
+@@ -1347,6 +1347,8 @@ static int da7213_hw_params(struct snd_p
switch (params_width(params)) {
case 16:
dai_ctrl |= DA7213_DAI_WORD_LENGTH_S16_LE;
dai_clk_mode = DA7213_DAI_BCLKS_PER_WCLK_32; /* 32bit for 1ch and 2ch */
break;
case 20:
-@@ -1362,6 +1364,9 @@ static int da7213_hw_params(struct snd_pcm_substream *substream,
+@@ -1362,6 +1364,9 @@ static int da7213_hw_params(struct snd_p
return -EINVAL;
}
/* Set sampling rate */
switch (params_rate(params)) {
case 8000:
-@@ -1524,6 +1529,21 @@ static int da7213_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt)
+@@ -1524,6 +1529,21 @@ static int da7213_set_dai_fmt(struct snd
return 0;
}
.mute_stream = da7213_mute,
.no_capture_mute = 1,
.auto_selectable_formats = &da7213_dai_formats,
-diff --git a/sound/soc/codecs/da7213.h b/sound/soc/codecs/da7213.h
-index 29cbf0eb6124..ebff7be55d43 100644
--- a/sound/soc/codecs/da7213.h
+++ b/sound/soc/codecs/da7213.h
@@ -602,6 +602,7 @@ struct da7213_priv {
int clk_src;
bool master;
bool alc_calib_auto;
-diff --git a/sound/soc/codecs/i-sabre-codec.c b/sound/soc/codecs/i-sabre-codec.c
-new file mode 100644
-index 000000000000..9903c6c9ef5f
--- /dev/null
+++ b/sound/soc/codecs/i-sabre-codec.c
@@ -0,0 +1,389 @@
+MODULE_DESCRIPTION("ASoC I-Sabre Q2M codec driver");
+MODULE_AUTHOR("Audiophonics <http://www.audiophonics.fr>");
+MODULE_LICENSE("GPL");
-diff --git a/sound/soc/codecs/i-sabre-codec.h b/sound/soc/codecs/i-sabre-codec.h
-new file mode 100644
-index 000000000000..9cac5a2446b9
--- /dev/null
+++ b/sound/soc/codecs/i-sabre-codec.h
@@ -0,0 +1,42 @@
+#define ISABRECODEC_MAX_REG 0x24 /* Maximum Register Number */
+
+#endif /* _SND_SOC_ISABRECODEC */
-diff --git a/sound/soc/codecs/ma120x0p.c b/sound/soc/codecs/ma120x0p.c
-new file mode 100644
-index 000000000000..3df7e759ace1
--- /dev/null
+++ b/sound/soc/codecs/ma120x0p.c
@@ -0,0 +1,1380 @@
+MODULE_AUTHOR("Ariel Muszkat ariel.muszkat@gmail.com>");
+MODULE_DESCRIPTION("ASoC driver for ma120x0p");
+MODULE_LICENSE("GPL v2");
-diff --git a/sound/soc/codecs/pcm1794a.c b/sound/soc/codecs/pcm1794a.c
-new file mode 100644
-index 000000000000..3877a138f896
--- /dev/null
+++ b/sound/soc/codecs/pcm1794a.c
@@ -0,0 +1,68 @@
+MODULE_DESCRIPTION("ASoC PCM1794A codec driver");
+MODULE_AUTHOR("Florian Meier <florian.meier@koalo.de>");
+MODULE_LICENSE("GPL v2");
-diff --git a/sound/soc/codecs/pcm3168a.c b/sound/soc/codecs/pcm3168a.c
-index c8617a488b11..0363869aed63 100644
--- a/sound/soc/codecs/pcm3168a.c
+++ b/sound/soc/codecs/pcm3168a.c
@@ -60,6 +60,7 @@ struct pcm3168a_priv {
struct pcm3168a_io_params io_params[2];
struct snd_soc_dai_driver dai_drv[2];
-@@ -478,6 +479,12 @@ static int pcm3168a_hw_params(struct snd_pcm_substream *substream,
+@@ -478,6 +479,12 @@ static int pcm3168a_hw_params(struct snd
ms = 0;
}
format = io_params->format;
if (io_params->slot_width)
-@@ -759,6 +766,11 @@ int pcm3168a_probe(struct device *dev, struct regmap *regmap)
+@@ -759,6 +766,11 @@ int pcm3168a_probe(struct device *dev, s
if (!pcm3168a->sysclk)
pcm3168a->sysclk = 24576000;
for (i = 0; i < ARRAY_SIZE(pcm3168a->supplies); i++)
pcm3168a->supplies[i].supply = pcm3168a_supply_names[i];
-diff --git a/sound/soc/codecs/pcm512x.c b/sound/soc/codecs/pcm512x.c
-index 007dfc0fa224..34649db9c48f 100644
--- a/sound/soc/codecs/pcm512x.c
+++ b/sound/soc/codecs/pcm512x.c
-@@ -537,7 +537,7 @@ static unsigned long pcm512x_ncp_target(struct pcm512x_priv *pcm512x,
+@@ -537,7 +537,7 @@ static unsigned long pcm512x_ncp_target(
static const u32 pcm512x_dai_rates[] = {
8000, 11025, 16000, 22050, 32000, 44100, 48000, 64000,
};
static const struct snd_pcm_hw_constraint_list constraints_slave = {
-@@ -630,7 +630,7 @@ static int pcm512x_dai_startup_slave(struct snd_pcm_substream *substream,
+@@ -630,7 +630,7 @@ static int pcm512x_dai_startup_slave(str
struct regmap *regmap = pcm512x->regmap;
if (IS_ERR(pcm512x->sclk)) {
PTR_ERR(pcm512x->sclk));
/* Disable reporting of missing SCLK as an error */
-diff --git a/sound/soc/codecs/tas5713.c b/sound/soc/codecs/tas5713.c
-new file mode 100644
-index 000000000000..01dd21a1d7a2
--- /dev/null
+++ b/sound/soc/codecs/tas5713.c
@@ -0,0 +1,360 @@
+MODULE_AUTHOR("Sebastian Eickhoff <basti.eickhoff@googlemail.com>");
+MODULE_DESCRIPTION("ASoC driver for TAS5713");
+MODULE_LICENSE("GPL v2");
-diff --git a/sound/soc/codecs/tas5713.h b/sound/soc/codecs/tas5713.h
-new file mode 100644
-index 000000000000..8f019e048987
--- /dev/null
+++ b/sound/soc/codecs/tas5713.h
@@ -0,0 +1,210 @@
+
+
+#endif /* _TAS5713_H */
-diff --git a/sound/soc/dwc/dwc-i2s.c b/sound/soc/dwc/dwc-i2s.c
-index 28001e9857d9..0df1bfc52f4e 100644
--- a/sound/soc/dwc/dwc-i2s.c
+++ b/sound/soc/dwc/dwc-i2s.c
-@@ -209,12 +209,21 @@ static void i2s_start(struct dw_i2s_dev *dev,
+@@ -209,12 +209,21 @@ static void i2s_start(struct dw_i2s_dev
static void i2s_stop(struct dw_i2s_dev *dev,
struct snd_pcm_substream *substream)
{
if (!(dev->use_pio || dev->is_jh7110))
i2s_disable_dma(dev, substream->stream);
-@@ -224,14 +233,39 @@ static void i2s_stop(struct dw_i2s_dev *dev,
+@@ -224,14 +233,39 @@ static void i2s_stop(struct dw_i2s_dev *
if (!dev->active) {
i2s_write_reg(dev->i2s_base, CER, 0);
if (dev->is_jh7110) {
struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(substream);
-@@ -243,22 +277,52 @@ static int dw_i2s_startup(struct snd_pcm_substream *substream,
+@@ -243,22 +277,52 @@ static int dw_i2s_startup(struct snd_pcm
return 0;
}
} else {
i2s_write_reg(dev->i2s_base, RCR(ch_reg),
dev->xfer_resolution);
-@@ -266,9 +330,11 @@ static void dw_i2s_config(struct dw_i2s_dev *dev, int stream)
+@@ -266,9 +330,11 @@ static void dw_i2s_config(struct dw_i2s_
dev->fifo_th - 1);
i2s_write_reg(dev->i2s_base, RER(ch_reg), RER_RXCHEN |
dev->tdm_mask << RER_RXSLOT_SHIFT);
}
static int dw_i2s_hw_params(struct snd_pcm_substream *substream,
-@@ -276,24 +342,32 @@ static int dw_i2s_hw_params(struct snd_pcm_substream *substream,
+@@ -276,24 +342,32 @@ static int dw_i2s_hw_params(struct snd_p
{
struct dw_i2s_dev *dev = snd_soc_dai_get_drvdata(dai);
struct i2s_clk_config_data *config = &dev->config;
dev->xfer_resolution = 0x05;
break;
-@@ -314,17 +388,37 @@ static int dw_i2s_hw_params(struct snd_pcm_substream *substream,
+@@ -314,17 +388,37 @@ static int dw_i2s_hw_params(struct snd_p
case TWO_CHANNEL_SUPPORT:
break;
default:
if (dev->i2s_clk_cfg) {
ret = dev->i2s_clk_cfg(config);
if (ret < 0) {
-@@ -332,8 +426,7 @@ static int dw_i2s_hw_params(struct snd_pcm_substream *substream,
+@@ -332,8 +426,7 @@ static int dw_i2s_hw_params(struct snd_p
return ret;
}
} else {
ret = clk_set_rate(dev->clk, bitclk);
if (ret) {
-@@ -342,6 +435,8 @@ static int dw_i2s_hw_params(struct snd_pcm_substream *substream,
+@@ -342,6 +435,8 @@ static int dw_i2s_hw_params(struct snd_p
return ret;
}
}
}
return 0;
}
-@@ -373,9 +468,12 @@ static int dw_i2s_trigger(struct snd_pcm_substream *substream,
+@@ -373,9 +468,12 @@ static int dw_i2s_trigger(struct snd_pcm
i2s_start(dev, substream);
break;
dev->active--;
i2s_stop(dev, substream);
break;
-@@ -459,6 +557,18 @@ static int dw_i2s_set_tdm_slot(struct snd_soc_dai *cpu_dai, unsigned int tx_mask
+@@ -459,6 +557,18 @@ static int dw_i2s_set_tdm_slot(struct sn
return 0;
}
static int dw_i2s_dai_probe(struct snd_soc_dai *dai)
{
struct dw_i2s_dev *dev = snd_soc_dai_get_drvdata(dai);
-@@ -470,11 +580,13 @@ static int dw_i2s_dai_probe(struct snd_soc_dai *dai)
+@@ -470,11 +580,13 @@ static int dw_i2s_dai_probe(struct snd_s
static const struct snd_soc_dai_ops dw_i2s_dai_ops = {
.probe = dw_i2s_dai_probe,
.startup = dw_i2s_startup,
};
static int dw_i2s_runtime_suspend(struct device *dev)
-@@ -605,7 +717,7 @@ static int dw_configure_dai(struct dw_i2s_dev *dev,
+@@ -605,7 +717,7 @@ static int dw_configure_dai(struct dw_i2
idx = 1;
dw_i2s_dai->playback.channels_min = MIN_CHANNEL_NUM;
dw_i2s_dai->playback.channels_max =
dw_i2s_dai->playback.formats = formats[idx];
dw_i2s_dai->playback.rates = rates;
}
-@@ -619,7 +731,7 @@ static int dw_configure_dai(struct dw_i2s_dev *dev,
+@@ -619,7 +731,7 @@ static int dw_configure_dai(struct dw_i2
idx = 1;
dw_i2s_dai->capture.channels_min = MIN_CHANNEL_NUM;
dw_i2s_dai->capture.channels_max =
dw_i2s_dai->capture.formats = formats[idx];
dw_i2s_dai->capture.rates = rates;
}
-@@ -680,8 +792,8 @@ static int dw_configure_dai_by_pd(struct dw_i2s_dev *dev,
+@@ -680,8 +792,8 @@ static int dw_configure_dai_by_pd(struct
dev->capture_dma_data.pd.data = pdata->capture_dma_data;
dev->play_dma_data.pd.addr = res->start + I2S_TXDMA;
dev->capture_dma_data.pd.addr = res->start + I2S_RXDMA;
dev->play_dma_data.pd.addr_width = bus_widths[idx];
dev->capture_dma_data.pd.addr_width = bus_widths[idx];
dev->play_dma_data.pd.filter = pdata->filter;
-@@ -701,7 +813,7 @@ static int dw_configure_dai_by_dt(struct dw_i2s_dev *dev,
+@@ -701,7 +813,7 @@ static int dw_configure_dai_by_dt(struct
u32 idx2;
int ret;
if (ret < 0)
return ret;
-@@ -712,7 +824,10 @@ static int dw_configure_dai_by_dt(struct dw_i2s_dev *dev,
+@@ -712,7 +824,10 @@ static int dw_configure_dai_by_dt(struct
dev->play_dma_data.dt.addr = res->start + I2S_TXDMA;
dev->play_dma_data.dt.fifo_size = fifo_depth *
(fifo_width[idx2]) >> 8;
}
if (COMP1_RX_ENABLED(comp1)) {
idx2 = COMP2_RX_WORDSIZE_0(comp2);
-@@ -721,9 +836,14 @@ static int dw_configure_dai_by_dt(struct dw_i2s_dev *dev,
+@@ -721,9 +836,14 @@ static int dw_configure_dai_by_dt(struct
dev->capture_dma_data.dt.addr = res->start + I2S_RXDMA;
dev->capture_dma_data.dt.fifo_size = fifo_depth *
(fifo_width[idx2] >> 8);
return 0;
}
-@@ -967,6 +1087,8 @@ static int dw_i2s_probe(struct platform_device *pdev)
+@@ -967,6 +1087,8 @@ static int dw_i2s_probe(struct platform_
}
}
dev->i2s_reg_comp1 = I2S_COMP_PARAM_1;
dev->i2s_reg_comp2 = I2S_COMP_PARAM_2;
if (pdata) {
-diff --git a/sound/soc/dwc/local.h b/sound/soc/dwc/local.h
-index dce88c9ad5f3..afff89db5dbb 100644
--- a/sound/soc/dwc/local.h
+++ b/sound/soc/dwc/local.h
@@ -63,6 +63,17 @@
u32 l_reg;
u32 r_reg;
bool is_jh7110; /* Flag for StarFive JH7110 SoC */
-diff --git a/sound/soc/raspberrypi/Kconfig b/sound/soc/raspberrypi/Kconfig
-new file mode 100644
-index 000000000000..389bb82e3651
--- /dev/null
+++ b/sound/soc/raspberrypi/Kconfig
@@ -0,0 +1,12 @@
+ Output is from RP1 GPIOs pins 12 and 13 only, and additional
+ components will be needed. It may be useful when HDMI, I2S
+ or USB audio devices are unavailable, or for compatibility.
-diff --git a/sound/soc/raspberrypi/Makefile b/sound/soc/raspberrypi/Makefile
-new file mode 100644
-index 000000000000..80ff460c785a
--- /dev/null
+++ b/sound/soc/raspberrypi/Makefile
@@ -0,0 +1,2 @@
+# SPDX-License-Identifier: GPL-2.0-only
+obj-$(CONFIG_SND_RP1_AUDIO_OUT) += rp1_aout.o
-diff --git a/sound/soc/raspberrypi/rp1_aout.c b/sound/soc/raspberrypi/rp1_aout.c
-new file mode 100644
-index 000000000000..ffcc7b815d5e
--- /dev/null
+++ b/sound/soc/raspberrypi/rp1_aout.c
@@ -0,0 +1,372 @@
+MODULE_AUTHOR("Nick Hollinghurst <nick.hollinghurst@raspberrypi.com>");
+MODULE_AUTHOR("Jonathan Bell <jonathan@raspberrypi.com>");
+MODULE_LICENSE("GPL");
-diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
-index 7a6b4ec3a699..5e790314ac40 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
-@@ -1484,8 +1484,16 @@ int snd_soc_runtime_set_dai_fmt(struct snd_soc_pcm_runtime *rtd,
+@@ -1484,8 +1484,16 @@ int snd_soc_runtime_set_dai_fmt(struct s
* ext_fmt includes 4
*/
for_each_rtd_codec_dais(rtd, i, codec_dai) {
if (ret != 0 && ret != -ENOTSUPP)
return ret;
}
-diff --git a/sound/usb/card.c b/sound/usb/card.c
-index 270dad84d825..970ad247a507 100644
--- a/sound/usb/card.c
+++ b/sound/usb/card.c
-@@ -1006,8 +1006,14 @@ static int usb_audio_probe(struct usb_interface *intf,
+@@ -1006,8 +1006,14 @@ static int usb_audio_probe(struct usb_in
if (ignore_ctl_error)
chip->quirk_flags |= QUIRK_FLAG_IGNORE_CTL_ERROR;
/*
* For devices with more than one control interface, we assume the
-diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
-index 9f585dbc770c..e2ab7b1ba1a8 100644
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
-@@ -2410,6 +2410,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
+@@ -2412,6 +2412,8 @@ static const struct usb_audio_quirk_flag
QUIRK_FLAG_ALIGN_TRANSFER),
DEVICE_FLG(0x534d, 0x2109, /* MacroSilicon MS2109 */
QUIRK_FLAG_ALIGN_TRANSFER),
/* Vendor matches */
VENDOR_FLG(0x045e, /* MS Lifecam */
---
-2.54.0
-
3 files changed, 126 insertions(+)
create mode 100644 drivers/video/backlight/rpi_backlight.c
-diff --git a/drivers/video/backlight/Kconfig b/drivers/video/backlight/Kconfig
-index d9374d208cee..7b836f9adf91 100644
--- a/drivers/video/backlight/Kconfig
+++ b/drivers/video/backlight/Kconfig
@@ -249,6 +249,13 @@ config BACKLIGHT_PWM
config BACKLIGHT_DA903X
tristate "Backlight Driver for DA9030/DA9034 using WLED"
depends on PMIC_DA903X
-diff --git a/drivers/video/backlight/Makefile b/drivers/video/backlight/Makefile
-index dfbb169bf6ea..bcb568afe5d4 100644
--- a/drivers/video/backlight/Makefile
+++ b/drivers/video/backlight/Makefile
-@@ -52,6 +52,7 @@ obj-$(CONFIG_BACKLIGHT_OMAP1) += omap1_bl.o
+@@ -52,6 +52,7 @@ obj-$(CONFIG_BACKLIGHT_OMAP1) += omap1_
obj-$(CONFIG_BACKLIGHT_PANDORA) += pandora_bl.o
obj-$(CONFIG_BACKLIGHT_PWM) += pwm_bl.o
obj-$(CONFIG_BACKLIGHT_QCOM_WLED) += qcom-wled.o
obj-$(CONFIG_BACKLIGHT_RT4831) += rt4831-backlight.o
obj-$(CONFIG_BACKLIGHT_SAHARA) += kb3886_bl.o
obj-$(CONFIG_BACKLIGHT_SKY81452) += sky81452-backlight.o
-diff --git a/drivers/video/backlight/rpi_backlight.c b/drivers/video/backlight/rpi_backlight.c
-new file mode 100644
-index 000000000000..877f29f1d7b0
--- /dev/null
+++ b/drivers/video/backlight/rpi_backlight.c
@@ -0,0 +1,118 @@
+MODULE_AUTHOR("Gordon Hollingworth <gordon@raspberrypi.org>");
+MODULE_DESCRIPTION("Raspberry Pi mailbox based Backlight Driver");
+MODULE_LICENSE("GPL");
---
-2.54.0
-
3 files changed, 220 insertions(+)
create mode 100644 drivers/gpio/gpio-bcm-virt.c
-diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
-index 4d644dcecad9..8ce7a57de297 100644
--- a/drivers/gpio/Kconfig
+++ b/drivers/gpio/Kconfig
@@ -237,6 +237,12 @@ config GPIO_BLZP1600
config GPIO_BRCMSTB
tristate "BRCMSTB GPIO support"
default y if (ARCH_BRCMSTB || BMIPS_GENERIC)
-diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile
-index ec296fa14bfd..75dbe47f4a32 100644
--- a/drivers/gpio/Makefile
+++ b/drivers/gpio/Makefile
-@@ -43,6 +43,7 @@ obj-$(CONFIG_GPIO_ASPEED_SGPIO) += gpio-aspeed-sgpio.o
+@@ -43,6 +43,7 @@ obj-$(CONFIG_GPIO_ASPEED_SGPIO) += gpio
obj-$(CONFIG_GPIO_ATH79) += gpio-ath79.o
obj-$(CONFIG_GPIO_BCM_KONA) += gpio-bcm-kona.o
obj-$(CONFIG_GPIO_BCM_XGS_IPROC) += gpio-xgs-iproc.o
obj-$(CONFIG_GPIO_BD71815) += gpio-bd71815.o
obj-$(CONFIG_GPIO_BD71828) += gpio-bd71828.o
obj-$(CONFIG_GPIO_BD9571MWV) += gpio-bd9571mwv.o
-diff --git a/drivers/gpio/gpio-bcm-virt.c b/drivers/gpio/gpio-bcm-virt.c
-new file mode 100644
-index 000000000000..037bd7a3f64e
--- /dev/null
+++ b/drivers/gpio/gpio-bcm-virt.c
@@ -0,0 +1,213 @@
+MODULE_AUTHOR("Dom Cobley <popcornmix@gmail.com>");
+MODULE_DESCRIPTION("brcmvirt GPIO driver");
+MODULE_ALIAS("platform:brcmvirt-gpio");
---
-2.54.0
-
create mode 100644 Documentation/devicetree/configfs-overlays.txt
create mode 100644 drivers/of/configfs.c
-diff --git a/Documentation/devicetree/configfs-overlays.txt b/Documentation/devicetree/configfs-overlays.txt
-new file mode 100644
-index 000000000000..5fa43e064307
--- /dev/null
+++ b/Documentation/devicetree/configfs-overlays.txt
@@ -0,0 +1,31 @@
+better suited to different use patterns. The firmware interface is what's
+intended to be used by hardware managers in the kernel, while the copy interface
+make sense for developers (since it avoids problems with namespaces).
-diff --git a/drivers/of/Kconfig b/drivers/of/Kconfig
-index 50697cc3b07e..9c1af8445ec7 100644
--- a/drivers/of/Kconfig
+++ b/drivers/of/Kconfig
@@ -126,4 +126,15 @@ config OF_OVERLAY_KUNIT_TEST
+ Enable a simple user-space driven DT overlay interface.
+
endif # OF
-diff --git a/drivers/of/Makefile b/drivers/of/Makefile
-index 379a0afcbdc0..f294b36207f8 100644
--- a/drivers/of/Makefile
+++ b/drivers/of/Makefile
@@ -1,6 +1,7 @@
obj-$(CONFIG_OF_DYNAMIC) += dynamic.o
obj-$(CONFIG_OF_FLATTREE) += fdt.o empty_root.dtb.o
obj-$(CONFIG_OF_EARLY_FLATTREE) += fdt_address.o
-diff --git a/drivers/of/configfs.c b/drivers/of/configfs.c
-new file mode 100644
-index 000000000000..0e6bccb8ff2e
--- /dev/null
+++ b/drivers/of/configfs.c
@@ -0,0 +1,277 @@
+ return ret;
+}
+late_initcall(of_cfs_init);
---
-2.54.0
-
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
-diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
-index 4e6ed02c1591..b3c4ac025e91 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -609,6 +609,7 @@ BRCMF_FW_DEF(4329, "brcmfmac4329-sdio");
BRCMF_FW_DEF(4335, "brcmfmac4335-sdio");
BRCMF_FW_DEF(43362, "brcmfmac43362-sdio");
BRCMF_FW_DEF(4339, "brcmfmac4339-sdio");
-@@ -641,7 +642,7 @@ static const struct brcmf_firmware_mapping brcmf_sdio_fwnames[] = {
+@@ -641,7 +642,7 @@ static const struct brcmf_firmware_mappi
BRCMF_FW_ENTRY(BRCM_CC_4330_CHIP_ID, 0xFFFFFFFF, 4330),
BRCMF_FW_ENTRY(BRCM_CC_4334_CHIP_ID, 0xFFFFFFFF, 4334),
BRCMF_FW_ENTRY(BRCM_CC_43340_CHIP_ID, 0xFFFFFFFF, 43340),
BRCMF_FW_ENTRY(BRCM_CC_4335_CHIP_ID, 0xFFFFFFFF, 4335),
BRCMF_FW_ENTRY(BRCM_CC_43362_CHIP_ID, 0xFFFFFFFE, 43362),
BRCMF_FW_ENTRY(BRCM_CC_4339_CHIP_ID, 0xFFFFFFFF, 4339),
---
-2.54.0
-
drivers/bluetooth/hci_h5.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
-diff --git a/drivers/bluetooth/hci_h5.c b/drivers/bluetooth/hci_h5.c
-index d0d4420c1a0f..c6bf30801b49 100644
--- a/drivers/bluetooth/hci_h5.c
+++ b/drivers/bluetooth/hci_h5.c
-@@ -358,7 +358,8 @@ static void h5_handle_internal_rx(struct hci_uart *hu)
+@@ -358,7 +358,8 @@ static void h5_handle_internal_rx(struct
h5_link_control(hu, conf_req, 3);
} else if (memcmp(data, conf_req, 2) == 0) {
h5_link_control(hu, conf_rsp, 2);
} else if (memcmp(data, conf_rsp, 2) == 0) {
if (H5_HDR_LEN(hdr) > 2)
h5->tx_win = (data[2] & 0x07);
---
-2.54.0
-
include/linux/irqchip/irq-bcm2836.h | 2 ++
3 files changed, 38 insertions(+), 1 deletion(-)
-diff --git a/drivers/irqchip/irq-bcm2835.c b/drivers/irqchip/irq-bcm2835.c
-index 527cc962d6fd..176c487505af 100644
--- a/drivers/irqchip/irq-bcm2835.c
+++ b/drivers/irqchip/irq-bcm2835.c
@@ -40,6 +40,7 @@
#include <linux/irqdomain.h>
#include <asm/exception.h>
-@@ -154,12 +155,24 @@ static void armctrl_unmask_irq(struct irq_data *d)
+@@ -154,12 +155,24 @@ static void armctrl_unmask_irq(struct ir
}
}
};
static int armctrl_xlate(struct irq_domain *d, struct device_node *ctrlr,
-@@ -332,7 +345,8 @@ static void bcm2836_chained_handle_irq(struct irq_desc *desc)
+@@ -332,7 +345,8 @@ static void bcm2836_chained_handle_irq(s
{
u32 hwirq;
generic_handle_domain_irq(intc.domain, hwirq);
}
-diff --git a/drivers/irqchip/irq-bcm2836.c b/drivers/irqchip/irq-bcm2836.c
-index 22519f3f4f66..85f16f308bcd 100644
--- a/drivers/irqchip/irq-bcm2836.c
+++ b/drivers/irqchip/irq-bcm2836.c
-@@ -89,6 +89,27 @@ static void bcm2836_arm_irqchip_unmask_gpu_irq(struct irq_data *d)
+@@ -89,6 +89,27 @@ static void bcm2836_arm_irqchip_unmask_g
{
}
static struct irq_chip bcm2836_arm_irqchip_gpu = {
.name = "bcm2836-gpu",
.irq_mask = bcm2836_arm_irqchip_mask_gpu_irq,
-diff --git a/include/linux/irqchip/irq-bcm2836.h b/include/linux/irqchip/irq-bcm2836.h
-index ac5719d8f56b..6fe053486447 100644
--- a/include/linux/irqchip/irq-bcm2836.h
+++ b/include/linux/irqchip/irq-bcm2836.h
@@ -59,3 +59,5 @@
#define LAST_IRQ LOCAL_IRQ_PMU_FAST
+
+void bcm2836_arm_irqchip_spin_gpu_irq(void);
---
-2.54.0
-
arch/arm64/kernel/armv8_deprecated.c | 5 +++++
1 file changed, 5 insertions(+)
-diff --git a/arch/arm64/kernel/armv8_deprecated.c b/arch/arm64/kernel/armv8_deprecated.c
-index e737c6295ec7..abb590819ac0 100644
--- a/arch/arm64/kernel/armv8_deprecated.c
+++ b/arch/arm64/kernel/armv8_deprecated.c
-@@ -540,9 +540,14 @@ static void __init register_insn_emulation(struct insn_emulation *insn)
+@@ -540,9 +540,14 @@ static void __init register_insn_emulati
switch (insn->status) {
case INSN_DEPRECATED:
insn->max = INSN_HW;
break;
case INSN_OBSOLETE:
---
-2.54.0
-
3 files changed, 835 insertions(+)
create mode 100644 drivers/perf/raspberrypi_axi_monitor.c
-diff --git a/drivers/perf/Kconfig b/drivers/perf/Kconfig
-index 638321fc9800..e882f75e7a7a 100644
--- a/drivers/perf/Kconfig
+++ b/drivers/perf/Kconfig
@@ -271,6 +271,14 @@ config ALIBABA_UNCORE_DRW_PMU
source "drivers/perf/hisilicon/Kconfig"
config MARVELL_CN10K_DDR_PMU
-diff --git a/drivers/perf/Makefile b/drivers/perf/Makefile
-index ea52711a87e3..1ab73aa986d4 100644
--- a/drivers/perf/Makefile
+++ b/drivers/perf/Makefile
-@@ -35,3 +35,4 @@ obj-$(CONFIG_DWC_PCIE_PMU) += dwc_pcie_pmu.o
+@@ -35,3 +35,4 @@ obj-$(CONFIG_DWC_PCIE_PMU) += dwc_pcie_p
obj-$(CONFIG_ARM_CORESIGHT_PMU_ARCH_SYSTEM_PMU) += arm_cspmu/
obj-$(CONFIG_MESON_DDR_PMU) += amlogic/
obj-$(CONFIG_CXL_PMU) += cxl_pmu.o
+obj-$(CONFIG_RPI_AXIPERF) += raspberrypi_axi_monitor.o
-diff --git a/drivers/perf/raspberrypi_axi_monitor.c b/drivers/perf/raspberrypi_axi_monitor.c
-new file mode 100644
-index 000000000000..b5ad12a2a9ab
--- /dev/null
+++ b/drivers/perf/raspberrypi_axi_monitor.c
@@ -0,0 +1,826 @@
+MODULE_DESCRIPTION("RPI AXI Performance monitor driver");
+MODULE_LICENSE("GPL");
+
---
-2.54.0
-
arch/arm/mach-bcm/board_bcm2835.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
-diff --git a/arch/arm/mach-bcm/board_bcm2835.c b/arch/arm/mach-bcm/board_bcm2835.c
-index bfc556f76720..73ec2427fbcf 100644
--- a/arch/arm/mach-bcm/board_bcm2835.c
+++ b/arch/arm/mach-bcm/board_bcm2835.c
@@ -6,12 +6,25 @@
static const char * const bcm2835_compat[] = {
#ifdef CONFIG_ARCH_MULTI_V6
"brcm,bcm2835",
-@@ -24,6 +37,7 @@ static const char * const bcm2835_compat[] = {
+@@ -24,6 +37,7 @@ static const char * const bcm2835_compat
};
DT_MACHINE_START(BCM2835, "BCM2835")
.dt_compat = bcm2835_compat,
.smp = smp_ops(bcm2836_smp_ops),
MACHINE_END
---
-2.54.0
-
arch/arm/mach-bcm/board_bcm2835.c | 69 +++++++++++++++++++++++++++++++
1 file changed, 69 insertions(+)
-diff --git a/arch/arm/mach-bcm/board_bcm2835.c b/arch/arm/mach-bcm/board_bcm2835.c
-index 73ec2427fbcf..9b6c921106b5 100644
--- a/arch/arm/mach-bcm/board_bcm2835.c
+++ b/arch/arm/mach-bcm/board_bcm2835.c
@@ -6,6 +6,7 @@
static const char * const bcm2835_compat[] = {
#ifdef CONFIG_ARCH_MULTI_V6
"brcm,bcm2835",
-@@ -37,6 +105,7 @@ static const char * const bcm2835_compat[] = {
+@@ -37,6 +105,7 @@ static const char * const bcm2835_compat
};
DT_MACHINE_START(BCM2835, "BCM2835")
.init_machine = bcm2835_init,
.dt_compat = bcm2835_compat,
.smp = smp_ops(bcm2836_smp_ops),
---
-2.54.0
-
arch/arm/kernel/fiq.c | 4 ++++
1 file changed, 4 insertions(+)
-diff --git a/arch/arm/kernel/fiq.c b/arch/arm/kernel/fiq.c
-index d2c8e5313539..bb320f08ad2f 100644
--- a/arch/arm/kernel/fiq.c
+++ b/arch/arm/kernel/fiq.c
@@ -57,6 +57,8 @@
enable_irq(fiq + fiq_start);
}
---
-2.54.0
-
drivers/i2c/busses/i2c-gpio.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
-diff --git a/drivers/i2c/busses/i2c-gpio.c b/drivers/i2c/busses/i2c-gpio.c
-index f4355b17bfbf..d83b19a37fd6 100644
--- a/drivers/i2c/busses/i2c-gpio.c
+++ b/drivers/i2c/busses/i2c-gpio.c
-@@ -428,7 +428,9 @@ static int i2c_gpio_probe(struct platform_device *pdev)
+@@ -428,7 +428,9 @@ static int i2c_gpio_probe(struct platfor
adap->dev.parent = dev;
device_set_node(&adap->dev, fwnode);
ret = i2c_bit_add_numbered_bus(adap);
if (ret)
return ret;
---
-2.54.0
-
drivers/pps/clients/pps-gpio.c | 3 +++
1 file changed, 3 insertions(+)
-diff --git a/drivers/pps/clients/pps-gpio.c b/drivers/pps/clients/pps-gpio.c
-index 935da68610c7..65d17781ddb7 100644
--- a/drivers/pps/clients/pps-gpio.c
+++ b/drivers/pps/clients/pps-gpio.c
-@@ -117,6 +117,9 @@ static int pps_gpio_setup(struct device *dev)
+@@ -117,6 +117,9 @@ static int pps_gpio_setup(struct device
data->assert_falling_edge =
device_property_read_bool(dev, "assert-falling-edge");
data->echo_pin = devm_gpiod_get_optional(dev, "echo", GPIOD_OUT_LOW);
if (IS_ERR(data->echo_pin))
return dev_err_probe(dev, PTR_ERR(data->echo_pin),
---
-2.54.0
-
drivers/hid/usbhid/hid-core.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
-diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
-index 758eb21430cd..7e59ae6faf7f 100644
--- a/drivers/hid/usbhid/hid-core.c
+++ b/drivers/hid/usbhid/hid-core.c
@@ -47,7 +47,7 @@
module_param_named(mousepoll, hid_mousepoll_interval, uint, 0644);
MODULE_PARM_DESC(mousepoll, "Polling interval of mice");
-@@ -1132,7 +1132,9 @@ static int usbhid_start(struct hid_device *hid)
+@@ -1133,7 +1133,9 @@ static int usbhid_start(struct hid_devic
*/
switch (hid->collection->usage) {
case HID_GD_MOUSE:
interval = hid_mousepoll_interval;
break;
case HID_GD_JOYSTICK:
-@@ -1144,6 +1146,7 @@ static int usbhid_start(struct hid_device *hid)
+@@ -1145,6 +1147,7 @@ static int usbhid_start(struct hid_devic
interval = hid_kbpoll_interval;
break;
}
ret = -ENOMEM;
if (usb_endpoint_dir_in(endpoint)) {
---
-2.54.0
-
drivers/firmware/raspberrypi.c | 40 +++++++++++++++++++++++++++++++++-
1 file changed, 39 insertions(+), 1 deletion(-)
-diff --git a/drivers/firmware/raspberrypi.c b/drivers/firmware/raspberrypi.c
-index 3ce22dac1786..01e356de79eb 100644
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
@@ -14,6 +14,7 @@
#include <linux/slab.h>
#include <soc/bcm2835/raspberrypi-firmware.h>
-@@ -182,6 +183,26 @@ int rpi_firmware_property(struct rpi_firmware *fw,
+@@ -182,6 +183,26 @@ int rpi_firmware_property(struct rpi_fir
}
EXPORT_SYMBOL_GPL(rpi_firmware_property);
static void
rpi_firmware_print_firmware_revision(struct rpi_firmware *fw)
{
-@@ -413,15 +434,32 @@ static struct platform_driver rpi_firmware_driver = {
+@@ -413,15 +434,32 @@ static struct platform_driver rpi_firmwa
.remove = rpi_firmware_remove,
};
}
module_exit(rpi_firmware_exit);
---
-2.54.0
-
drivers/irqchip/irq-bcm2835.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
-diff --git a/drivers/irqchip/irq-bcm2835.c b/drivers/irqchip/irq-bcm2835.c
-index 176c487505af..a9a4ec9cdc94 100644
--- a/drivers/irqchip/irq-bcm2835.c
+++ b/drivers/irqchip/irq-bcm2835.c
@@ -75,8 +75,6 @@
static const int reg_pending[] __initconst = { 0x00, 0x04, 0x08 };
static const int reg_enable[] __initconst = { 0x18, 0x10, 0x14 };
-@@ -205,7 +203,7 @@ static int __init armctrl_of_init(struct device_node *node,
+@@ -205,7 +203,7 @@ static int __init armctrl_of_init(struct
bool is_2836)
{
void __iomem *base;
u32 reg;
base = of_iomap(node, 0);
-@@ -245,6 +243,8 @@ static int __init armctrl_of_init(struct device_node *node,
+@@ -245,6 +243,8 @@ static int __init armctrl_of_init(struct
pr_err(FW_BUG "Bootloader left fiq enabled\n");
}
if (is_2836) {
int parent_irq = irq_of_parse_and_map(node, 0);
-@@ -275,7 +275,7 @@ static int __init armctrl_of_init(struct device_node *node,
+@@ -275,7 +275,7 @@ static int __init armctrl_of_init(struct
}
}
#ifndef CONFIG_ARM64
#endif
return 0;
---
-2.54.0
-
drivers/media/spi/Kconfig | 1 +
1 file changed, 1 insertion(+)
-diff --git a/drivers/media/spi/Kconfig b/drivers/media/spi/Kconfig
-index 4656afae5bb4..328ea94d14f9 100644
--- a/drivers/media/spi/Kconfig
+++ b/drivers/media/spi/Kconfig
@@ -9,6 +9,7 @@ menu "Media SPI Adapters"
default m if !MEDIA_SUBDRV_AUTOSELECT
help
Choose if you would like to have SPI interface support for Sony CXD2880.
---
-2.54.0
-
drivers/firmware/raspberrypi.c | 40 +++++++++++++++++++++++++++++++++-
1 file changed, 39 insertions(+), 1 deletion(-)
-diff --git a/drivers/firmware/raspberrypi.c b/drivers/firmware/raspberrypi.c
-index 01e356de79eb..be4d1d45a993 100644
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
-@@ -208,6 +208,15 @@ rpi_firmware_print_firmware_revision(struct rpi_firmware *fw)
+@@ -208,6 +208,15 @@ rpi_firmware_print_firmware_revision(str
{
time64_t date_and_time;
u32 packet;
int ret = rpi_firmware_property(fw,
RPI_FIRMWARE_GET_FIRMWARE_REVISION,
&packet, sizeof(packet));
-@@ -217,7 +226,35 @@ rpi_firmware_print_firmware_revision(struct rpi_firmware *fw)
+@@ -217,7 +226,35 @@ rpi_firmware_print_firmware_revision(str
/* This is not compatible with y2038 */
date_and_time = packet;
}
static void
-@@ -327,6 +364,7 @@ static int rpi_firmware_probe(struct platform_device *pdev)
+@@ -327,6 +364,7 @@ static int rpi_firmware_probe(struct pla
g_pdev = pdev;
rpi_firmware_print_firmware_revision(fw);
rpi_register_hwmon_driver(dev, fw);
rpi_register_clk_driver(dev);
---
-2.54.0
-
drivers/net/usb/lan78xx.c | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
-diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
-index 858a442d6996..5c1d742cd718 100644
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -596,6 +596,15 @@ static int lan78xx_alloc_tx_resources(struct lan78xx_net *dev)
+@@ -596,6 +596,15 @@ static int lan78xx_alloc_tx_resources(st
dev->n_tx_urbs, dev->tx_urb_size, dev);
}
static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
{
u32 *buf;
-@@ -3758,8 +3767,14 @@ static int lan78xx_bind(struct lan78xx_net *dev, struct usb_interface *intf)
+@@ -3758,8 +3767,14 @@ static int lan78xx_bind(struct lan78xx_n
if (DEFAULT_RX_CSUM_ENABLE)
dev->net->features |= NETIF_F_RXCSUM;
if (DEFAULT_VLAN_RX_OFFLOAD)
dev->net->features |= NETIF_F_HW_VLAN_CTAG_RX;
---
-2.54.0
-
include/linux/microchipphy.h | 8 ++++++
3 files changed, 38 insertions(+)
-diff --git a/Documentation/devicetree/bindings/net/microchip,lan78xx.txt b/Documentation/devicetree/bindings/net/microchip,lan78xx.txt
-index 11a679530ae6..104768b85bbc 100644
--- a/Documentation/devicetree/bindings/net/microchip,lan78xx.txt
+++ b/Documentation/devicetree/bindings/net/microchip,lan78xx.txt
@@ -14,6 +14,9 @@ Optional properties of the embedded PHY:
Example:
-diff --git a/drivers/net/phy/microchip.c b/drivers/net/phy/microchip.c
-index dc8634e7bcbe..53f6f7c89237 100644
--- a/drivers/net/phy/microchip.c
+++ b/drivers/net/phy/microchip.c
-@@ -198,6 +198,7 @@ static int lan88xx_probe(struct phy_device *phydev)
+@@ -198,6 +198,7 @@ static int lan88xx_probe(struct phy_devi
struct device *dev = &phydev->mdio.dev;
struct lan88xx_priv *priv;
u32 led_modes[4];
int len;
priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
-@@ -227,6 +228,32 @@ static int lan88xx_probe(struct phy_device *phydev)
+@@ -227,6 +228,32 @@ static int lan88xx_probe(struct phy_devi
return -EINVAL;
}
/* these values can be used to identify internal PHY */
priv->chip_id = phy_read_mmd(phydev, 3, LAN88XX_MMD3_CHIP_ID);
priv->chip_rev = phy_read_mmd(phydev, 3, LAN88XX_MMD3_CHIP_REV);
-diff --git a/include/linux/microchipphy.h b/include/linux/microchipphy.h
-index 517288da19fd..626c450d71f4 100644
--- a/include/linux/microchipphy.h
+++ b/include/linux/microchipphy.h
@@ -61,6 +61,14 @@
/* DSP registers */
#define PHY_ARDENNES_MMD_DEV_3_PHY_CFG (0x806A)
#define PHY_ARDENNES_MMD_DEV_3_PHY_CFG_ZD_DLY_EN_ (0x2000)
---
-2.54.0
-
drivers/net/usb/lan78xx.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
-diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
-index 5c1d742cd718..05f6e51d5027 100644
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
@@ -605,6 +605,11 @@ static bool enable_tso;
static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
{
u32 *buf;
-@@ -4737,7 +4742,13 @@ static int lan78xx_probe(struct usb_interface *intf,
+@@ -4737,7 +4742,13 @@ static int lan78xx_probe(struct usb_inte
if (ret < 0)
goto out4;
maxp = usb_maxpacket(dev->udev, dev->pipe_intr);
dev->urb_intr = usb_alloc_urb(0, GFP_KERNEL);
---
-2.54.0
-
drivers/net/usb/lan78xx.c | 1 +
1 file changed, 1 insertion(+)
-diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
-index 05f6e51d5027..21b99bfc9725 100644
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -1932,6 +1932,7 @@ static const struct ethtool_ops lan78xx_ethtool_ops = {
+@@ -1932,6 +1932,7 @@ static const struct ethtool_ops lan78xx_
.set_link_ksettings = lan78xx_set_link_ksettings,
.get_regs_len = lan78xx_get_regs_len,
.get_regs = lan78xx_get_regs,
};
static int lan78xx_init_mac_address(struct lan78xx_net *dev)
---
-2.54.0
-
drivers/media/i2c/adv7180.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
-diff --git a/drivers/media/i2c/adv7180.c b/drivers/media/i2c/adv7180.c
-index 5cbc973df684..6a6a676eb3d6 100644
--- a/drivers/media/i2c/adv7180.c
+++ b/drivers/media/i2c/adv7180.c
-@@ -859,6 +859,9 @@ static int init_device(struct adv7180_state *state)
+@@ -859,6 +859,9 @@ static int init_device(struct adv7180_st
return ret;
adv7180_set_field_mode(state);
__v4l2_ctrl_handler_setup(&state->ctrl_hdl);
-@@ -1415,6 +1418,7 @@ static int adv7180_probe(struct i2c_client *client)
+@@ -1415,6 +1418,7 @@ static int adv7180_probe(struct i2c_clie
struct device_node *np = client->dev.of_node;
struct adv7180_state *state;
struct v4l2_subdev *sd;
int ret;
/* Check if the adapter supports the needed features */
-@@ -1470,6 +1474,14 @@ static int adv7180_probe(struct i2c_client *client)
+@@ -1470,6 +1474,14 @@ static int adv7180_probe(struct i2c_clie
state->curr_norm = V4L2_STD_NTSC;
state->input = 0;
sd = &state->sd;
v4l2_i2c_subdev_init(sd, client, &adv7180_ops);
sd->internal_ops = &adv7180_internal_ops;
---
-2.54.0
-
drivers/media/i2c/adv7180.c | 1 +
1 file changed, 1 insertion(+)
-diff --git a/drivers/media/i2c/adv7180.c b/drivers/media/i2c/adv7180.c
-index 6a6a676eb3d6..101ab60ed665 100644
--- a/drivers/media/i2c/adv7180.c
+++ b/drivers/media/i2c/adv7180.c
-@@ -1405,6 +1405,7 @@ static const struct adv7180_chip_info adv7282_m_info = {
+@@ -1405,6 +1405,7 @@ static const struct adv7180_chip_info ad
BIT(ADV7182_INPUT_SVIDEO_AIN1_AIN2) |
BIT(ADV7182_INPUT_SVIDEO_AIN3_AIN4) |
BIT(ADV7182_INPUT_SVIDEO_AIN7_AIN8) |
BIT(ADV7182_INPUT_DIFF_CVBS_AIN1_AIN2) |
BIT(ADV7182_INPUT_DIFF_CVBS_AIN3_AIN4) |
BIT(ADV7182_INPUT_DIFF_CVBS_AIN7_AIN8),
---
-2.54.0
-
include/uapi/linux/videodev2.h | 5 +++++
1 file changed, 5 insertions(+)
-diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
-index becd08fdbddb..30f9ba7f4816 100644
--- a/include/uapi/linux/videodev2.h
+++ b/include/uapi/linux/videodev2.h
@@ -82,6 +82,11 @@
/*
* E N U M S
*/
---
-2.54.0
-
1 file changed, 85 insertions(+)
create mode 100644 Documentation/devicetree/bindings/media/bcm2835-unicam.txt
-diff --git a/Documentation/devicetree/bindings/media/bcm2835-unicam.txt b/Documentation/devicetree/bindings/media/bcm2835-unicam.txt
-new file mode 100644
-index 000000000000..164d0377dcd2
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/bcm2835-unicam.txt
@@ -0,0 +1,85 @@
+ };
+ };
+ };
---
-2.54.0
-
drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
-index c2b5a37915f2..0a62ba4a6189 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
-@@ -1775,7 +1775,7 @@ int vchiq_mmal_component_enable(struct vchiq_mmal_instance *instance,
+@@ -1775,7 +1775,7 @@ int vchiq_mmal_component_enable(struct v
ret = enable_component(instance, component);
if (ret == 0)
mutex_unlock(&instance->vchiq_mutex);
---
-2.54.0
-
.../vc04_services/vchiq-mmal/mmal-vchiq.h | 4 +
4 files changed, 196 insertions(+), 14 deletions(-)
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-common.h b/drivers/staging/vc04_services/vchiq-mmal/mmal-common.h
-index b33129403a30..0443be8198ea 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-common.h
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-common.h
@@ -50,6 +50,7 @@ struct mmal_buffer {
unsigned long length;
u32 mmal_flags;
s64 dts;
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-msg.h b/drivers/staging/vc04_services/vchiq-mmal/mmal-msg.h
-index 1889494425eb..7cccd5ee9a9e 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-msg.h
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-msg.h
-@@ -346,6 +346,41 @@ struct mmal_msg_port_parameter_get_reply {
+@@ -346,6 +346,41 @@ struct mmal_msg_port_parameter_get_reply
/* event messages */
#define MMAL_WORKER_EVENT_SPACE 256
struct mmal_msg_event_to_host {
u32 client_component; /* component context */
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
-index 0a62ba4a6189..1b96dd21a3f3 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
@@ -144,6 +144,8 @@ struct mmal_msg_context {
int status; /* context status */
-@@ -231,18 +233,6 @@ release_msg_context(struct mmal_msg_context *msg_context)
+@@ -231,18 +233,6 @@ release_msg_context(struct mmal_msg_cont
kfree(msg_context);
}
/* workqueue scheduled callback
*
* we do this because it is important we do not call any other vchiq
-@@ -264,13 +254,18 @@ static void buffer_work_cb(struct work_struct *work)
+@@ -264,13 +254,18 @@ static void buffer_work_cb(struct work_s
buffer->mmal_flags = msg_context->u.bulk.mmal_flags;
buffer->dts = msg_context->u.bulk.dts;
buffer->pts = msg_context->u.bulk.pts;
}
/* workqueue scheduled callback to handle receiving buffers
-@@ -348,6 +343,7 @@ static int bulk_receive(struct vchiq_mmal_instance *instance,
+@@ -348,6 +343,7 @@ static int bulk_receive(struct vchiq_mma
msg_context->u.bulk.buffer_used = rd_len;
msg_context->u.bulk.dts = msg->u.buffer_from_host.buffer_header.dts;
msg_context->u.bulk.pts = msg->u.buffer_from_host.buffer_header.pts;
queue_work(msg_context->instance->bulk_wq,
&msg_context->u.bulk.buffer_to_host_work);
-@@ -450,6 +446,103 @@ buffer_from_host(struct vchiq_mmal_instance *instance,
+@@ -450,6 +446,103 @@ buffer_from_host(struct vchiq_mmal_insta
return ret;
}
/* deals with receipt of buffer to host message */
static void buffer_to_host_cb(struct vchiq_mmal_instance *instance,
struct mmal_msg *msg, u32 msg_len)
-@@ -1332,6 +1425,7 @@ static int port_disable(struct vchiq_mmal_instance *instance,
+@@ -1332,6 +1425,7 @@ static int port_disable(struct vchiq_mma
mmalbuf->mmal_flags = 0;
mmalbuf->dts = MMAL_TIME_UNKNOWN;
mmalbuf->pts = MMAL_TIME_UNKNOWN;
port->buffer_cb(instance,
port, 0, mmalbuf);
}
-@@ -1633,6 +1727,43 @@ int mmal_vchi_buffer_cleanup(struct mmal_buffer *buf)
+@@ -1633,6 +1727,43 @@ int mmal_vchi_buffer_cleanup(struct mmal
}
EXPORT_SYMBOL_GPL(mmal_vchi_buffer_cleanup);
/* Initialise a mmal component and its ports
*
*/
-@@ -1682,6 +1813,7 @@ int vchiq_mmal_component_init(struct vchiq_mmal_instance *instance,
+@@ -1682,6 +1813,7 @@ int vchiq_mmal_component_init(struct vch
ret = port_info_get(instance, &component->control);
if (ret < 0)
goto release_component;
for (idx = 0; idx < component->inputs; idx++) {
component->input[idx].type = MMAL_PORT_TYPE_INPUT;
-@@ -1692,6 +1824,7 @@ int vchiq_mmal_component_init(struct vchiq_mmal_instance *instance,
+@@ -1692,6 +1824,7 @@ int vchiq_mmal_component_init(struct vch
ret = port_info_get(instance, &component->input[idx]);
if (ret < 0)
goto release_component;
}
for (idx = 0; idx < component->outputs; idx++) {
-@@ -1703,6 +1836,7 @@ int vchiq_mmal_component_init(struct vchiq_mmal_instance *instance,
+@@ -1703,6 +1836,7 @@ int vchiq_mmal_component_init(struct vch
ret = port_info_get(instance, &component->output[idx]);
if (ret < 0)
goto release_component;
}
for (idx = 0; idx < component->clocks; idx++) {
-@@ -1714,6 +1848,7 @@ int vchiq_mmal_component_init(struct vchiq_mmal_instance *instance,
+@@ -1714,6 +1848,7 @@ int vchiq_mmal_component_init(struct vch
ret = port_info_get(instance, &component->clock[idx]);
if (ret < 0)
goto release_component;
}
*component_out = component;
-@@ -1739,7 +1874,7 @@ EXPORT_SYMBOL_GPL(vchiq_mmal_component_init);
+@@ -1739,7 +1874,7 @@ EXPORT_SYMBOL_GPL(vchiq_mmal_component_i
int vchiq_mmal_component_finalise(struct vchiq_mmal_instance *instance,
struct vchiq_mmal_component *component)
{
if (mutex_lock_interruptible(&instance->vchiq_mutex))
return -EINTR;
-@@ -1751,6 +1886,13 @@ int vchiq_mmal_component_finalise(struct vchiq_mmal_instance *instance,
+@@ -1751,6 +1886,13 @@ int vchiq_mmal_component_finalise(struct
component->in_use = false;
mutex_unlock(&instance->vchiq_mutex);
return ret;
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.h b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.h
-index 8c3959f6f97f..190a0f42bd6b 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.h
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.h
@@ -79,6 +79,10 @@ struct vchiq_mmal_port {
};
struct vchiq_mmal_component {
---
-2.54.0
-
.../vc04_services/vchiq-mmal/mmal-vchiq.c | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
-index 1b96dd21a3f3..7bee3fb08f02 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
-@@ -420,11 +420,19 @@ buffer_from_host(struct vchiq_mmal_instance *instance,
+@@ -420,11 +420,19 @@ buffer_from_host(struct vchiq_mmal_insta
m.u.buffer_from_host.buffer_header.data =
(u32)(unsigned long)buf->buffer;
m.u.buffer_from_host.buffer_header.alloc_size = buf->buffer_size;
/* clear buffer type specific data */
memset(&m.u.buffer_from_host.buffer_header_type_specific, 0,
---
-2.54.0
-
include/media/videobuf2-core.h | 15 +++++++++++++
2 files changed, 33 insertions(+), 3 deletions(-)
-diff --git a/drivers/media/common/videobuf2/videobuf2-core.c b/drivers/media/common/videobuf2/videobuf2-core.c
-index 2df566f409b6..f316864d99fc 100644
--- a/drivers/media/common/videobuf2/videobuf2-core.c
+++ b/drivers/media/common/videobuf2/videobuf2-core.c
-@@ -2431,11 +2431,11 @@ static int __find_plane_by_offset(struct vb2_queue *q, unsigned long offset,
+@@ -2431,11 +2431,11 @@ static int __find_plane_by_offset(struct
return 0;
}
struct dma_buf *dbuf;
if (q->memory != VB2_MEMORY_MMAP) {
-@@ -2480,6 +2480,21 @@ int vb2_core_expbuf(struct vb2_queue *q, int *fd, unsigned int type,
+@@ -2480,6 +2480,21 @@ int vb2_core_expbuf(struct vb2_queue *q,
return -EINVAL;
}
ret = dma_buf_fd(dbuf, flags & ~O_ACCMODE);
if (ret < 0) {
dprintk(q, 3, "buffer %d, plane %d failed to export (%d)\n",
-diff --git a/include/media/videobuf2-core.h b/include/media/videobuf2-core.h
-index 9b02aeba4108..c75b4f14581a 100644
--- a/include/media/videobuf2-core.h
+++ b/include/media/videobuf2-core.h
-@@ -967,6 +967,21 @@ int vb2_core_streamon(struct vb2_queue *q, unsigned int type);
- */
+@@ -968,6 +968,21 @@ int vb2_core_streamon(struct vb2_queue *
int vb2_core_streamoff(struct vb2_queue *q, unsigned int type);
-+/**
+ /**
+ * vb2_core_expbuf_dmabuf() - Export a buffer as a dma_buf structure
+ * @q: videobuf2 queue
+ * @type: buffer type
+ struct vb2_buffer *vb, unsigned int plane,
+ unsigned int flags, struct dma_buf **dmabuf);
+
- /**
++/**
* vb2_core_expbuf() - Export a buffer as a file descriptor.
* @q: pointer to &struct vb2_queue with videobuf2 queue.
---
-2.54.0
-
+ * @fd: pointer to the file descriptor associated with DMABUF
drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
-index 7bee3fb08f02..e7b69260aea3 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
-@@ -458,9 +458,9 @@ buffer_from_host(struct vchiq_mmal_instance *instance,
+@@ -458,9 +458,9 @@ buffer_from_host(struct vchiq_mmal_insta
static void event_to_host_cb(struct vchiq_mmal_instance *instance,
struct mmal_msg *msg, u32 msg_len)
{
struct vchiq_mmal_port *port = NULL;
struct mmal_msg_context *msg_context;
u32 port_num = msg->u.event_to_host.port_num;
---
-2.54.0
-
.../vc04_services/vchiq-mmal/mmal-encodings.h | 27 +++++++++++++++++++
1 file changed, 27 insertions(+)
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-encodings.h b/drivers/staging/vc04_services/vchiq-mmal/mmal-encodings.h
-index e15ae7b24f73..feca1c3d8878 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-encodings.h
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-encodings.h
@@ -69,6 +69,33 @@
/** An EGL image handle
*/
#define MMAL_ENCODING_EGL_IMAGE MMAL_FOURCC('E', 'G', 'L', 'I')
---
-2.54.0
-
.../vchiq-mmal/mmal-parameters.h | 32 ++++++++++++++++++-
1 file changed, 31 insertions(+), 1 deletion(-)
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h b/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h
-index a0cdd28101f2..33f4179d7712 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h
@@ -577,7 +577,37 @@ enum mmal_parameter_video_type {
};
/** Valid mirror modes */
---
-2.54.0
-
drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c | 2 ++
1 file changed, 2 insertions(+)
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
-index e7b69260aea3..6ed493308746 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
-@@ -1901,6 +1901,8 @@ int vchiq_mmal_component_finalise(struct vchiq_mmal_instance *instance,
+@@ -1901,6 +1901,8 @@ int vchiq_mmal_component_finalise(struct
for (idx = 0; idx < component->clocks; idx++)
free_event_context(&component->clock[idx]);
mutex_unlock(&instance->vchiq_mutex);
return ret;
---
-2.54.0
-
.../vc04_services/vchiq-mmal/mmal-vchiq.c | 29 +++++++++++++------
1 file changed, 20 insertions(+), 9 deletions(-)
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
-index 6ed493308746..465b00b33cff 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
-@@ -1767,9 +1767,26 @@ static void free_event_context(struct vchiq_mmal_port *port)
+@@ -1767,9 +1767,26 @@ static void free_event_context(struct vc
{
struct mmal_msg_context *ctx = port->event_context;
}
/* Initialise a mmal component and its ports
-@@ -1867,6 +1884,7 @@ int vchiq_mmal_component_init(struct vchiq_mmal_instance *instance,
+@@ -1867,6 +1884,7 @@ int vchiq_mmal_component_init(struct vch
release_component:
destroy_component(instance, component);
unlock:
if (component)
component->in_use = false;
-@@ -1882,7 +1900,7 @@ EXPORT_SYMBOL_GPL(vchiq_mmal_component_init);
+@@ -1882,7 +1900,7 @@ EXPORT_SYMBOL_GPL(vchiq_mmal_component_i
int vchiq_mmal_component_finalise(struct vchiq_mmal_instance *instance,
struct vchiq_mmal_component *component)
{
if (mutex_lock_interruptible(&instance->vchiq_mutex))
return -EINTR;
-@@ -1894,14 +1912,7 @@ int vchiq_mmal_component_finalise(struct vchiq_mmal_instance *instance,
+@@ -1894,14 +1912,7 @@ int vchiq_mmal_component_finalise(struct
component->in_use = false;
mutex_unlock(&instance->vchiq_mutex);
---
-2.54.0
-
include/linux/w1.h | 5 +++++
3 files changed, 34 insertions(+), 13 deletions(-)
-diff --git a/drivers/w1/masters/w1-gpio.c b/drivers/w1/masters/w1-gpio.c
-index a579f95be8f1..b03085c50afa 100644
--- a/drivers/w1/masters/w1-gpio.c
+++ b/drivers/w1/masters/w1-gpio.c
-@@ -35,7 +35,7 @@ static u8 w1_gpio_set_pullup(void *data, int delay)
+@@ -35,7 +35,7 @@ static u8 w1_gpio_set_pullup(void *data,
* This will OVERRIDE open drain emulation and force-pull
* the line high for some time.
*/
msleep(ddata->pullup_duration);
/*
* This will simply set the line as input since we are doing
-@@ -89,6 +89,9 @@ static int w1_gpio_probe(struct platform_device *pdev)
+@@ -89,6 +89,9 @@ static int w1_gpio_probe(struct platform
if (!master)
return -ENOMEM;
ddata->gpiod = devm_gpiod_get_index(dev, NULL, 0, gflags);
if (IS_ERR(ddata->gpiod))
return dev_err_probe(dev, PTR_ERR(ddata->gpiod), "gpio_request (pin) failed\n");
-diff --git a/drivers/w1/w1_io.c b/drivers/w1/w1_io.c
-index db3c9522a8a2..b495624984bd 100644
--- a/drivers/w1/w1_io.c
+++ b/drivers/w1/w1_io.c
@@ -6,6 +6,7 @@
}
static void w1_write_bit(struct w1_master *dev, int bit);
-@@ -77,14 +90,14 @@ static void w1_write_bit(struct w1_master *dev, int bit)
+@@ -77,14 +90,14 @@ static void w1_write_bit(struct w1_maste
if (bit) {
dev->bus_master->write_bit(dev->bus_master->data, 0);
}
if(w1_disable_irqs) local_irq_restore(flags);
-@@ -164,14 +177,14 @@ static u8 w1_read_bit(struct w1_master *dev)
+@@ -164,14 +177,14 @@ static u8 w1_read_bit(struct w1_master *
/* sample timing is critical here */
local_irq_save(flags);
dev->bus_master->write_bit(dev->bus_master->data, 0);
msleep(1);
}
-diff --git a/include/linux/w1.h b/include/linux/w1.h
-index 064805bfae3f..6bcbafb6ea4f 100644
--- a/include/linux/w1.h
+++ b/include/linux/w1.h
-@@ -122,6 +122,9 @@ typedef void (*w1_slave_found_callback)(struct w1_master *, u64);
+@@ -122,6 +122,9 @@ typedef void (*w1_slave_found_callback)(
* @dev_id: Optional device id string, which w1 slaves could use for
* creating names, which then give a connection to the w1 master
*
};
/**
---
-2.54.0
-
arch/arm/mach-bcm/board_bcm2835.c | 21 +++++++++++++++------
1 file changed, 15 insertions(+), 6 deletions(-)
-diff --git a/arch/arm/mach-bcm/board_bcm2835.c b/arch/arm/mach-bcm/board_bcm2835.c
-index 9b6c921106b5..9bd9842da59f 100644
--- a/arch/arm/mach-bcm/board_bcm2835.c
+++ b/arch/arm/mach-bcm/board_bcm2835.c
@@ -5,17 +5,20 @@
static void __init bcm2835_init(void)
{
-@@ -74,20 +77,26 @@ static int __init bcm2835_map_usb(unsigned long node, const char *uname,
+@@ -74,20 +77,26 @@ static int __init bcm2835_map_usb(unsign
static void __init bcm2835_map_io(void)
{
/* Now search for bcm2708-usb node in device tree */
of_scan_flat_dt(bcm2835_map_usb, &p2b_offset);
---
-2.54.0
-
arch/arm/mach-bcm/board_bcm2835.c | 3 +++
1 file changed, 3 insertions(+)
-diff --git a/arch/arm/mach-bcm/board_bcm2835.c b/arch/arm/mach-bcm/board_bcm2835.c
-index 9bd9842da59f..7d59a9364175 100644
--- a/arch/arm/mach-bcm/board_bcm2835.c
+++ b/arch/arm/mach-bcm/board_bcm2835.c
-@@ -114,6 +114,9 @@ static const char * const bcm2835_compat[] = {
+@@ -114,6 +114,9 @@ static const char * const bcm2835_compat
};
DT_MACHINE_START(BCM2835, "BCM2835")
.map_io = bcm2835_map_io,
.init_machine = bcm2835_init,
.dt_compat = bcm2835_compat,
---
-2.54.0
-
drivers/char/hw_random/iproc-rng200.c | 79 ++++++++++++++++++++++++++-
2 files changed, 77 insertions(+), 4 deletions(-)
-diff --git a/drivers/char/hw_random/Kconfig b/drivers/char/hw_random/Kconfig
-index 492a2a61a65b..dbc993fb9e01 100644
--- a/drivers/char/hw_random/Kconfig
+++ b/drivers/char/hw_random/Kconfig
@@ -131,7 +131,7 @@ config HW_RANDOM_IPROC_RNG200
To compile this driver as a module, choose M here: the
module will be called iproc-rng200
-diff --git a/drivers/char/hw_random/iproc-rng200.c b/drivers/char/hw_random/iproc-rng200.c
-index 440fe28bddc0..33bc28f429f6 100644
--- a/drivers/char/hw_random/iproc-rng200.c
+++ b/drivers/char/hw_random/iproc-rng200.c
@@ -13,6 +13,7 @@
struct iproc_rng200_dev {
struct hwrng rng;
-@@ -157,6 +166,64 @@ static int iproc_rng200_init(struct hwrng *rng)
+@@ -157,6 +166,64 @@ static int iproc_rng200_init(struct hwrn
return 0;
}
static void iproc_rng200_cleanup(struct hwrng *rng)
{
struct iproc_rng200_dev *priv = to_rng_priv(rng);
-@@ -183,11 +250,17 @@ static int iproc_rng200_probe(struct platform_device *pdev)
+@@ -183,11 +250,17 @@ static int iproc_rng200_probe(struct pla
dev_set_drvdata(dev, priv);
/* Register driver */
ret = devm_hwrng_register(dev, &priv->rng);
if (ret) {
---
-2.54.0
-
drivers/net/ethernet/broadcom/genet/bcmgenet.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.h b/drivers/net/ethernet/broadcom/genet/bcmgenet.h
-index 9e4110c7fdf6..bf6a7eda0f86 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.h
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.h
@@ -34,7 +34,7 @@
/* misc. configuration */
#define MAX_NUM_OF_FS_RULES 16
---
-2.54.0
-
drivers/net/ethernet/broadcom/genet/bcmgenet.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
-diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
-index e142939d87cb..3b8a062004b7 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
-@@ -2721,7 +2721,7 @@ static void bcmgenet_init_tx_ring(struct bcmgenet_priv *priv,
+@@ -2722,7 +2722,7 @@ static void bcmgenet_init_tx_ring(struct
bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_PROD_INDEX);
bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_CONS_INDEX);
/* Disable rate control for now */
bcmgenet_tdma_ring_writel(priv, index, flow_period_val,
TDMA_FLOW_PERIOD);
-@@ -4082,8 +4082,10 @@ static int bcmgenet_probe(struct platform_device *pdev)
+@@ -4079,8 +4079,10 @@ static int bcmgenet_probe(struct platfor
netif_set_real_num_rx_queues(priv->dev, priv->hw_params->rx_queues + 1);
/* Set default coalescing parameters */
/* Initialize u64 stats seq counter for 32bit machines */
for (i = 0; i <= priv->hw_params->rx_queues; i++)
---
-2.54.0
-
drivers/net/ethernet/broadcom/genet/bcmmii.c | 2 ++
1 file changed, 2 insertions(+)
-diff --git a/drivers/net/ethernet/broadcom/genet/bcmmii.c b/drivers/net/ethernet/broadcom/genet/bcmmii.c
-index 33e3eec31cc9..e0b04f6f81ba 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmmii.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c
-@@ -314,6 +314,8 @@ int bcmgenet_mii_probe(struct net_device *dev)
+@@ -314,6 +314,8 @@ int bcmgenet_mii_probe(struct net_device
/* Communicate the integrated PHY revision */
if (priv->internal_phy)
phy_flags = priv->gphy_rev;
/* This is an ugly quirk but we have not been correctly interpreting
* the phy_interface values and we have done that across different
---
-2.54.0
-
include/linux/usb/hcd.h | 7 +++++++
4 files changed, 34 insertions(+)
-diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
-index 9dd79769cad1..21fa337edb46 100644
--- a/drivers/usb/core/hcd.c
+++ b/drivers/usb/core/hcd.c
-@@ -1964,6 +1964,16 @@ int usb_hcd_alloc_bandwidth(struct usb_device *udev,
+@@ -1962,6 +1962,16 @@ reset:
return ret;
}
/* Disables the endpoint: synchronizes with the hcd to make sure all
* endpoint state is gone from hardware. usb_hcd_flush_endpoint() must
* have been called previously. Use for set_configuration, set_interface,
-diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
-index d25022abdbdc..20d0f1a93586 100644
--- a/drivers/usb/core/message.c
+++ b/drivers/usb/core/message.c
-@@ -1325,6 +1325,21 @@ static void remove_intf_ep_devs(struct usb_interface *intf)
+@@ -1325,6 +1325,21 @@ static void remove_intf_ep_devs(struct u
intf->ep_devs_created = 0;
}
/**
* usb_disable_endpoint -- Disable an endpoint by address
* @dev: the device whose endpoint is being disabled
-diff --git a/include/linux/usb.h b/include/linux/usb.h
-index 2511f1e5b114..5edf769f9100 100644
--- a/include/linux/usb.h
+++ b/include/linux/usb.h
-@@ -1918,6 +1918,8 @@ extern int usb_clear_halt(struct usb_device *dev, int pipe);
+@@ -1919,6 +1919,8 @@ extern int usb_clear_halt(struct usb_dev
extern int usb_reset_configuration(struct usb_device *dev);
extern int usb_set_interface(struct usb_device *dev, int ifnum, int alternate);
extern void usb_reset_endpoint(struct usb_device *dev, unsigned int epaddr);
/* this request isn't really synchronous, but it belongs with the others */
extern int usb_driver_set_configuration(struct usb_device *udev, int config);
-diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h
-index ac95e7c89df5..8fd38368cb31 100644
--- a/include/linux/usb/hcd.h
+++ b/include/linux/usb/hcd.h
@@ -372,6 +372,11 @@ struct hc_driver {
/* Set the hardware-chosen device address */
int (*address_device)(struct usb_hcd *, struct usb_device *udev,
unsigned int timeout_ms);
-@@ -437,6 +442,8 @@ extern void usb_hcd_unmap_urb_setup_for_dma(struct usb_hcd *, struct urb *);
+@@ -437,6 +442,8 @@ extern void usb_hcd_unmap_urb_setup_for_
extern void usb_hcd_unmap_urb_for_dma(struct usb_hcd *, struct urb *);
extern void usb_hcd_flush_endpoint(struct usb_device *udev,
struct usb_host_endpoint *ep);
extern void usb_hcd_disable_endpoint(struct usb_device *udev,
struct usb_host_endpoint *ep);
extern void usb_hcd_reset_endpoint(struct usb_device *udev,
---
-2.54.0
-
drivers/usb/host/xhci.c | 104 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 104 insertions(+)
-diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
-index d84dded5333f..7acb1c78931f 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
-@@ -1608,6 +1608,109 @@ static int xhci_check_ep0_maxpacket(struct xhci_hcd *xhci, struct xhci_virt_devi
- return ret;
+@@ -1609,6 +1609,109 @@ static int xhci_check_ep0_maxpacket(stru
}
-+/*
+ /*
+ * RPI: Fixup endpoint intervals when requested
+ * - Check interval versus the (cached) endpoint context
+ * - set the endpoint interval to the new value
+ mutex_unlock(&xhci->mutex);
+}
+
- /*
++/*
* non-error returns are a promise to giveback() the urb later
* we drop ownership so next owner (or urb unlink) can get it
-@@ -5592,6 +5695,7 @@ static const struct hc_driver xhci_hc_driver = {
+ */
+@@ -5591,6 +5694,7 @@ static const struct hc_driver xhci_hc_dr
.endpoint_reset = xhci_endpoint_reset,
.check_bandwidth = xhci_check_bandwidth,
.reset_bandwidth = xhci_reset_bandwidth,
.address_device = xhci_address_device,
.enable_device = xhci_enable_device,
.update_hub_device = xhci_update_hub_device,
---
-2.54.0
-
drivers/usb/host/xhci-ring.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
-diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
-index 2bb7569c9505..44291e7b7781 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
-@@ -754,9 +754,9 @@ static int xhci_move_dequeue_past_td(struct xhci_hcd *xhci,
+@@ -754,9 +754,9 @@ static int xhci_move_dequeue_past_td(str
}
if ((ep->ep_state & SET_DEQ_PENDING)) {
}
/* This function gets called from contexts where it cannot sleep */
---
-2.54.0
-
drivers/usb/host/xhci.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
-index 7acb1c78931f..3c89f4affc1c 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
-@@ -1698,7 +1698,7 @@ static void xhci_fixup_endpoint(struct usb_hcd *hcd, struct usb_device *udev,
+@@ -1698,7 +1698,7 @@ static void xhci_fixup_endpoint(struct u
return;
}
ctrl_ctx->add_flags = xhci_get_endpoint_flag_from_index(ep_index);
spin_unlock_irqrestore(&xhci->lock, flags);
---
-2.54.0
-
arch/arm/mach-bcm/board_bcm2835.c | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
-diff --git a/arch/arm/mach-bcm/board_bcm2835.c b/arch/arm/mach-bcm/board_bcm2835.c
-index 7d59a9364175..869f22ef562a 100644
--- a/arch/arm/mach-bcm/board_bcm2835.c
+++ b/arch/arm/mach-bcm/board_bcm2835.c
-@@ -109,16 +109,31 @@ static const char * const bcm2835_compat[] = {
+@@ -109,16 +109,31 @@ static const char * const bcm2835_compat
#ifdef CONFIG_ARCH_MULTI_V7
"brcm,bcm2836",
"brcm,bcm2837",
+ .dt_compat = bcm2711_compat,
.smp = smp_ops(bcm2836_smp_ops),
MACHINE_END
---
-2.54.0
-
drivers/i2c/busses/i2c-bcm2835.c | 34 +++++++++++++++++++++++++-------
1 file changed, 27 insertions(+), 7 deletions(-)
-diff --git a/drivers/i2c/busses/i2c-bcm2835.c b/drivers/i2c/busses/i2c-bcm2835.c
-index e56349228c14..cccb03eceafe 100644
--- a/drivers/i2c/busses/i2c-bcm2835.c
+++ b/drivers/i2c/busses/i2c-bcm2835.c
@@ -60,6 +60,10 @@ static unsigned int debug;
#define BCM2835_DEBUG_MAX 512
struct bcm2835_debug {
struct i2c_msg *msg;
-@@ -193,6 +197,7 @@ static int clk_bcm2835_i2c_set_rate(struct clk_hw *hw, unsigned long rate,
+@@ -193,6 +197,7 @@ static int clk_bcm2835_i2c_set_rate(stru
{
struct clk_bcm2835_i2c *div = to_clk_bcm2835_i2c(hw);
u32 redl, fedl;
u32 divider = clk_bcm2835_i2c_calc_divider(rate, parent_rate);
if (divider == -EINVAL)
-@@ -216,6 +221,17 @@ static int clk_bcm2835_i2c_set_rate(struct clk_hw *hw, unsigned long rate,
+@@ -216,6 +221,17 @@ static int clk_bcm2835_i2c_set_rate(stru
bcm2835_i2c_writel(div->i2c_dev, BCM2835_I2C_DEL,
(fedl << BCM2835_I2C_FEDL_SHIFT) |
(redl << BCM2835_I2C_REDL_SHIFT));
return 0;
}
-@@ -369,10 +385,8 @@ static irqreturn_t bcm2835_i2c_isr(int this_irq, void *data)
+@@ -369,10 +385,8 @@ static irqreturn_t bcm2835_i2c_isr(int t
bcm2835_debug_add(i2c_dev, val);
err = val & (BCM2835_I2C_S_CLKT | BCM2835_I2C_S_ERR);
if (val & BCM2835_I2C_S_DONE) {
if (!i2c_dev->curr_msg) {
-@@ -384,8 +398,6 @@ static irqreturn_t bcm2835_i2c_isr(int this_irq, void *data)
+@@ -384,8 +398,6 @@ static irqreturn_t bcm2835_i2c_isr(int t
if ((val & BCM2835_I2C_S_RXD) || i2c_dev->msg_buf_remaining)
i2c_dev->msg_err = BCM2835_I2C_S_LEN;
goto complete;
}
-@@ -431,6 +443,7 @@ static int bcm2835_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[],
+@@ -431,6 +443,7 @@ static int bcm2835_i2c_xfer(struct i2c_a
{
struct bcm2835_i2c_dev *i2c_dev = i2c_get_adapdata(adap);
unsigned long time_left;
int i;
if (debug)
-@@ -440,15 +453,19 @@ static int bcm2835_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[],
+@@ -440,15 +453,19 @@ static int bcm2835_i2c_xfer(struct i2c_a
for (i = 0; i < num; i++)
bcm2835_debug_print_msg(i2c_dev, &msgs[i], i + 1, num, __func__);
reinit_completion(&i2c_dev->completion);
bcm2835_i2c_start_transfer(i2c_dev);
-@@ -458,6 +475,9 @@ static int bcm2835_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[],
+@@ -458,6 +475,9 @@ static int bcm2835_i2c_xfer(struct i2c_a
bcm2835_i2c_finish_transfer(i2c_dev);
if (debug > 1 || (debug && (!time_left || i2c_dev->msg_err)))
bcm2835_debug_print(i2c_dev);
i2c_dev->debug_num_msgs = 0;
-@@ -483,7 +503,7 @@ static int bcm2835_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[],
+@@ -483,7 +503,7 @@ static int bcm2835_i2c_xfer(struct i2c_a
static u32 bcm2835_i2c_func(struct i2c_adapter *adap)
{
}
static const struct i2c_algorithm bcm2835_i2c_algo = {
---
-2.54.0
-
drivers/gpu/drm/v3d/v3d_submit.c | 80 ++++++++++++++++++++++++++++++--
4 files changed, 122 insertions(+), 3 deletions(-)
-diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
-index f4da7a94e401..a996301f36b9 100644
--- a/drivers/gpu/drm/v3d/v3d_drv.c
+++ b/drivers/gpu/drm/v3d/v3d_drv.c
@@ -25,6 +25,9 @@
#include <uapi/drm/v3d_drm.h>
#include "v3d_drv.h"
-@@ -326,6 +329,8 @@ map_regs(struct v3d_dev *v3d, void __iomem **regs, const char *name)
+@@ -334,6 +337,8 @@ map_regs(struct v3d_dev *v3d, void __iom
static int v3d_platform_drm_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
struct drm_device *drm;
struct v3d_dev *v3d;
enum v3d_gen gen;
-@@ -413,6 +418,34 @@ static int v3d_platform_drm_probe(struct platform_device *pdev)
+@@ -421,6 +426,34 @@ static int v3d_platform_drm_probe(struct
}
}
if (v3d->ver < V3D_GEN_41) {
ret = map_regs(v3d, &v3d->gca_regs, "gca");
if (ret)
-@@ -442,6 +475,8 @@ static int v3d_platform_drm_probe(struct platform_device *pdev)
+@@ -450,6 +483,8 @@ static int v3d_platform_drm_probe(struct
ret = v3d_sysfs_init(dev);
if (ret)
goto drm_unregister;
return 0;
-diff --git a/drivers/gpu/drm/v3d/v3d_drv.h b/drivers/gpu/drm/v3d/v3d_drv.h
-index 1884686985b8..e881bdb9bb17 100644
--- a/drivers/gpu/drm/v3d/v3d_drv.h
+++ b/drivers/gpu/drm/v3d/v3d_drv.h
@@ -134,6 +134,12 @@ struct v3d_dev {
struct reset_control *reset;
/* Virtual and DMA addresses of the single shared page table. */
-@@ -638,3 +644,4 @@ int v3d_perfmon_set_global_ioctl(struct drm_device *dev, void *data,
+@@ -638,3 +644,4 @@ int v3d_perfmon_set_global_ioctl(struct
/* v3d_sysfs.c */
int v3d_sysfs_init(struct device *dev);
void v3d_sysfs_destroy(struct device *dev);
+void v3d_submit_init(struct drm_device *dev);
-diff --git a/drivers/gpu/drm/v3d/v3d_gem.c b/drivers/gpu/drm/v3d/v3d_gem.c
-index bb110d35f749..62fcd8c9cbc4 100644
--- a/drivers/gpu/drm/v3d/v3d_gem.c
+++ b/drivers/gpu/drm/v3d/v3d_gem.c
@@ -4,6 +4,7 @@
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/reset.h>
-@@ -290,6 +291,8 @@ v3d_gem_init(struct drm_device *dev)
+@@ -298,6 +299,8 @@ v3d_gem_init(struct drm_device *dev)
if (ret)
return ret;
/* Note: We don't allocate address 0. Various bits of HW
* treat 0 as special, such as the occlusion query counters
* where 0 means "disabled".
-diff --git a/drivers/gpu/drm/v3d/v3d_submit.c b/drivers/gpu/drm/v3d/v3d_submit.c
-index f3652e90683c..e6ca93125666 100644
--- a/drivers/gpu/drm/v3d/v3d_submit.c
+++ b/drivers/gpu/drm/v3d/v3d_submit.c
@@ -5,11 +5,52 @@
int i;
if (job->bo) {
-@@ -99,12 +141,31 @@ v3d_job_free(struct kref *ref)
+@@ -99,6 +141,9 @@ v3d_job_free(struct kref *ref)
dma_fence_put(job->irq_fence);
dma_fence_put(job->done_fence);
if (job->perfmon)
v3d_perfmon_put(job->perfmon);
- kfree(job);
+@@ -106,6 +151,22 @@ v3d_job_free(struct kref *ref)
}
-+static void
+ static void
+v3d_job_free(struct kref *ref)
+{
+ struct v3d_job *job = container_of(ref, struct v3d_job, refcount);
+ v3d_job_free_common(job, false);
+}
+
- static void
++static void
v3d_render_job_free(struct kref *ref)
{
-@@ -199,6 +260,8 @@ v3d_job_init(struct v3d_dev *v3d, struct drm_file *file_priv,
+ struct v3d_render_job *job = container_of(ref, struct v3d_render_job,
+@@ -217,6 +278,8 @@ v3d_job_init(struct v3d_dev *v3d, struct
if (ret && ret != -ENOENT)
goto fail_deps;
}
kref_init(&job->refcount);
-@@ -1316,7 +1379,7 @@ v3d_submit_cpu_ioctl(struct drm_device *dev, void *data,
- trace_v3d_submit_cpu_ioctl(&v3d->drm, cpu_job->job_type);
-
- ret = v3d_job_init(v3d, file_priv, &cpu_job->base,
-- v3d_job_free, 0, &se, V3D_CPU);
-+ v3d_cpu_job_free, 0, &se, V3D_CPU);
- if (ret) {
- v3d_job_deallocate((void *)&cpu_job);
- goto fail;
-@@ -1404,3 +1467,14 @@ v3d_submit_cpu_ioctl(struct drm_device *dev, void *data,
+@@ -1425,3 +1488,14 @@ fail:
return ret;
}
+ v3d_clock_up_put(v3d);
+}
\ No newline at end of file
---
-2.54.0
-
drivers/gpu/drm/v3d/v3d_irq.c | 3 +++
1 file changed, 3 insertions(+)
-diff --git a/drivers/gpu/drm/v3d/v3d_irq.c b/drivers/gpu/drm/v3d/v3d_irq.c
-index 31ecc5b4ba5a..427320a879ab 100644
--- a/drivers/gpu/drm/v3d/v3d_irq.c
+++ b/drivers/gpu/drm/v3d/v3d_irq.c
@@ -197,6 +197,7 @@ v3d_hub_irq(int irq, void *arg)
status = IRQ_HANDLED;
}
---
-2.54.0
-
drivers/hid/hid-quirks.c | 2 ++
2 files changed, 8 insertions(+)
-diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
-index d9d354f1b884..866360f9129a 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
-@@ -259,6 +259,9 @@
+@@ -262,6 +262,9 @@
#define USB_VENDOR_ID_BAANTO 0x2453
#define USB_DEVICE_ID_BAANTO_MT_190W2 0x0100
#define USB_VENDOR_ID_BELKIN 0x050d
#define USB_DEVICE_ID_FLIP_KVM 0x3201
-@@ -1498,6 +1501,9 @@
+@@ -1502,6 +1505,9 @@
#define USB_VENDOR_ID_XIAOMI 0x2717
#define USB_DEVICE_ID_MI_SILENT_MOUSE 0x5014
#define USB_VENDOR_ID_XIN_MO 0x16c0
#define USB_DEVICE_ID_XIN_MO_DUAL_ARCADE 0x05e1
#define USB_DEVICE_ID_THT_2P_ARCADE 0x75e1
-diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
-index 3217e436c052..53fb1297f781 100644
--- a/drivers/hid/hid-quirks.c
+++ b/drivers/hid/hid-quirks.c
-@@ -44,6 +44,7 @@ static const struct hid_device_id hid_quirks[] = {
+@@ -45,6 +45,7 @@ static const struct hid_device_id hid_qu
{ HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS682), HID_QUIRK_NOGET },
{ HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_CS692), HID_QUIRK_NOGET },
{ HID_USB_DEVICE(USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_UC100KM), HID_QUIRK_NOGET },
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_MULTI_TOUCH), HID_QUIRK_MULTI_INPUT },
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL },
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE2), HID_QUIRK_ALWAYS_POLL },
-@@ -216,6 +217,7 @@ static const struct hid_device_id hid_quirks[] = {
+@@ -218,6 +219,7 @@ static const struct hid_device_id hid_qu
{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
{ HID_USB_DEVICE(USB_VENDOR_ID_XIN_MO, USB_DEVICE_ID_XIN_MO_DUAL_ARCADE), HID_QUIRK_MULTI_INPUT },
{ HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_GROUP_AUDIO), HID_QUIRK_NOGET },
{ 0 }
};
---
-2.54.0
-
drivers/net/ethernet/broadcom/genet/bcmgenet.c | 8 ++++++++
1 file changed, 8 insertions(+)
-diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
-index 3b8a062004b7..226af052bf53 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
@@ -65,6 +65,9 @@
static inline void bcmgenet_writel(u32 value, void __iomem *offset)
{
-@@ -2559,6 +2562,11 @@ static void reset_umac(struct bcmgenet_priv *priv)
+@@ -2560,6 +2563,11 @@ static void reset_umac(struct bcmgenet_p
bcmgenet_rbuf_ctrl_set(priv, 0);
udelay(10);
/* issue soft reset and disable MAC while updating its registers */
spin_lock_bh(&priv->reg_lock);
bcmgenet_umac_writel(priv, CMD_SW_RESET, UMAC_CMD);
---
-2.54.0
-
arch/arm/kernel/setup.c | 10 ++++++++++
1 file changed, 10 insertions(+)
-diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
-index 0bfd66c7ada0..44cacf03b05d 100644
--- a/arch/arm/kernel/setup.c
+++ b/arch/arm/kernel/setup.c
-@@ -1260,6 +1260,8 @@ static int c_show(struct seq_file *m, void *v)
+@@ -1260,6 +1260,8 @@ static int c_show(struct seq_file *m, vo
{
int i, j;
u32 cpuid;
for_each_online_cpu(i) {
/*
-@@ -1319,6 +1321,14 @@ static int c_show(struct seq_file *m, void *v)
+@@ -1319,6 +1321,14 @@ static int c_show(struct seq_file *m, vo
seq_printf(m, "Revision\t: %04x\n", system_rev);
seq_printf(m, "Serial\t\t: %s\n", system_serial);
return 0;
}
---
-2.54.0
-
arch/arm64/kernel/cpuinfo.c | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
-diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c
-index c44e6d94f5de..cd19c2b8353a 100644
--- a/arch/arm64/kernel/cpuinfo.c
+++ b/arch/arm64/kernel/cpuinfo.c
@@ -17,6 +17,8 @@
#include <linux/personality.h>
#include <linux/preempt.h>
#include <linux/printk.h>
-@@ -272,6 +274,31 @@ static int c_show(struct seq_file *m, void *v)
+@@ -272,6 +274,31 @@ static int c_show(struct seq_file *m, vo
seq_printf(m, "CPU part\t: 0x%03x\n", MIDR_PARTNUM(midr));
seq_printf(m, "CPU revision\t: %d\n\n", MIDR_REVISION(midr));
return 0;
}
---
-2.54.0
-
create mode 100644 Documentation/devicetree/bindings/media/i2c/imx477.yaml
create mode 100644 drivers/media/i2c/imx477.c
-diff --git a/Documentation/devicetree/bindings/media/i2c/imx477.yaml b/Documentation/devicetree/bindings/media/i2c/imx477.yaml
-new file mode 100644
-index 000000000000..0994e13e67f6
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/imx477.yaml
@@ -0,0 +1,113 @@
+ };
+
+...
-diff --git a/MAINTAINERS b/MAINTAINERS
-index e8f06145fb54..db9e382bc3d1 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -24015,6 +24015,14 @@ T: git git://linuxtv.org/media.git
+@@ -24024,6 +24024,14 @@ T: git git://linuxtv.org/media.git
F: Documentation/devicetree/bindings/media/i2c/sony,imx415.yaml
F: drivers/media/i2c/imx415.c
SONY MEMORYSTICK SUBSYSTEM
M: Maxim Levitsky <maximlevitsky@gmail.com>
M: Alex Dubov <oakad@yahoo.com>
-diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig
-index cdd7ba5da0d5..75a758c65859 100644
--- a/drivers/media/i2c/Kconfig
+++ b/drivers/media/i2c/Kconfig
@@ -277,6 +277,20 @@ config VIDEO_IMX415
config VIDEO_MAX9271_LIB
tristate
-diff --git a/drivers/media/i2c/Makefile b/drivers/media/i2c/Makefile
-index 57cdd8dc96f6..a5f7bdca5536 100644
--- a/drivers/media/i2c/Makefile
+++ b/drivers/media/i2c/Makefile
@@ -60,6 +60,7 @@ obj-$(CONFIG_VIDEO_IMX335) += imx335.o
obj-$(CONFIG_VIDEO_IR_I2C) += ir-kbd-i2c.o
obj-$(CONFIG_VIDEO_ISL7998X) += isl7998x.o
obj-$(CONFIG_VIDEO_KS0127) += ks0127.o
-diff --git a/drivers/media/i2c/imx477.c b/drivers/media/i2c/imx477.c
-new file mode 100644
-index 000000000000..fac4090d27a1
--- /dev/null
+++ b/drivers/media/i2c/imx477.c
@@ -0,0 +1,2279 @@
+MODULE_AUTHOR("Naushir Patuck <naush@raspberrypi.com>");
+MODULE_DESCRIPTION("Sony IMX477 sensor driver");
+MODULE_LICENSE("GPL v2");
---
-2.54.0
-
drivers/media/i2c/imx296.c | 34 +++++++---------------------------
1 file changed, 7 insertions(+), 27 deletions(-)
-diff --git a/drivers/media/i2c/imx296.c b/drivers/media/i2c/imx296.c
-index 69636db11a2b..4d0f10cb9983 100644
--- a/drivers/media/i2c/imx296.c
+++ b/drivers/media/i2c/imx296.c
-@@ -663,7 +663,11 @@ static int imx296_enum_frame_size(struct v4l2_subdev *sd,
+@@ -663,7 +663,11 @@ static int imx296_enum_frame_size(struct
format = v4l2_subdev_state_get_format(state, fse->pad);
return -EINVAL;
fse->min_width = IMX296_PIXEL_ARRAY_WIDTH / (fse->index + 1);
-@@ -685,32 +689,8 @@ static int imx296_set_format(struct v4l2_subdev *sd,
+@@ -685,32 +689,8 @@ static int imx296_set_format(struct v4l2
crop = v4l2_subdev_state_get_crop(state, fmt->pad);
format = v4l2_subdev_state_get_format(state, fmt->pad);
format->code = sensor->mono ? MEDIA_BUS_FMT_Y10_1X10
: MEDIA_BUS_FMT_SBGGR10_1X10;
---
-2.54.0
-
drivers/media/i2c/imx296.c | 10 ++++++++++
1 file changed, 10 insertions(+)
-diff --git a/drivers/media/i2c/imx296.c b/drivers/media/i2c/imx296.c
-index 4d0f10cb9983..43f6c2e8bf4a 100644
--- a/drivers/media/i2c/imx296.c
+++ b/drivers/media/i2c/imx296.c
@@ -20,6 +20,10 @@
#define IMX296_PIXEL_ARRAY_WIDTH 1456
#define IMX296_PIXEL_ARRAY_HEIGHT 1088
-@@ -578,6 +582,12 @@ static int imx296_stream_on(struct imx296 *sensor)
+@@ -578,6 +582,12 @@ static int imx296_stream_on(struct imx29
imx296_write(sensor, IMX296_CTRL00, 0, &ret);
usleep_range(2000, 5000);
imx296_write(sensor, IMX296_CTRL0A, 0, &ret);
return ret;
---
-2.54.0
-
drivers/media/i2c/imx296.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
-diff --git a/drivers/media/i2c/imx296.c b/drivers/media/i2c/imx296.c
-index 43f6c2e8bf4a..75cb1ef70c3a 100644
--- a/drivers/media/i2c/imx296.c
+++ b/drivers/media/i2c/imx296.c
-@@ -583,10 +583,11 @@ static int imx296_stream_on(struct imx296 *sensor)
+@@ -583,10 +583,11 @@ static int imx296_stream_on(struct imx29
imx296_write(sensor, IMX296_CTRL00, 0, &ret);
usleep_range(2000, 5000);
imx296_write(sensor, IMX296_CTRL0A, 0, &ret);
---
-2.54.0
-
drivers/media/i2c/imx296.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/media/i2c/imx296.c b/drivers/media/i2c/imx296.c
-index 75cb1ef70c3a..add2a36e20aa 100644
--- a/drivers/media/i2c/imx296.c
+++ b/drivers/media/i2c/imx296.c
@@ -472,7 +472,7 @@ static const struct {
{ IMX296_REG_8BIT(0x30df), 0x00 },
{ IMX296_REG_8BIT(0x3165), 0x00 },
{ IMX296_REG_8BIT(0x3169), 0x10 },
---
-2.54.0
-
drivers/media/i2c/imx296.c | 4 ++++
1 file changed, 4 insertions(+)
-diff --git a/drivers/media/i2c/imx296.c b/drivers/media/i2c/imx296.c
-index add2a36e20aa..917d0c250832 100644
--- a/drivers/media/i2c/imx296.c
+++ b/drivers/media/i2c/imx296.c
-@@ -175,6 +175,7 @@ MODULE_PARM_DESC(trigger_mode, "Set trigger mode: 0=default, 1=XTRIG");
+@@ -175,6 +175,7 @@ MODULE_PARM_DESC(trigger_mode, "Set trig
#define IMX296_CKREQSEL IMX296_REG_8BIT(0x4101)
#define IMX296_CKREQSEL_HS BIT(2)
#define IMX296_GTTABLENUM IMX296_REG_8BIT(0x4114)
#define IMX296_CTRL418C IMX296_REG_8BIT(0x418c)
struct imx296_clk_params {
-@@ -530,8 +531,11 @@ static int imx296_setup(struct imx296 *sensor, struct v4l2_subdev_state *state)
+@@ -530,8 +531,11 @@ static int imx296_setup(struct imx296 *s
imx296_write(sensor, IMX296_FID0_ROIPV1, crop->top, &ret);
imx296_write(sensor, IMX296_FID0_ROIWH1, crop->width, &ret);
imx296_write(sensor, IMX296_FID0_ROIWV1, crop->height, &ret);
}
imx296_write(sensor, IMX296_CTRL0D,
---
-2.54.0
-
drivers/media/i2c/imx296.c | 44 ++++++++++++++++++++++++++------------
1 file changed, 30 insertions(+), 14 deletions(-)
-diff --git a/drivers/media/i2c/imx296.c b/drivers/media/i2c/imx296.c
-index 917d0c250832..abbd5a36a01b 100644
--- a/drivers/media/i2c/imx296.c
+++ b/drivers/media/i2c/imx296.c
-@@ -388,10 +388,36 @@ static const struct v4l2_ctrl_ops imx296_ctrl_ops = {
+@@ -388,10 +388,36 @@ static const struct v4l2_ctrl_ops imx296
.s_ctrl = imx296_s_ctrl,
};
int ret;
ret = v4l2_fwnode_device_parse(sensor->dev, &props);
-@@ -406,19 +432,7 @@ static int imx296_ctrls_init(struct imx296 *sensor)
+@@ -406,19 +432,7 @@ static int imx296_ctrls_init(struct imx2
V4L2_CID_ANALOGUE_GAIN, IMX296_GAIN_MIN,
IMX296_GAIN_MAX, 1, IMX296_GAIN_MIN);
sensor->vblank = v4l2_ctrl_new_std(&sensor->ctrls, &imx296_ctrl_ops,
V4L2_CID_VBLANK, 30,
-@@ -707,6 +721,8 @@ static int imx296_set_format(struct v4l2_subdev *sd,
+@@ -707,6 +721,8 @@ static int imx296_set_format(struct v4l2
format->width = crop->width;
format->height = crop->height;
format->code = sensor->mono ? MEDIA_BUS_FMT_Y10_1X10
: MEDIA_BUS_FMT_SBGGR10_1X10;
format->field = V4L2_FIELD_NONE;
---
-2.54.0
-
drivers/media/i2c/imx296.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/media/i2c/imx296.c b/drivers/media/i2c/imx296.c
-index abbd5a36a01b..bdda343fa61a 100644
--- a/drivers/media/i2c/imx296.c
+++ b/drivers/media/i2c/imx296.c
-@@ -588,7 +588,7 @@ static int imx296_setup(struct imx296 *sensor, struct v4l2_subdev_state *state)
+@@ -588,7 +588,7 @@ static int imx296_setup(struct imx296 *s
imx296_write(sensor, IMX296_CTRL418C, sensor->clk_params->ctrl418c,
&ret);
imx296_write(sensor, IMX296_BLKLEVEL, 0x03c, &ret);
return ret;
---
-2.54.0
-
drivers/media/i2c/imx296.c | 65 +++++++++++++++++++++++++++++++++++---
1 file changed, 60 insertions(+), 5 deletions(-)
-diff --git a/drivers/media/i2c/imx296.c b/drivers/media/i2c/imx296.c
-index bdda343fa61a..4330b7015c5c 100644
--- a/drivers/media/i2c/imx296.c
+++ b/drivers/media/i2c/imx296.c
@@ -212,6 +212,8 @@ struct imx296 {
};
static inline struct imx296 *to_imx296(struct v4l2_subdev *sd)
-@@ -253,6 +255,36 @@ static int imx296_write(struct imx296 *sensor, u32 addr, u32 value, int *err)
+@@ -253,6 +255,36 @@ static int imx296_write(struct imx296 *s
return ret;
}
static int imx296_power_on(struct imx296 *sensor)
{
int ret;
-@@ -347,6 +379,13 @@ static int imx296_s_ctrl(struct v4l2_ctrl *ctrl)
+@@ -347,6 +379,13 @@ static int imx296_s_ctrl(struct v4l2_ctr
&ret);
break;
case V4L2_CID_TEST_PATTERN:
if (ctrl->val) {
imx296_write(sensor, IMX296_PGHPOS, 8, &ret);
-@@ -432,6 +471,16 @@ static int imx296_ctrls_init(struct imx296 *sensor)
+@@ -432,6 +471,16 @@ static int imx296_ctrls_init(struct imx2
V4L2_CID_ANALOGUE_GAIN, IMX296_GAIN_MIN,
IMX296_GAIN_MAX, 1, IMX296_GAIN_MIN);
imx296_setup_hblank(sensor, IMX296_PIXEL_ARRAY_WIDTH);
sensor->vblank = v4l2_ctrl_new_std(&sensor->ctrls, &imx296_ctrl_ops,
-@@ -609,6 +658,10 @@ static int imx296_stream_on(struct imx296 *sensor)
+@@ -609,6 +658,10 @@ static int imx296_stream_on(struct imx29
imx296_write(sensor, IMX296_CTRL0A, 0, &ret);
return ret;
}
-@@ -619,6 +672,9 @@ static int imx296_stream_off(struct imx296 *sensor)
+@@ -619,6 +672,9 @@ static int imx296_stream_off(struct imx2
imx296_write(sensor, IMX296_CTRL0A, IMX296_CTRL0A_XMSTA, &ret);
imx296_write(sensor, IMX296_CTRL00, IMX296_CTRL00_STANDBY, &ret);
return ret;
}
-@@ -678,8 +734,7 @@ static int imx296_enum_mbus_code(struct v4l2_subdev *sd,
+@@ -678,8 +734,7 @@ static int imx296_enum_mbus_code(struct
if (code->index != 0)
return -EINVAL;
return 0;
}
-@@ -689,6 +744,7 @@ static int imx296_enum_frame_size(struct v4l2_subdev *sd,
+@@ -689,6 +744,7 @@ static int imx296_enum_frame_size(struct
struct v4l2_subdev_frame_size_enum *fse)
{
const struct v4l2_mbus_framefmt *format;
format = v4l2_subdev_state_get_format(state, fse->pad);
-@@ -696,7 +752,7 @@ static int imx296_enum_frame_size(struct v4l2_subdev *sd,
+@@ -696,7 +752,7 @@ static int imx296_enum_frame_size(struct
* Binning does not seem to work on either mono or colour sensor
* variants. Disable enumerating the binned frame size for now.
*/
return -EINVAL;
fse->min_width = IMX296_PIXEL_ARRAY_WIDTH / (fse->index + 1);
-@@ -723,8 +779,7 @@ static int imx296_set_format(struct v4l2_subdev *sd,
+@@ -723,8 +779,7 @@ static int imx296_set_format(struct v4l2
imx296_setup_hblank(sensor, format->width);
format->field = V4L2_FIELD_NONE;
format->colorspace = V4L2_COLORSPACE_RAW;
format->ycbcr_enc = V4L2_YCBCR_ENC_DEFAULT;
---
-2.54.0
-
drivers/media/i2c/imx296.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-diff --git a/drivers/media/i2c/imx296.c b/drivers/media/i2c/imx296.c
-index 4330b7015c5c..0c2b45fe1dfe 100644
--- a/drivers/media/i2c/imx296.c
+++ b/drivers/media/i2c/imx296.c
-@@ -154,9 +154,9 @@ MODULE_PARM_DESC(trigger_mode, "Set trigger mode: 0=default, 1=XTRIG");
+@@ -154,9 +154,9 @@ MODULE_PARM_DESC(trigger_mode, "Set trig
#define IMX296_FID0_ROIPH1 IMX296_REG_16BIT(0x3310)
#define IMX296_FID0_ROIPV1 IMX296_REG_16BIT(0x3312)
#define IMX296_FID0_ROIWH1 IMX296_REG_16BIT(0x3314)
#define IMX296_CM_HSST_STARTTMG IMX296_REG_16BIT(0x4018)
#define IMX296_CM_HSST_ENDTMG IMX296_REG_16BIT(0x401a)
---
-2.54.0
-
drivers/media/i2c/imx296.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
-diff --git a/drivers/media/i2c/imx296.c b/drivers/media/i2c/imx296.c
-index 0c2b45fe1dfe..3ced3af3897f 100644
--- a/drivers/media/i2c/imx296.c
+++ b/drivers/media/i2c/imx296.c
@@ -205,6 +205,7 @@ struct imx296 {
struct v4l2_subdev subdev;
struct media_pad pad;
-@@ -645,16 +646,17 @@ static int imx296_setup(struct imx296 *sensor, struct v4l2_subdev_state *state)
+@@ -645,16 +646,17 @@ static int imx296_setup(struct imx296 *s
static int imx296_stream_on(struct imx296 *sensor)
{
imx296_write(sensor, IMX296_CTRL0A, 0, &ret);
-@@ -1078,6 +1080,7 @@ static int imx296_probe(struct i2c_client *client)
+@@ -1078,6 +1080,7 @@ static int imx296_probe(struct i2c_clien
unsigned long clk_rate;
struct imx296 *sensor;
unsigned int i;
int ret;
if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA)) {
-@@ -1144,6 +1147,10 @@ static int imx296_probe(struct i2c_client *client)
+@@ -1144,6 +1147,10 @@ static int imx296_probe(struct i2c_clien
if (ret < 0)
goto err_power;
/* Initialize the V4L2 subdev. */
ret = imx296_subdev_init(sensor);
if (ret < 0)
---
-2.54.0
-
create mode 100644 Documentation/devicetree/bindings/media/i2c/imx519.yaml
create mode 100644 drivers/media/i2c/imx519.c
-diff --git a/Documentation/devicetree/bindings/media/i2c/imx519.yaml b/Documentation/devicetree/bindings/media/i2c/imx519.yaml
-new file mode 100644
-index 000000000000..717230a21764
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/imx519.yaml
@@ -0,0 +1,113 @@
+ };
+
+...
-diff --git a/MAINTAINERS b/MAINTAINERS
-index db9e382bc3d1..5ca7658d8382 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -24023,6 +24023,14 @@ T: git git://linuxtv.org/media_tree.git
+@@ -24032,6 +24032,14 @@ T: git git://linuxtv.org/media_tree.git
F: Documentation/devicetree/bindings/media/i2c/imx477.yaml
F: drivers/media/i2c/imx477.c
SONY MEMORYSTICK SUBSYSTEM
M: Maxim Levitsky <maximlevitsky@gmail.com>
M: Alex Dubov <oakad@yahoo.com>
-diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig
-index 75a758c65859..ddb0f43580c2 100644
--- a/drivers/media/i2c/Kconfig
+++ b/drivers/media/i2c/Kconfig
@@ -291,6 +291,17 @@ config VIDEO_IMX477
config VIDEO_MAX9271_LIB
tristate
-diff --git a/drivers/media/i2c/Makefile b/drivers/media/i2c/Makefile
-index a5f7bdca5536..ce4ac706f0b7 100644
--- a/drivers/media/i2c/Makefile
+++ b/drivers/media/i2c/Makefile
@@ -61,6 +61,7 @@ obj-$(CONFIG_VIDEO_IMX355) += imx355.o
obj-$(CONFIG_VIDEO_IR_I2C) += ir-kbd-i2c.o
obj-$(CONFIG_VIDEO_ISL7998X) += isl7998x.o
obj-$(CONFIG_VIDEO_KS0127) += ks0127.o
-diff --git a/drivers/media/i2c/imx519.c b/drivers/media/i2c/imx519.c
-new file mode 100644
-index 000000000000..5fe002ec3b26
--- /dev/null
+++ b/drivers/media/i2c/imx519.c
@@ -0,0 +1,2146 @@
+MODULE_AUTHOR("Lee Jackson <info@arducam.com>");
+MODULE_DESCRIPTION("Sony IMX519 sensor driver");
+MODULE_LICENSE("GPL v2");
---
-2.54.0
-
2 files changed, 114 insertions(+)
create mode 100644 Documentation/devicetree/bindings/media/i2c/imx378.yaml
-diff --git a/Documentation/devicetree/bindings/media/i2c/imx378.yaml b/Documentation/devicetree/bindings/media/i2c/imx378.yaml
-new file mode 100644
-index 000000000000..f832b4bfab93
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/imx378.yaml
@@ -0,0 +1,113 @@
+ };
+
+...
-diff --git a/MAINTAINERS b/MAINTAINERS
-index 5ca7658d8382..291a8a6710a1 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -24020,6 +24020,7 @@ M: Raspberry Pi Kernel Maintenance <kernel-list@raspberrypi.com>
+@@ -24029,6 +24029,7 @@ M: Raspberry Pi Kernel Maintenance <kern
L: linux-media@vger.kernel.org
S: Maintained
T: git git://linuxtv.org/media_tree.git
F: Documentation/devicetree/bindings/media/i2c/imx477.yaml
F: drivers/media/i2c/imx477.c
---
-2.54.0
-
include/uapi/linux/v4l2-controls.h | 1 +
1 file changed, 1 insertion(+)
-diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h
-index 2d30107e047e..3ba7408ee7aa 100644
--- a/include/uapi/linux/v4l2-controls.h
+++ b/include/uapi/linux/v4l2-controls.h
@@ -1031,6 +1031,7 @@ enum v4l2_auto_n_preset_white_balance {
};
#define V4L2_CID_WIDE_DYNAMIC_RANGE (V4L2_CID_CAMERA_CLASS_BASE+21)
---
-2.54.0
-
.../staging/vc04_services/vchiq-mmal/mmal-parameters.h | 1 +
2 files changed, 7 insertions(+), 2 deletions(-)
-diff --git a/drivers/staging/vc04_services/bcm2835-camera/controls.c b/drivers/staging/vc04_services/bcm2835-camera/controls.c
-index e670226f1edf..d800d54d8042 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/controls.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/controls.c
-@@ -468,6 +468,10 @@ static int ctrl_set_awb_mode(struct bcm2835_mmal_dev *dev,
+@@ -468,6 +468,10 @@ static int ctrl_set_awb_mode(struct bcm2
case V4L2_WHITE_BALANCE_SHADE:
u32_value = MMAL_PARAM_AWBMODE_SHADE;
break;
}
return vchiq_mmal_port_parameter_set(dev->instance, control,
-@@ -1044,8 +1048,8 @@ static const struct bcm2835_mmal_v4l2_ctrl v4l2_ctrls[V4L2_CTRL_COUNT] = {
+@@ -1044,8 +1048,8 @@ static const struct bcm2835_mmal_v4l2_ct
{
.id = V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE,
.type = MMAL_CONTROL_TYPE_STD_MENU,
.def = V4L2_WHITE_BALANCE_AUTO,
.step = 0,
.imenu = NULL,
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h b/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h
-index 33f4179d7712..045eba62e9de 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h
@@ -310,6 +310,7 @@ enum mmal_parameter_awbmode {
};
enum mmal_parameter_imagefx {
---
-2.54.0
-
drivers/media/v4l2-core/v4l2-ctrls-defs.c | 1 +
1 file changed, 1 insertion(+)
-diff --git a/drivers/media/v4l2-core/v4l2-ctrls-defs.c b/drivers/media/v4l2-core/v4l2-ctrls-defs.c
-index ad41f65374e2..032246aa5428 100644
--- a/drivers/media/v4l2-core/v4l2-ctrls-defs.c
+++ b/drivers/media/v4l2-core/v4l2-ctrls-defs.c
-@@ -228,6 +228,7 @@ const char * const *v4l2_ctrl_get_menu(u32 id)
+@@ -228,6 +228,7 @@ const char * const *v4l2_ctrl_get_menu(u
"Flash",
"Cloudy",
"Shade",
NULL,
};
static const char * const camera_iso_sensitivity_auto[] = {
---
-2.54.0
-
1 file changed, 48 insertions(+)
create mode 100644 Documentation/devicetree/bindings/media/i2c/irs1125.txt
-diff --git a/Documentation/devicetree/bindings/media/i2c/irs1125.txt b/Documentation/devicetree/bindings/media/i2c/irs1125.txt
-new file mode 100644
-index 000000000000..25a48028c957
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/irs1125.txt
@@ -0,0 +1,48 @@
+ };
+ };
+ };
---
-2.54.0
-
create mode 100644 drivers/media/i2c/irs1125.c
create mode 100644 drivers/media/i2c/irs1125.h
-diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig
-index ddb0f43580c2..391c7089b71a 100644
--- a/drivers/media/i2c/Kconfig
+++ b/drivers/media/i2c/Kconfig
@@ -1426,6 +1426,18 @@ config VIDEO_TW9910
config VIDEO_VPX3220
tristate "vpx3220a, vpx3216b & vpx3214c video decoders"
depends on VIDEO_DEV && I2C
-diff --git a/drivers/media/i2c/Makefile b/drivers/media/i2c/Makefile
-index ce4ac706f0b7..4c1c76e6f3a9 100644
--- a/drivers/media/i2c/Makefile
+++ b/drivers/media/i2c/Makefile
@@ -63,6 +63,7 @@ obj-$(CONFIG_VIDEO_IMX415) += imx415.o
obj-$(CONFIG_VIDEO_ISL7998X) += isl7998x.o
obj-$(CONFIG_VIDEO_KS0127) += ks0127.o
obj-$(CONFIG_VIDEO_LM3560) += lm3560.o
-diff --git a/drivers/media/i2c/irs1125.c b/drivers/media/i2c/irs1125.c
-new file mode 100644
-index 000000000000..f69b4c5a9827
--- /dev/null
+++ b/drivers/media/i2c/irs1125.c
@@ -0,0 +1,1197 @@
+MODULE_DESCRIPTION("Infineon irs1125 sensor driver");
+MODULE_LICENSE("GPL v2");
+
-diff --git a/drivers/media/i2c/irs1125.h b/drivers/media/i2c/irs1125.h
-new file mode 100644
-index 000000000000..96d676123d5e
--- /dev/null
+++ b/drivers/media/i2c/irs1125.h
@@ -0,0 +1,95 @@
+
+#endif /* IRS1125 */
+
---
-2.54.0
-
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c | 3 +++
1 file changed, 3 insertions(+)
-diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
-index 721b15b7e13b..7593cc0ddbe0 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
@@ -63,6 +63,7 @@
static const struct vchiq_platform_info bcm2835_info = {
.cache_line_size = 32,
-@@ -1415,6 +1416,7 @@ static int vchiq_probe(struct platform_device *pdev)
+@@ -1415,6 +1416,7 @@ static int vchiq_probe(struct platform_d
vchiq_debugfs_init(&mgmt->state);
bcm2835_audio = vchiq_device_register(&pdev->dev, "bcm2835-audio");
bcm2835_camera = vchiq_device_register(&pdev->dev, "bcm2835-camera");
-@@ -1427,6 +1429,7 @@ static void vchiq_remove(struct platform_device *pdev)
+@@ -1427,6 +1429,7 @@ static void vchiq_remove(struct platform
vchiq_device_unregister(bcm2835_audio);
vchiq_device_unregister(bcm2835_camera);
vchiq_debugfs_deinit();
vchiq_deregister_chrdev();
vchiq_platform_uninit(mgmt);
---
-2.54.0
-
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c | 3 +++
1 file changed, 3 insertions(+)
-diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
-index 7593cc0ddbe0..63c0f8f03134 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
@@ -63,6 +63,7 @@
static struct vchiq_device *vcsm_cma;
static const struct vchiq_platform_info bcm2835_info = {
-@@ -1417,6 +1418,7 @@ static int vchiq_probe(struct platform_device *pdev)
+@@ -1417,6 +1418,7 @@ static int vchiq_probe(struct platform_d
vchiq_debugfs_init(&mgmt->state);
vcsm_cma = vchiq_device_register(&pdev->dev, "vcsm-cma");
bcm2835_audio = vchiq_device_register(&pdev->dev, "bcm2835-audio");
bcm2835_camera = vchiq_device_register(&pdev->dev, "bcm2835-camera");
-@@ -1429,6 +1431,7 @@ static void vchiq_remove(struct platform_device *pdev)
+@@ -1429,6 +1431,7 @@ static void vchiq_remove(struct platform
vchiq_device_unregister(bcm2835_audio);
vchiq_device_unregister(bcm2835_camera);
vchiq_device_unregister(vcsm_cma);
vchiq_debugfs_deinit();
vchiq_deregister_chrdev();
---
-2.54.0
-
drivers/net/phy/broadcom.c | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
-diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c
-index cb306f9e80cc..6dd13ad68b56 100644
--- a/drivers/net/phy/broadcom.c
+++ b/drivers/net/phy/broadcom.c
-@@ -458,6 +458,9 @@ static int bcm54811_config_init(struct phy_device *phydev)
+@@ -458,6 +458,9 @@ static int bcm54811_config_init(struct p
static int bcm54xx_config_init(struct phy_device *phydev)
{
int reg, err, val;
reg = phy_read(phydev, MII_BCM54XX_ECR);
if (reg < 0)
-@@ -516,10 +519,10 @@ static int bcm54xx_config_init(struct phy_device *phydev)
+@@ -516,10 +519,10 @@ static int bcm54xx_config_init(struct ph
bcm54xx_phydsp_config(phydev);
* Don't do this for devices on an SFP module, since some of these
* use the LED outputs to control the SFP LOS signal, and changing
* these settings will cause LOS to malfunction.
-@@ -528,10 +531,15 @@ static int bcm54xx_config_init(struct phy_device *phydev)
+@@ -528,10 +531,15 @@ static int bcm54xx_config_init(struct ph
val = BCM54XX_SHD_LEDS1_LED1(BCM_LED_SRC_MULTICOLOR1) |
BCM54XX_SHD_LEDS1_LED3(BCM_LED_SRC_MULTICOLOR1);
bcm_phy_write_shadow(phydev, BCM54XX_SHD_LEDS1, val);
bcm_phy_write_exp(phydev, BCM_EXP_MULTICOLOR, val);
}
---
-2.54.0
-
include/linux/brcmphy.h | 1 +
2 files changed, 11 insertions(+), 2 deletions(-)
-diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c
-index 6dd13ad68b56..863d9316b3f9 100644
--- a/drivers/net/phy/broadcom.c
+++ b/drivers/net/phy/broadcom.c
-@@ -293,6 +293,7 @@ static void bcm54xx_adjust_rxrefclk(struct phy_device *phydev)
+@@ -293,6 +293,7 @@ static void bcm54xx_adjust_rxrefclk(stru
phy_id_compare_model(phydev->drv->phy_id, PHY_ID_BCM50610) ||
phy_id_compare_model(phydev->drv->phy_id, PHY_ID_BCM50610M) ||
phy_id_compare_model(phydev->drv->phy_id, PHY_ID_BCM54210E) ||
phy_id_compare_model(phydev->drv->phy_id, PHY_ID_BCM54810) ||
phy_id_compare_model(phydev->drv->phy_id, PHY_ID_BCM54811)))
return;
-@@ -1486,7 +1487,7 @@ static struct phy_driver broadcom_drivers[] = {
+@@ -1486,7 +1487,7 @@ static struct phy_driver broadcom_driver
.handle_interrupt = bcm_phy_handle_interrupt,
.link_change_notify = bcm54xx_link_change_notify,
}, {
.name = "Broadcom BCM54210E",
/* PHY_GBIT_FEATURES */
.flags = PHY_ALWAYS_CALL_SUSPEND,
-@@ -1503,6 +1504,12 @@ static struct phy_driver broadcom_drivers[] = {
- .get_wol = bcm54xx_phy_get_wol,
+@@ -1504,6 +1505,12 @@ static struct phy_driver broadcom_driver
.set_wol = bcm54xx_phy_set_wol,
.led_brightness_set = bcm_phy_led_brightness_set,
-+}, {
+ }, {
+ PHY_ID_MATCH_EXACT(PHY_ID_BCM54213PE),
+ .name = "Broadcom BCM54213PE",
+ /* PHY_GBIT_FEATURES */
+ .config_init = bcm54xx_config_init,
+ .config_intr = bcm_phy_config_intr,
- }, {
++}, {
PHY_ID_MATCH_MODEL(PHY_ID_BCM5461),
.name = "Broadcom BCM5461",
+ /* PHY_GBIT_FEATURES */
@@ -1752,7 +1759,8 @@ module_phy_driver(broadcom_drivers);
static const struct mdio_device_id __maybe_unused broadcom_tbl[] = {
{ PHY_ID_MATCH_MODEL(PHY_ID_BCM5411) },
{ PHY_ID_MATCH_MODEL(PHY_ID_BCM5461) },
{ PHY_ID_MATCH_MODEL(PHY_ID_BCM54612E) },
{ PHY_ID_MATCH_MODEL(PHY_ID_BCM54616S) },
-diff --git a/include/linux/brcmphy.h b/include/linux/brcmphy.h
-index 115a964f3006..97e6a716740b 100644
--- a/include/linux/brcmphy.h
+++ b/include/linux/brcmphy.h
@@ -24,6 +24,7 @@
#define PHY_ID_BCM5464 0x002060b0
#define PHY_ID_BCM5461 0x002060c0
#define PHY_ID_BCM54612E 0x03625e60
---
-2.54.0
-
drivers/net/phy/broadcom.c | 8 ++++++++
1 file changed, 8 insertions(+)
-diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c
-index 863d9316b3f9..422e7b8119fb 100644
--- a/drivers/net/phy/broadcom.c
+++ b/drivers/net/phy/broadcom.c
-@@ -123,6 +123,11 @@ static int bcm54210e_config_init(struct phy_device *phydev)
+@@ -123,6 +123,11 @@ static int bcm54210e_config_init(struct
return 0;
}
static int bcm54612e_config_init(struct phy_device *phydev)
{
int reg;
-@@ -499,6 +504,9 @@ static int bcm54xx_config_init(struct phy_device *phydev)
+@@ -499,6 +504,9 @@ static int bcm54xx_config_init(struct ph
case PHY_ID_BCM54612E:
err = bcm54612e_config_init(phydev);
break;
case PHY_ID_BCM54616S:
err = bcm54616s_config_init(phydev);
break;
---
-2.54.0
-
drivers/net/phy/broadcom.c | 3 +++
1 file changed, 3 insertions(+)
-diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c
-index 422e7b8119fb..8e660aae5ba6 100644
--- a/drivers/net/phy/broadcom.c
+++ b/drivers/net/phy/broadcom.c
-@@ -491,6 +491,9 @@ static int bcm54xx_config_init(struct phy_device *phydev)
+@@ -491,6 +491,9 @@ static int bcm54xx_config_init(struct ph
(phydev->dev_flags & PHY_BRCM_CLEAR_RGMII_MODE))
bcm_phy_write_shadow(phydev, BCM54XX_SHD_RGMII_MODE, 0);
bcm54xx_adjust_rxrefclk(phydev);
switch (phydev->drv->phy_id & PHY_ID_MATCH_MODEL_MASK) {
---
-2.54.0
-
drivers/net/phy/broadcom.c | 6 ++++++
1 file changed, 6 insertions(+)
-diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c
-index 8e660aae5ba6..1146098bf54b 100644
--- a/drivers/net/phy/broadcom.c
+++ b/drivers/net/phy/broadcom.c
-@@ -1519,8 +1519,14 @@ static struct phy_driver broadcom_drivers[] = {
+@@ -1519,8 +1519,14 @@ static struct phy_driver broadcom_driver
PHY_ID_MATCH_EXACT(PHY_ID_BCM54213PE),
.name = "Broadcom BCM54213PE",
/* PHY_GBIT_FEATURES */
}, {
PHY_ID_MATCH_MODEL(PHY_ID_BCM5461),
.name = "Broadcom BCM5461",
---
-2.54.0
-
drivers/net/phy/bcm-phy-ptp.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
-diff --git a/drivers/net/phy/bcm-phy-ptp.c b/drivers/net/phy/bcm-phy-ptp.c
-index d3501f8487d9..fcb004fcba3d 100644
--- a/drivers/net/phy/bcm-phy-ptp.c
+++ b/drivers/net/phy/bcm-phy-ptp.c
-@@ -912,6 +912,18 @@ struct bcm_ptp_private *bcm_ptp_probe(struct phy_device *phydev)
+@@ -912,6 +912,18 @@ struct bcm_ptp_private *bcm_ptp_probe(st
switch (BRCM_PHY_MODEL(phydev)) {
case PHY_ID_BCM54210E:
break;
default:
return NULL;
}
---
-2.54.0
-
drivers/net/phy/broadcom.c | 2 ++
1 file changed, 2 insertions(+)
-diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c
-index 1146098bf54b..149c30c5b163 100644
--- a/drivers/net/phy/broadcom.c
+++ b/drivers/net/phy/broadcom.c
-@@ -1525,6 +1525,8 @@ static struct phy_driver broadcom_drivers[] = {
+@@ -1525,6 +1525,8 @@ static struct phy_driver broadcom_driver
.probe = bcm54xx_phy_probe,
.config_init = bcm54xx_config_init,
.config_intr = bcm_phy_config_intr,
.suspend = bcm54xx_suspend,
.resume = bcm54xx_resume,
}, {
---
-2.54.0
-
drivers/net/phy/broadcom.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
-diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c
-index 149c30c5b163..9ca9e78453b7 100644
--- a/drivers/net/phy/broadcom.c
+++ b/drivers/net/phy/broadcom.c
-@@ -544,10 +544,14 @@ static int bcm54xx_config_init(struct phy_device *phydev)
+@@ -544,10 +544,14 @@ static int bcm54xx_config_init(struct ph
BCM54XX_SHD_LEDS1_LED3(BCM_LED_SRC_MULTICOLOR1);
bcm_phy_write_shadow(phydev, BCM54XX_SHD_LEDS1, val);
/* BCM54210PE controls two extra LEDs with the next register.
val = BCM_LED_MULTICOLOR_IN_PHASE |
BCM54XX_SHD_LEDS1_LED1(led_modes[0]) |
---
-2.54.0
-
drivers/net/phy/broadcom.c | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
-diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c
-index 9ca9e78453b7..dba8a2b0c22e 100644
--- a/drivers/net/phy/broadcom.c
+++ b/drivers/net/phy/broadcom.c
-@@ -472,13 +472,9 @@ static int bcm54xx_config_init(struct phy_device *phydev)
+@@ -472,13 +472,9 @@ static int bcm54xx_config_init(struct ph
if (reg < 0)
return reg;
reg = ~(MII_BCM54XX_INT_DUPLEX |
MII_BCM54XX_INT_SPEED |
MII_BCM54XX_INT_LINK);
---
-2.54.0
-
drivers/net/phy/broadcom.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
-diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c
-index dba8a2b0c22e..428ff5a01b08 100644
--- a/drivers/net/phy/broadcom.c
+++ b/drivers/net/phy/broadcom.c
-@@ -536,6 +536,7 @@ static int bcm54xx_config_init(struct phy_device *phydev)
+@@ -536,6 +536,7 @@ static int bcm54xx_config_init(struct ph
* these settings will cause LOS to malfunction.
*/
if (!phy_on_sfp(phydev)) {
val = BCM54XX_SHD_LEDS1_LED1(BCM_LED_SRC_MULTICOLOR1) |
BCM54XX_SHD_LEDS1_LED3(BCM_LED_SRC_MULTICOLOR1);
bcm_phy_write_shadow(phydev, BCM54XX_SHD_LEDS1, val);
-@@ -550,8 +551,8 @@ static int bcm54xx_config_init(struct phy_device *phydev)
+@@ -550,8 +551,8 @@ static int bcm54xx_config_init(struct ph
bcm_phy_write_shadow(phydev, BCM54XX_SHD_LEDS2, reg);
val = BCM_LED_MULTICOLOR_IN_PHASE |
bcm_phy_write_exp(phydev, BCM_EXP_MULTICOLOR, val);
}
---
-2.54.0
-
.../interface/vchiq_arm/vchiq_core.h | 4 +
4 files changed, 91 insertions(+), 19 deletions(-)
-diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
-index 63c0f8f03134..374a0254da0c 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
@@ -19,6 +19,7 @@
#include <linux/platform_device.h>
#include <linux/compat.h>
#include <linux/dma-mapping.h>
-@@ -74,6 +75,11 @@ static const struct vchiq_platform_info bcm2836_info = {
+@@ -74,6 +75,11 @@ static const struct vchiq_platform_info
.cache_line_size = 64,
};
struct vchiq_arm_state {
/* Keepalive-related data */
struct task_struct *ka_thread;
-@@ -186,6 +192,7 @@ EXPORT_SYMBOL(vchiq_add_connected_callback);
+@@ -186,6 +192,7 @@ EXPORT_SYMBOL(vchiq_add_connected_callba
static int vchiq_platform_init(struct platform_device *pdev, struct vchiq_state *state)
{
struct device *dev = &pdev->dev;
struct vchiq_drv_mgmt *drv_mgmt = platform_get_drvdata(pdev);
struct rpi_firmware *fw = drv_mgmt->fw;
struct vchiq_slot_zero *vchiq_slot_zero;
-@@ -206,6 +213,24 @@ static int vchiq_platform_init(struct platform_device *pdev, struct vchiq_state
+@@ -206,6 +213,24 @@ static int vchiq_platform_init(struct pl
drv_mgmt->fragments_size = 2 * drv_mgmt->info->cache_line_size;
/* Allocate space for the channels in coherent memory */
slot_mem_size = PAGE_ALIGN(TOTAL_SLOTS * VCHIQ_SLOT_SIZE);
frag_mem_size = PAGE_ALIGN(drv_mgmt->fragments_size * MAX_FRAGMENTS);
-@@ -273,6 +298,8 @@ static int vchiq_platform_init(struct platform_device *pdev, struct vchiq_state
+@@ -273,6 +298,8 @@ static int vchiq_platform_init(struct pl
return -ENXIO;
}
dev_dbg(&pdev->dev, "arm: vchiq_init - done (slots %p, phys %pad)\n",
vchiq_slot_zero, &slot_phys);
-@@ -1363,6 +1390,7 @@ void vchiq_platform_conn_state_changed(struct vchiq_state *state,
+@@ -1363,6 +1390,7 @@ void vchiq_platform_conn_state_changed(s
static const struct of_device_id vchiq_of_match[] = {
{ .compatible = "brcm,bcm2835-vchiq", .data = &bcm2835_info },
{ .compatible = "brcm,bcm2836-vchiq", .data = &bcm2836_info },
{},
};
MODULE_DEVICE_TABLE(of, vchiq_of_match);
-diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.h b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.h
-index e32b02f99024..60d0c422a464 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.h
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.h
@@ -32,6 +32,7 @@ enum USE_TYPE_E {
};
struct vchiq_drv_mgmt {
-diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c
-index e2cac0898b8f..c0ffbaf2ea98 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c
-@@ -192,6 +192,9 @@ static const char *const conn_state_names[] = {
+@@ -192,6 +192,9 @@ static const char *const conn_state_name
"RESUME_TIMEOUT"
};
pagelistinfo->pagelist, pagelistinfo->dma_addr);
}
-@@ -1638,22 +1641,58 @@ create_pagelist(struct vchiq_instance *instance, struct vchiq_bulk *bulk)
+@@ -1638,22 +1641,58 @@ create_pagelist(struct vchiq_instance *i
/* Combine adjacent blocks for performance */
k = 0;
}
/* Partial cache lines (fragments) require special measures */
-@@ -1700,7 +1739,7 @@ free_pagelist(struct vchiq_instance *instance, struct vchiq_pagelist_info *pagel
+@@ -1700,7 +1739,7 @@ free_pagelist(struct vchiq_instance *ins
* NOTE: dma_unmap_sg must be called before the
* cpu can touch any of the data/pages.
*/
pagelistinfo->num_pages, pagelistinfo->dma_dir);
pagelistinfo->scatterlist_mapped = 0;
-diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.h b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.h
-index 9b4e766990a4..7f4fef68d415 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.h
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.h
@@ -436,6 +436,10 @@ struct vchiq_pagelist_info {
static inline bool vchiq_remote_initialised(const struct vchiq_state *state)
{
return state->remote && state->remote->initialised;
---
-2.54.0
-
.../interface/vchiq_arm/vchiq_core.h | 5 +++++
3 files changed, 30 insertions(+), 4 deletions(-)
-diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
-index 374a0254da0c..2bf64baca2e0 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
-@@ -299,6 +299,13 @@ static int vchiq_platform_init(struct platform_device *pdev, struct vchiq_state
+@@ -299,6 +299,13 @@ static int vchiq_platform_init(struct pl
}
g_dma_dev = dma_dev ?: dev;
dev_dbg(&pdev->dev, "arm: vchiq_init - done (slots %p, phys %pad)\n",
vchiq_slot_zero, &slot_phys);
-diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c
-index c0ffbaf2ea98..a9f382430bfb 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.c
-@@ -194,6 +194,7 @@ static const char *const conn_state_names[] = {
+@@ -194,6 +194,7 @@ static const char *const conn_state_name
unsigned int g_use_36bit_addrs = 0;
struct device *g_dma_dev;
static void
release_message_sync(struct vchiq_state *state, struct vchiq_header *header);
-@@ -1469,8 +1470,13 @@ cleanup_pagelistinfo(struct vchiq_instance *instance, struct vchiq_pagelist_info
+@@ -1469,8 +1470,13 @@ cleanup_pagelistinfo(struct vchiq_instan
if (pagelistinfo->pages_need_release)
unpin_user_pages(pagelistinfo->pages, pagelistinfo->num_pages);
}
static inline bool
-@@ -1504,6 +1510,7 @@ create_pagelist(struct vchiq_instance *instance, struct vchiq_bulk *bulk)
+@@ -1504,6 +1510,7 @@ create_pagelist(struct vchiq_instance *i
u32 *addrs;
unsigned int num_pages, offset, i, k;
int actual_pages;
size_t pagelist_size;
struct scatterlist *scatterlist, *sg;
int dma_buffers;
-@@ -1539,8 +1546,14 @@ create_pagelist(struct vchiq_instance *instance, struct vchiq_bulk *bulk)
+@@ -1539,8 +1546,14 @@ create_pagelist(struct vchiq_instance *i
/* Allocate enough storage to hold the page pointers and the page
* list
*/
dev_dbg(instance->state->dev, "arm: %p\n", pagelist);
-@@ -1561,6 +1574,7 @@ create_pagelist(struct vchiq_instance *instance, struct vchiq_bulk *bulk)
+@@ -1561,6 +1574,7 @@ create_pagelist(struct vchiq_instance *i
pagelistinfo->pagelist = pagelist;
pagelistinfo->pagelist_buffer_size = pagelist_size;
pagelistinfo->dma_addr = dma_addr;
pagelistinfo->dma_dir = (type == PAGELIST_WRITE) ?
DMA_TO_DEVICE : DMA_FROM_DEVICE;
pagelistinfo->num_pages = num_pages;
-diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.h b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.h
-index 7f4fef68d415..50386ccfa6e8 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.h
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_core.h
@@ -7,6 +7,7 @@
static inline bool vchiq_remote_initialised(const struct vchiq_state *state)
{
---
-2.54.0
-
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c | 3 +++
1 file changed, 3 insertions(+)
-diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
-index 2bf64baca2e0..4dc7ae72922f 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
@@ -65,6 +65,7 @@
static struct vchiq_device *vcsm_cma;
static const struct vchiq_platform_info bcm2835_info = {
-@@ -1456,6 +1457,7 @@ static int vchiq_probe(struct platform_device *pdev)
+@@ -1456,6 +1457,7 @@ static int vchiq_probe(struct platform_d
bcm2835_codec = vchiq_device_register(&pdev->dev, "bcm2835-codec");
bcm2835_audio = vchiq_device_register(&pdev->dev, "bcm2835-audio");
bcm2835_camera = vchiq_device_register(&pdev->dev, "bcm2835-camera");
return 0;
}
-@@ -1464,6 +1466,7 @@ static void vchiq_remove(struct platform_device *pdev)
+@@ -1464,6 +1466,7 @@ static void vchiq_remove(struct platform
{
struct vchiq_drv_mgmt *mgmt = dev_get_drvdata(&pdev->dev);
vchiq_device_unregister(bcm2835_audio);
vchiq_device_unregister(bcm2835_camera);
vchiq_device_unregister(bcm2835_codec);
---
-2.54.0
-
drivers/pinctrl/bcm/pinctrl-bcm2835.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/pinctrl/bcm/pinctrl-bcm2835.c b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
-index c165674c5b4d..77f84ac4b424 100644
--- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c
+++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
-@@ -1426,7 +1426,7 @@ static int bcm2835_pinctrl_probe(struct platform_device *pdev)
+@@ -1426,7 +1426,7 @@ static int bcm2835_pinctrl_probe(struct
girq->default_type = IRQ_TYPE_NONE;
girq->handler = handle_level_irq;
if (err) {
dev_err(dev, "could not add GPIO chip\n");
goto out_remove;
---
-2.54.0
-
1 file changed, 59 insertions(+)
create mode 100644 Documentation/devicetree/bindings/pci/brcmstb-pcie.txt
-diff --git a/Documentation/devicetree/bindings/pci/brcmstb-pcie.txt b/Documentation/devicetree/bindings/pci/brcmstb-pcie.txt
-new file mode 100644
-index 000000000000..a1a9ad5e70ca
--- /dev/null
+++ b/Documentation/devicetree/bindings/pci/brcmstb-pcie.txt
@@ -0,0 +1,59 @@
+ max-link-speed = <1>;
+ linux,pci-domain = <0>;
+ };
---
-2.54.0
-
drivers/net/ethernet/broadcom/genet/bcmgenet.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
-index 226af052bf53..d095968730c5 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
@@ -65,7 +65,7 @@
module_param(skip_umac_reset, bool, 0444);
MODULE_PARM_DESC(skip_umac_reset, "Skip UMAC reset step");
---
-2.54.0
-
2 files changed, 79 insertions(+)
create mode 100644 Documentation/devicetree/bindings/media/rpivid_hevc.yaml
-diff --git a/Documentation/devicetree/bindings/media/rpivid_hevc.yaml b/Documentation/devicetree/bindings/media/rpivid_hevc.yaml
-new file mode 100644
-index 000000000000..ce6b81a10303
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/rpivid_hevc.yaml
@@ -0,0 +1,72 @@
+ };
+
+...
-diff --git a/MAINTAINERS b/MAINTAINERS
-index 291a8a6710a1..d5ee2cc41752 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -4856,6 +4856,13 @@ S: Maintained
BROADCOM BCM47XX MIPS ARCHITECTURE
M: Hauke Mehrtens <hauke@hauke-m.de>
M: Rafał Miłecki <zajec5@gmail.com>
---
-2.54.0
-
drivers/spi/spi.c | 9 +++++++++
1 file changed, 9 insertions(+)
-diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
-index 87d829d2a842..be6cf700db32 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
-@@ -3876,6 +3876,7 @@ static int spi_set_cs_timing(struct spi_device *spi)
- */
- int spi_setup(struct spi_device *spi)
+@@ -3858,6 +3858,7 @@ static int spi_set_cs_timing(struct spi_
+
+ static int __spi_setup(struct spi_device *spi, bool initial_setup)
{
+ struct spi_controller *ctlr = spi->controller;
unsigned bad_bits, ugly_bits;
int status;
-@@ -3902,6 +3903,14 @@ int spi_setup(struct spi_device *spi)
+@@ -3884,6 +3885,14 @@ static int __spi_setup(struct spi_device
"setup: MOSI configured to idle low and high at the same time.\n");
return -EINVAL;
}
/*
* Help drivers fail *cleanly* when they need options
* that aren't supported with their current controller.
---
-2.54.0
-
4 files changed, 35 insertions(+)
create mode 100644 Documentation/userspace-api/media/v4l/pixfmt-meta-sensor-data.rst
-diff --git a/Documentation/userspace-api/media/v4l/meta-formats.rst b/Documentation/userspace-api/media/v4l/meta-formats.rst
-index 0de80328c36b..3212333f04d3 100644
--- a/Documentation/userspace-api/media/v4l/meta-formats.rst
+++ b/Documentation/userspace-api/media/v4l/meta-formats.rst
-@@ -19,6 +19,7 @@ These formats are used for the :ref:`metadata` interface only.
+@@ -19,6 +19,7 @@ These formats are used for the :ref:`met
metafmt-pisp-be
metafmt-pisp-fe
metafmt-rkisp1
metafmt-uvc
metafmt-uvc-msxu-1-5
metafmt-vivid
-diff --git a/Documentation/userspace-api/media/v4l/pixfmt-meta-sensor-data.rst b/Documentation/userspace-api/media/v4l/pixfmt-meta-sensor-data.rst
-new file mode 100644
-index 000000000000..4a67e204d08a
--- /dev/null
+++ b/Documentation/userspace-api/media/v4l/pixfmt-meta-sensor-data.rst
@@ -0,0 +1,32 @@
+field in :c:type:`v4l2_subdev_format` is set to 1. Note that this size is fixed
+and cannot be modified with a call to :c:type:`VIDIOC_SUBDEV_S_FMT`.
+
-diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
-index 5e019c10afa3..2ed4b6dc0f47 100644
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
-@@ -1486,6 +1486,7 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt)
+@@ -1486,6 +1486,7 @@ static void v4l_fill_fmtdesc(struct v4l2
case V4L2_META_FMT_GENERIC_CSI2_16: descr = "8-bit Generic Meta, 16b CSI-2"; break;
case V4L2_META_FMT_GENERIC_CSI2_20: descr = "8-bit Generic Meta, 20b CSI-2"; break;
case V4L2_META_FMT_GENERIC_CSI2_24: descr = "8-bit Generic Meta, 24b CSI-2"; break;
default:
/* Compressed formats */
-diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
-index 30f9ba7f4816..d08abc485dfe 100644
--- a/include/uapi/linux/videodev2.h
+++ b/include/uapi/linux/videodev2.h
@@ -874,6 +874,7 @@ struct v4l2_pix_format {
/* Vendor specific - used for RK_ISP1 camera sub-system */
#define V4L2_META_FMT_RK_ISP1_PARAMS v4l2_fourcc('R', 'K', '1', 'P') /* Rockchip ISP1 3A Parameters */
---
-2.54.0
-
include/uapi/linux/media-bus-format.h | 3 ++
2 files changed, 33 insertions(+)
-diff --git a/Documentation/userspace-api/media/v4l/subdev-formats.rst b/Documentation/userspace-api/media/v4l/subdev-formats.rst
-index 2a94371448dc..2d9d4e1802d4 100644
--- a/Documentation/userspace-api/media/v4l/subdev-formats.rst
+++ b/Documentation/userspace-api/media/v4l/subdev-formats.rst
-@@ -8713,3 +8713,33 @@ and finally the bit number in subscript. "x" indicates a padding bit.
+@@ -8713,3 +8713,33 @@ and finally the bit number in subscript.
- x
- x
- x
+ - Sensor vendor specific ancillary metadata. Some vendors follow a generic
+ CSI-2/SMIA embedded data format as described in the `CSI-2 specification.
+ <https://mipi.org/specifications/csi-2>`_
-diff --git a/include/uapi/linux/media-bus-format.h b/include/uapi/linux/media-bus-format.h
-index ff62056feed5..b434cb9c2b2c 100644
--- a/include/uapi/linux/media-bus-format.h
+++ b/include/uapi/linux/media-bus-format.h
@@ -185,4 +185,7 @@
+#define MEDIA_BUS_FMT_SENSOR_DATA 0x7002
+
#endif /* __LINUX_MEDIA_BUS_FORMAT_H */
---
-2.54.0
-
4 files changed, 44 insertions(+)
create mode 100644 Documentation/userspace-api/media/v4l/pixfmt-meta-bcm2835-isp-stats.rst
-diff --git a/Documentation/userspace-api/media/v4l/meta-formats.rst b/Documentation/userspace-api/media/v4l/meta-formats.rst
-index 3212333f04d3..c6d7b199be9d 100644
--- a/Documentation/userspace-api/media/v4l/meta-formats.rst
+++ b/Documentation/userspace-api/media/v4l/meta-formats.rst
-@@ -12,6 +12,7 @@ These formats are used for the :ref:`metadata` interface only.
+@@ -12,6 +12,7 @@ These formats are used for the :ref:`met
.. toctree::
:maxdepth: 1
metafmt-c3-isp
metafmt-d4xx
metafmt-generic
-diff --git a/Documentation/userspace-api/media/v4l/pixfmt-meta-bcm2835-isp-stats.rst b/Documentation/userspace-api/media/v4l/pixfmt-meta-bcm2835-isp-stats.rst
-new file mode 100644
-index 000000000000..f974774c8252
--- /dev/null
+++ b/Documentation/userspace-api/media/v4l/pixfmt-meta-bcm2835-isp-stats.rst
@@ -0,0 +1,41 @@
+ :functions: bcm2835_isp_stats_hist bcm2835_isp_stats_region
+ bcm2835_isp_stats_focus bcm2835_isp_stats
+
-diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
-index 2ed4b6dc0f47..9fb5528fa807 100644
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
-@@ -1487,6 +1487,7 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt)
+@@ -1487,6 +1487,7 @@ static void v4l_fill_fmtdesc(struct v4l2
case V4L2_META_FMT_GENERIC_CSI2_20: descr = "8-bit Generic Meta, 20b CSI-2"; break;
case V4L2_META_FMT_GENERIC_CSI2_24: descr = "8-bit Generic Meta, 24b CSI-2"; break;
case V4L2_META_FMT_SENSOR_DATA: descr = "Sensor Ancillary Metadata"; break;
default:
/* Compressed formats */
-diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
-index d08abc485dfe..c73999fa011b 100644
--- a/include/uapi/linux/videodev2.h
+++ b/include/uapi/linux/videodev2.h
@@ -875,6 +875,7 @@ struct v4l2_pix_format {
/* Vendor specific - used for RK_ISP1 camera sub-system */
#define V4L2_META_FMT_RK_ISP1_PARAMS v4l2_fourcc('R', 'K', '1', 'P') /* Rockchip ISP1 3A Parameters */
---
-2.54.0
-
3 files changed, 132 insertions(+)
create mode 100644 Documentation/admin-guide/media/bcm2835-isp.rst
-diff --git a/Documentation/admin-guide/media/bcm2835-isp.rst b/Documentation/admin-guide/media/bcm2835-isp.rst
-new file mode 100644
-index 000000000000..e1c19f78435e
--- /dev/null
+++ b/Documentation/admin-guide/media/bcm2835-isp.rst
@@ -0,0 +1,127 @@
+ bcm2835_isp_black_level bcm2835_isp_geq bcm2835_isp_gamma
+ bcm2835_isp_denoise bcm2835_isp_sharpen
+ bcm2835_isp_dpc_mode bcm2835_isp_dpc
-diff --git a/Documentation/userspace-api/media/drivers/index.rst b/Documentation/userspace-api/media/drivers/index.rst
-index d706cb47b112..65bcd99cb96f 100644
--- a/Documentation/userspace-api/media/drivers/index.rst
+++ b/Documentation/userspace-api/media/drivers/index.rst
-@@ -32,6 +32,7 @@ For more details see the file COPYING in the source distribution of Linux.
+@@ -32,6 +32,7 @@ For more details see the file COPYING in
cx2341x-uapi
dw100
imx-uapi
max2175
npcm-video
omap3isp-uapi
-diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h
-index 3ba7408ee7aa..8455190494eb 100644
--- a/include/uapi/linux/v4l2-controls.h
+++ b/include/uapi/linux/v4l2-controls.h
@@ -228,6 +228,10 @@ enum v4l2_colorfx {
/* MPEG-class control IDs */
/* The MPEG controls are applicable to all codec controls
* and the 'MPEG' part of the define is historical */
---
-2.54.0
-
drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h | 6 ++++++
1 file changed, 6 insertions(+)
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h b/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h
-index 045eba62e9de..3ede6be20633 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h
@@ -609,6 +609,12 @@ enum mmal_parameter_video_type {
};
/** Valid mirror modes */
---
-2.54.0
-
.../staging/vc04_services/bcm2835-camera/bcm2835-camera.c | 6 ++++++
1 file changed, 6 insertions(+)
-diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
-index fa7ea4ca4c36..9dbb8817960c 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
-@@ -1724,6 +1724,12 @@ static int mmal_init(struct bcm2835_mmal_dev *dev)
+@@ -1724,6 +1724,12 @@ static int mmal_init(struct bcm2835_mmal
MMAL_PARAMETER_MINIMISE_FRAGMENTATION,
&enable,
sizeof(enable));
}
ret = bcm2835_mmal_set_all_camera_controls(dev);
if (ret < 0) {
---
-2.54.0
-
drivers/gpio/gpiolib.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
-diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
-index 67f362d53d53..4cd0ac7e075d 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -51,6 +51,8 @@
/* Device and char device-related information */
static DEFINE_IDA(gpio_ida);
static dev_t gpio_devt;
-@@ -3018,8 +3020,8 @@ int gpiod_direction_output_nonotify(struct gpio_desc *desc, int value)
+@@ -3018,8 +3020,8 @@ int gpiod_direction_output_nonotify(stru
value = !!value;
/* GPIOs used for enabled IRQs shall not be set as output */
gpiod_err(desc,
"%s: tried to set a GPIO tied to an IRQ as output\n",
__func__);
-@@ -4058,8 +4060,8 @@ int gpiochip_lock_as_irq(struct gpio_chip *gc, unsigned int offset)
+@@ -4058,8 +4060,8 @@ int gpiochip_lock_as_irq(struct gpio_chi
}
/* To be valid for IRQ the line needs to be input or open drain */
gpiochip_err(gc,
"%s: tried to flag a GPIO set as output for IRQ\n",
__func__);
---
-2.54.0
-
.../broadcom/brcm80211/brcmfmac/firmware.c | 21 +++++++++-
2 files changed, 47 insertions(+), 13 deletions(-)
-diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
-index bb96b87b2a6e..7c23f953739a 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
@@ -9,6 +9,7 @@
#include <net/cfg80211.h>
#include <net/netlink.h>
#include <uapi/linux/if_arp.h>
-@@ -8242,31 +8243,45 @@ static void brcmf_cfg80211_reg_notifier(struct wiphy *wiphy,
+@@ -8242,31 +8243,45 @@ static void brcmf_cfg80211_reg_notifier(
struct brcmf_if *ifp = brcmf_get_ifp(cfg->pub, 0);
struct brcmf_pub *drvr = cfg->pub;
struct brcmf_fil_country_le ccreq;
if (err)
return;
-diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
-index ef79924fd8f4..0ef3d8dca536 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
@@ -10,6 +10,7 @@
/**
* struct nvram_parser - internal info for parser.
*
-@@ -566,11 +569,27 @@ static int brcmf_fw_request_nvram_done(const struct firmware *fw, void *ctx)
+@@ -566,11 +569,27 @@ static int brcmf_fw_request_nvram_done(c
}
}
if (free_bcm47xx_nvram)
bcm47xx_nvram_release_contents(data);
---
-2.54.0
-
create mode 100644 drivers/media/platform/bcm2835/bcm2835-unicam.c
create mode 100644 drivers/media/platform/bcm2835/vc4-regs-unicam.h
-diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig
-index 9287faafdce5..12ce84097caa 100644
--- a/drivers/media/platform/Kconfig
+++ b/drivers/media/platform/Kconfig
-@@ -67,6 +67,7 @@ source "drivers/media/platform/amlogic/Kconfig"
+@@ -67,6 +67,7 @@ source "drivers/media/platform/amlogic/K
source "drivers/media/platform/amphion/Kconfig"
source "drivers/media/platform/aspeed/Kconfig"
source "drivers/media/platform/atmel/Kconfig"
source "drivers/media/platform/broadcom/Kconfig"
source "drivers/media/platform/cadence/Kconfig"
source "drivers/media/platform/chips-media/Kconfig"
-diff --git a/drivers/media/platform/Makefile b/drivers/media/platform/Makefile
-index 6fd7db0541c7..243cdbdeddec 100644
--- a/drivers/media/platform/Makefile
+++ b/drivers/media/platform/Makefile
@@ -10,6 +10,7 @@ obj-y += amlogic/
obj-y += broadcom/
obj-y += cadence/
obj-y += chips-media/
-diff --git a/drivers/media/platform/bcm2835/Kconfig b/drivers/media/platform/bcm2835/Kconfig
-new file mode 100644
-index 000000000000..09d20dd52452
--- /dev/null
+++ b/drivers/media/platform/bcm2835/Kconfig
@@ -0,0 +1,24 @@
+
+ To compile this driver as a module, choose M here. The module will be
+ called bcm2835-unicam.
-diff --git a/drivers/media/platform/bcm2835/Makefile b/drivers/media/platform/bcm2835/Makefile
-new file mode 100644
-index 000000000000..55a48691f513
--- /dev/null
+++ b/drivers/media/platform/bcm2835/Makefile
@@ -0,0 +1,4 @@
+
+bcm2835-unicam-legacy-y := bcm2835-unicam.o
+obj-$(CONFIG_VIDEO_BCM2835_UNICAM_LEGACY) += bcm2835-unicam-legacy.o
-diff --git a/drivers/media/platform/bcm2835/bcm2835-unicam.c b/drivers/media/platform/bcm2835/bcm2835-unicam.c
-new file mode 100644
-index 000000000000..1ce6721e7650
--- /dev/null
+++ b/drivers/media/platform/bcm2835/bcm2835-unicam.c
@@ -0,0 +1,3522 @@
+MODULE_DESCRIPTION("BCM2835 Unicam driver");
+MODULE_LICENSE("GPL");
+MODULE_VERSION(UNICAM_VERSION);
-diff --git a/drivers/media/platform/bcm2835/vc4-regs-unicam.h b/drivers/media/platform/bcm2835/vc4-regs-unicam.h
-new file mode 100644
-index 000000000000..ae059a171d0f
--- /dev/null
+++ b/drivers/media/platform/bcm2835/vc4-regs-unicam.h
@@ -0,0 +1,253 @@
+#define UNICAM_FL1 BIT(9)
+
+#endif
---
-2.54.0
-
drivers/media/platform/broadcom/bcm2835-unicam.c | 2 +-
2 files changed, 8 insertions(+), 2 deletions(-)
-diff --git a/drivers/media/platform/bcm2835/bcm2835-unicam.c b/drivers/media/platform/bcm2835/bcm2835-unicam.c
-index 1ce6721e7650..1c4ae29d69a0 100644
--- a/drivers/media/platform/bcm2835/bcm2835-unicam.c
+++ b/drivers/media/platform/bcm2835/bcm2835-unicam.c
-@@ -3381,6 +3381,11 @@ static int unicam_probe(struct platform_device *pdev)
+@@ -3381,6 +3381,11 @@ static int unicam_probe(struct platform_
* device tree requests it.
*/
unicam->mc_api = media_controller;
if (of_property_read_bool(pdev->dev.of_node, "brcm,media-controller"))
unicam->mc_api = true;
-@@ -3500,7 +3505,8 @@ static void unicam_remove(struct platform_device *pdev)
+@@ -3500,7 +3505,8 @@ static void unicam_remove(struct platfor
}
static const struct of_device_id unicam_of_match[] = {
{ /* sentinel */ },
};
MODULE_DEVICE_TABLE(of, unicam_of_match);
-diff --git a/drivers/media/platform/broadcom/bcm2835-unicam.c b/drivers/media/platform/broadcom/bcm2835-unicam.c
-index f10064107d54..1fe30149d5e2 100644
--- a/drivers/media/platform/broadcom/bcm2835-unicam.c
+++ b/drivers/media/platform/broadcom/bcm2835-unicam.c
-@@ -2735,7 +2735,7 @@ static void unicam_remove(struct platform_device *pdev)
+@@ -2735,7 +2735,7 @@ static void unicam_remove(struct platfor
}
static const struct of_device_id unicam_of_match[] = {
{ /* sentinel */ },
};
MODULE_DEVICE_TABLE(of, unicam_of_match);
---
-2.54.0
-
drivers/tty/serial/8250/8250_bcm2835aux.c | 7 +++++++
1 file changed, 7 insertions(+)
-diff --git a/drivers/tty/serial/8250/8250_bcm2835aux.c b/drivers/tty/serial/8250/8250_bcm2835aux.c
-index 0609582a62f7..9c587f873ba5 100644
--- a/drivers/tty/serial/8250/8250_bcm2835aux.c
+++ b/drivers/tty/serial/8250/8250_bcm2835aux.c
-@@ -156,6 +156,13 @@ static int bcm2835aux_serial_probe(struct platform_device *pdev)
+@@ -156,6 +156,13 @@ static int bcm2835aux_serial_probe(struc
*/
up.port.uartclk *= 2;
/* register the port */
ret = serial8250_register_8250_port(&up);
if (ret < 0) {
---
-2.54.0
-
3 files changed, 202 insertions(+)
create mode 100644 drivers/leds/trigger/ledtrig-actpwr.c
-diff --git a/drivers/leds/trigger/Kconfig b/drivers/leds/trigger/Kconfig
-index 011b27ef30ec..c48c1c3e9e11 100644
--- a/drivers/leds/trigger/Kconfig
+++ b/drivers/leds/trigger/Kconfig
-@@ -168,4 +168,15 @@ config LEDS_TRIGGER_INPUT_EVENTS
+@@ -177,4 +177,15 @@ config LEDS_TRIGGER_INPUT_EVENTS
When build as a module this driver will be called ledtrig-input-events.
+ If unsure, say N.
+
endif # LEDS_TRIGGERS
-diff --git a/drivers/leds/trigger/Makefile b/drivers/leds/trigger/Makefile
-index 5c4653d7f4de..c17cbd1939d5 100644
--- a/drivers/leds/trigger/Makefile
+++ b/drivers/leds/trigger/Makefile
-@@ -17,3 +17,4 @@ obj-$(CONFIG_LEDS_TRIGGER_NETDEV) += ledtrig-netdev.o
- obj-$(CONFIG_LEDS_TRIGGER_PATTERN) += ledtrig-pattern.o
+@@ -18,3 +18,4 @@ obj-$(CONFIG_LEDS_TRIGGER_PATTERN) += le
obj-$(CONFIG_LEDS_TRIGGER_TTY) += ledtrig-tty.o
obj-$(CONFIG_LEDS_TRIGGER_INPUT_EVENTS) += ledtrig-input-events.o
+ obj-$(CONFIG_LEDS_TRIGGER_NETWORK) += ledtrig-network.o
+obj-$(CONFIG_LEDS_TRIGGER_ACTPWR) += ledtrig-actpwr.o
-diff --git a/drivers/leds/trigger/ledtrig-actpwr.c b/drivers/leds/trigger/ledtrig-actpwr.c
-new file mode 100644
-index 000000000000..d0428f669bfb
--- /dev/null
+++ b/drivers/leds/trigger/ledtrig-actpwr.c
@@ -0,0 +1,190 @@
+MODULE_AUTHOR("Phil Elwell <phil@raspberrypi.com>");
+MODULE_DESCRIPTION("ACT/PWR LED trigger");
+MODULE_LICENSE("GPL v2");
---
-2.54.0
-
drivers/staging/fbtft/fbtft.h | 112 +++++++++++++++++++----------
3 files changed, 126 insertions(+), 40 deletions(-)
-diff --git a/drivers/staging/fbtft/fb_st7735r.c b/drivers/staging/fbtft/fb_st7735r.c
-index 9670a8989b91..a04365d1c75e 100644
--- a/drivers/staging/fbtft/fb_st7735r.c
+++ b/drivers/staging/fbtft/fb_st7735r.c
@@ -16,6 +16,10 @@
static const s16 default_init_sequence[] = {
-1, MIPI_DCS_SOFT_RESET,
-2, 150, /* delay */
-@@ -94,6 +98,14 @@ static void set_addr_win(struct fbtft_par *par, int xs, int ys, int xe, int ye)
+@@ -94,6 +98,14 @@ static void set_addr_win(struct fbtft_pa
write_reg(par, MIPI_DCS_WRITE_MEMORY_START);
}
MODULE_DESCRIPTION("FB driver for the ST7735R LCD Controller");
MODULE_AUTHOR("Noralf Tronnes");
-diff --git a/drivers/staging/fbtft/fbtft-core.c b/drivers/staging/fbtft/fbtft-core.c
-index 8a5ccc8ae0a1..7e0f6b14aac8 100644
--- a/drivers/staging/fbtft/fbtft-core.c
+++ b/drivers/staging/fbtft/fbtft-core.c
@@ -24,6 +24,8 @@
#include <video/mipi_display.h>
-@@ -1133,6 +1135,7 @@ static struct fbtft_platform_data *fbtft_properties_read(struct device *dev)
+@@ -1133,6 +1135,7 @@ static struct fbtft_platform_data *fbtft
* @display: Display properties
* @sdev: SPI device
* @pdev: Platform device
*
* Allocates, initializes and registers a framebuffer
*
-@@ -1142,12 +1145,15 @@ static struct fbtft_platform_data *fbtft_properties_read(struct device *dev)
+@@ -1142,12 +1145,15 @@ static struct fbtft_platform_data *fbtft
*/
int fbtft_probe_common(struct fbtft_display *display,
struct spi_device *sdev,
int ret;
if (sdev)
-@@ -1160,6 +1166,14 @@ int fbtft_probe_common(struct fbtft_display *display,
+@@ -1160,6 +1166,14 @@ int fbtft_probe_common(struct fbtft_disp
pdata = fbtft_properties_read(dev);
if (IS_ERR(pdata))
return PTR_ERR(pdata);
}
info = fbtft_framebuffer_alloc(display, dev, pdata);
-diff --git a/drivers/staging/fbtft/fbtft.h b/drivers/staging/fbtft/fbtft.h
-index 317be17b95c1..5f9fe41cfa8a 100644
--- a/drivers/staging/fbtft/fbtft.h
+++ b/drivers/staging/fbtft/fbtft.h
-@@ -253,7 +253,8 @@ void fbtft_register_backlight(struct fbtft_par *par);
+@@ -253,7 +253,8 @@ void fbtft_register_backlight(struct fbt
void fbtft_unregister_backlight(struct fbtft_par *par);
int fbtft_init_display(struct fbtft_par *par);
int fbtft_probe_common(struct fbtft_display *display, struct spi_device *sdev,
void fbtft_remove_common(struct device *dev, struct fb_info *info);
/* fbtft-io.c */
-@@ -274,42 +275,25 @@ void fbtft_write_reg8_bus9(struct fbtft_par *par, int len, ...);
+@@ -274,42 +275,25 @@ void fbtft_write_reg8_bus9(struct fbtft_
void fbtft_write_reg16_bus8(struct fbtft_par *par, int len, ...);
void fbtft_write_reg16_bus16(struct fbtft_par *par, int len, ...);
} \
\
static void fbtft_driver_remove_pdev(struct platform_device *pdev) \
-@@ -319,9 +303,30 @@ static void fbtft_driver_remove_pdev(struct platform_device *pdev) \
+@@ -319,9 +303,30 @@ static void fbtft_driver_remove_pdev(str
fbtft_remove_common(&pdev->dev, info); \
} \
\
+ { .compatible = _compatible, .data = _variant },
+
+#define FBTFT_REGISTER_DRIVER_END(_name, _display) \
-+ \
-+ {}, \
-+}; \
\
-FBTFT_SPI_DRIVER(_name, _compatible, _display, NULL) \
++ {}, \
++}; \
++ \
+MODULE_DEVICE_TABLE(of, dt_ids); \
+ \
+ \
/* Debug macros */
/* shorthand debug levels */
---
-2.54.0
-
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
-diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
-index 7c23f953739a..680f03adff92 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
-@@ -3322,7 +3322,7 @@ brcmf_cfg80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *ndev,
+@@ -3322,7 +3322,7 @@ brcmf_cfg80211_set_power_mgmt(struct wip
brcmf_dbg(INFO, "Do not enable power save for P2P clients\n");
pm = PM_OFF;
}
err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_PM, pm);
if (err) {
-@@ -3332,6 +3332,7 @@ brcmf_cfg80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *ndev,
+@@ -3332,6 +3332,7 @@ brcmf_cfg80211_set_power_mgmt(struct wip
bphy_err(drvr, "error (%d)\n", err);
}
err = brcmf_fil_iovar_int_set(ifp, "pm2_sleep_ret",
min_t(u32, timeout, BRCMF_PS_MAX_TIMEOUT_MS));
if (err)
---
-2.54.0
-
drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
-index 9dbb8817960c..0eabcd9350d1 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
@@ -177,7 +177,7 @@ static struct mmal_fmt formats[] = {
.mmal = MMAL_ENCODING_BGRA,
.depth = 32,
.mmal_component = COMP_CAMERA,
---
-2.54.0
-
create mode 100644 drivers/staging/vc04_services/vc-sm-cma/vc_sm_defs.h
create mode 100644 drivers/staging/vc04_services/vc-sm-cma/vc_sm_knl.h
-diff --git a/drivers/staging/vc04_services/Kconfig b/drivers/staging/vc04_services/Kconfig
-index ccc8e1588648..833d9bebde77 100644
--- a/drivers/staging/vc04_services/Kconfig
+++ b/drivers/staging/vc04_services/Kconfig
-@@ -50,6 +50,8 @@ source "drivers/staging/vc04_services/bcm2835-audio/Kconfig"
+@@ -50,6 +50,8 @@ source "drivers/staging/vc04_services/bc
source "drivers/staging/vc04_services/bcm2835-camera/Kconfig"
source "drivers/staging/vc04_services/vchiq-mmal/Kconfig"
endif
-diff --git a/drivers/staging/vc04_services/Makefile b/drivers/staging/vc04_services/Makefile
-index dad3789522b8..2a92554e7d57 100644
--- a/drivers/staging/vc04_services/Makefile
+++ b/drivers/staging/vc04_services/Makefile
@@ -14,4 +14,5 @@ endif
obj-$(CONFIG_BCM2835_VCHIQ_MMAL) += vchiq-mmal/
+obj-$(CONFIG_BCM_VC_SM_CMA) += vc-sm-cma/
-diff --git a/drivers/staging/vc04_services/include/linux/broadcom/vc_sm_cma_ioctl.h b/drivers/staging/vc04_services/include/linux/broadcom/vc_sm_cma_ioctl.h
-new file mode 100644
-index 000000000000..107460ad1be3
--- /dev/null
+++ b/drivers/staging/vc04_services/include/linux/broadcom/vc_sm_cma_ioctl.h
@@ -0,0 +1,114 @@
+ struct vc_sm_cma_ioctl_clean_invalid2)
+
+#endif /* __VC_SM_CMA_IOCTL_H */
-diff --git a/drivers/staging/vc04_services/vc-sm-cma/Kconfig b/drivers/staging/vc04_services/vc-sm-cma/Kconfig
-new file mode 100644
-index 000000000000..d812021385a0
--- /dev/null
+++ b/drivers/staging/vc04_services/vc-sm-cma/Kconfig
@@ -0,0 +1,10 @@
+ supports sharing dmabufs with VideoCore.
+ This operates over the VCHIQ interface to a service
+ running on VideoCore.
-diff --git a/drivers/staging/vc04_services/vc-sm-cma/Makefile b/drivers/staging/vc04_services/vc-sm-cma/Makefile
-new file mode 100644
-index 000000000000..bb80a16fdf48
--- /dev/null
+++ b/drivers/staging/vc04_services/vc-sm-cma/Makefile
@@ -0,0 +1,7 @@
+ vc_sm.o vc_sm_cma_vchi.o
+
+obj-$(CONFIG_BCM_VC_SM_CMA) += vc-sm-cma.o
-diff --git a/drivers/staging/vc04_services/vc-sm-cma/TODO b/drivers/staging/vc04_services/vc-sm-cma/TODO
-new file mode 100644
-index 000000000000..ac9b5f8a7389
--- /dev/null
+++ b/drivers/staging/vc04_services/vc-sm-cma/TODO
@@ -0,0 +1 @@
+No currently outstanding tasks except some clean-up.
-diff --git a/drivers/staging/vc04_services/vc-sm-cma/vc_sm.c b/drivers/staging/vc04_services/vc-sm-cma/vc_sm.c
-new file mode 100644
-index 000000000000..b0aff3974f24
--- /dev/null
+++ b/drivers/staging/vc04_services/vc-sm-cma/vc_sm.c
@@ -0,0 +1,1620 @@
+MODULE_DESCRIPTION("VideoCore CMA Shared Memory Driver");
+MODULE_LICENSE("GPL v2");
+MODULE_ALIAS("vcsm-cma");
-diff --git a/drivers/staging/vc04_services/vc-sm-cma/vc_sm.h b/drivers/staging/vc04_services/vc-sm-cma/vc_sm.h
-new file mode 100644
-index 000000000000..2f0dc7045da6
--- /dev/null
+++ b/drivers/staging/vc04_services/vc-sm-cma/vc_sm.h
@@ -0,0 +1,84 @@
+};
+
+#endif
-diff --git a/drivers/staging/vc04_services/vc-sm-cma/vc_sm_cma_vchi.c b/drivers/staging/vc04_services/vc-sm-cma/vc_sm_cma_vchi.c
-new file mode 100644
-index 000000000000..684e1881ae1f
--- /dev/null
+++ b/drivers/staging/vc04_services/vc-sm-cma/vc_sm_cma_vchi.c
@@ -0,0 +1,511 @@
+ msg, sizeof(*msg), 0, 0, cur_trans_id,
+ 0);
+}
-diff --git a/drivers/staging/vc04_services/vc-sm-cma/vc_sm_cma_vchi.h b/drivers/staging/vc04_services/vc-sm-cma/vc_sm_cma_vchi.h
-new file mode 100644
-index 000000000000..5dd23ad408fc
--- /dev/null
+++ b/drivers/staging/vc04_services/vc-sm-cma/vc_sm_cma_vchi.h
@@ -0,0 +1,63 @@
+ uint32_t *cur_trans_id);
+
+#endif /* __VC_SM_CMA_VCHI_H__INCLUDED__ */
-diff --git a/drivers/staging/vc04_services/vc-sm-cma/vc_sm_defs.h b/drivers/staging/vc04_services/vc-sm-cma/vc_sm_defs.h
-new file mode 100644
-index 000000000000..8b6a395c640d
--- /dev/null
+++ b/drivers/staging/vc04_services/vc-sm-cma/vc_sm_defs.h
@@ -0,0 +1,296 @@
+};
+
+#endif /* __VC_SM_DEFS_H__INCLUDED__ */
-diff --git a/drivers/staging/vc04_services/vc-sm-cma/vc_sm_knl.h b/drivers/staging/vc04_services/vc-sm-cma/vc_sm_knl.h
-new file mode 100644
-index 000000000000..988fdd967922
--- /dev/null
+++ b/drivers/staging/vc04_services/vc-sm-cma/vc_sm_knl.h
@@ -0,0 +1,28 @@
+int vc_sm_cma_import_dmabuf(struct dma_buf *dmabuf, void **handle);
+
+#endif /* __VC_SM_KNL_H__INCLUDED__ */
---
-2.54.0
-
drivers/staging/vc04_services/vchiq-mmal/mmal-encodings.h | 6 ++++++
1 file changed, 6 insertions(+)
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-encodings.h b/drivers/staging/vc04_services/vchiq-mmal/mmal-encodings.h
-index feca1c3d8878..1a9bbd371026 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-encodings.h
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-encodings.h
@@ -90,6 +90,12 @@
/* 16 bit per pixel Bayer formats. */
#define MMAL_ENCODING_BAYER_SBGGR16 MMAL_FOURCC('B', 'G', '1', '6')
#define MMAL_ENCODING_BAYER_SGBRG16 MMAL_FOURCC('G', 'B', '1', '6')
---
-2.54.0
-
drivers/staging/vc04_services/vchiq-mmal/mmal-encodings.h | 7 +++++++
1 file changed, 7 insertions(+)
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-encodings.h b/drivers/staging/vc04_services/vchiq-mmal/mmal-encodings.h
-index 1a9bbd371026..6c19040b05df 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-encodings.h
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-encodings.h
@@ -102,6 +102,13 @@
/** An EGL image handle
*/
#define MMAL_ENCODING_EGL_IMAGE MMAL_FOURCC('E', 'G', 'L', 'I')
---
-2.54.0
-
.../vc04_services/vchiq-mmal/mmal-vchiq.h | 1 +
4 files changed, 71 insertions(+), 3 deletions(-)
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/Kconfig b/drivers/staging/vc04_services/vchiq-mmal/Kconfig
-index c99525a0bb45..5df9198cdab1 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/Kconfig
+++ b/drivers/staging/vc04_services/vchiq-mmal/Kconfig
@@ -1,6 +1,7 @@
help
Enables the MMAL API over VCHIQ interface as used for the
majority of the multimedia services on VideoCore.
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-common.h b/drivers/staging/vc04_services/vchiq-mmal/mmal-common.h
-index 0443be8198ea..a643cad54b12 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-common.h
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-common.h
@@ -50,6 +50,10 @@ struct mmal_buffer {
u32 cmd; /* MMAL command. 0=data. */
unsigned long length;
u32 mmal_flags;
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
-index 465b00b33cff..194f1f1341e3 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
@@ -28,9 +28,12 @@
/*
* maximum number of components supported.
* This matches the maximum permitted by default on the VPU
-@@ -417,8 +420,13 @@ buffer_from_host(struct vchiq_mmal_instance *instance,
+@@ -417,8 +420,13 @@ buffer_from_host(struct vchiq_mmal_insta
/* buffer header */
m.u.buffer_from_host.buffer_header.cmd = 0;
m.u.buffer_from_host.buffer_header.alloc_size = buf->buffer_size;
if (port->type == MMAL_PORT_TYPE_OUTPUT) {
m.u.buffer_from_host.buffer_header.length = 0;
-@@ -584,6 +592,22 @@ static void buffer_to_host_cb(struct vchiq_mmal_instance *instance,
+@@ -584,6 +592,22 @@ static void buffer_to_host_cb(struct vch
msg_context->u.bulk.status = msg->h.status;
} else if (msg->u.buffer_from_host.buffer_header.length == 0) {
/* empty buffer */
if (msg->u.buffer_from_host.buffer_header.flags &
-@@ -1530,6 +1554,9 @@ int vchiq_mmal_port_parameter_set(struct vchiq_mmal_instance *instance,
+@@ -1530,6 +1554,9 @@ int vchiq_mmal_port_parameter_set(struct
mutex_unlock(&instance->vchiq_mutex);
return ret;
}
EXPORT_SYMBOL_GPL(vchiq_mmal_port_parameter_set);
-@@ -1698,6 +1725,31 @@ int vchiq_mmal_submit_buffer(struct vchiq_mmal_instance *instance,
+@@ -1698,6 +1725,31 @@ int vchiq_mmal_submit_buffer(struct vchi
unsigned long flags = 0;
int ret;
ret = buffer_from_host(instance, port, buffer);
if (ret == -EINVAL) {
/* Port is disabled. Queue for when it is enabled. */
-@@ -1731,6 +1783,16 @@ int mmal_vchi_buffer_cleanup(struct mmal_buffer *buf)
+@@ -1731,6 +1783,16 @@ int mmal_vchi_buffer_cleanup(struct mmal
release_msg_context(msg_context);
buf->msg_context = NULL;
return 0;
}
EXPORT_SYMBOL_GPL(mmal_vchi_buffer_cleanup);
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.h b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.h
-index 190a0f42bd6b..ae9e26a3b05b 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.h
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.h
-@@ -49,6 +49,7 @@ typedef void (*vchiq_mmal_buffer_cb)(struct vchiq_mmal_instance *instance,
+@@ -49,6 +49,7 @@ typedef void (*vchiq_mmal_buffer_cb)(str
struct vchiq_mmal_port {
bool enabled;
u32 handle;
u32 type; /* port type, cached to use on port info set */
u32 index; /* port index, cached to use on port info set */
---
-2.54.0
-
create mode 100644 drivers/staging/vc04_services/bcm2835-codec/TODO
create mode 100644 drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c
-diff --git a/drivers/staging/vc04_services/Kconfig b/drivers/staging/vc04_services/Kconfig
-index 833d9bebde77..52841cae6b2d 100644
--- a/drivers/staging/vc04_services/Kconfig
+++ b/drivers/staging/vc04_services/Kconfig
-@@ -51,6 +51,7 @@ source "drivers/staging/vc04_services/bcm2835-audio/Kconfig"
+@@ -51,6 +51,7 @@ source "drivers/staging/vc04_services/bc
source "drivers/staging/vc04_services/bcm2835-camera/Kconfig"
source "drivers/staging/vc04_services/vc-sm-cma/Kconfig"
source "drivers/staging/vc04_services/vchiq-mmal/Kconfig"
-diff --git a/drivers/staging/vc04_services/Makefile b/drivers/staging/vc04_services/Makefile
-index 2a92554e7d57..4633d09938cd 100644
--- a/drivers/staging/vc04_services/Makefile
+++ b/drivers/staging/vc04_services/Makefile
-@@ -15,4 +15,5 @@ obj-$(CONFIG_SND_BCM2835) += bcm2835-audio/
+@@ -15,4 +15,5 @@ obj-$(CONFIG_SND_BCM2835) += bcm2835-au
obj-$(CONFIG_VIDEO_BCM2835) += bcm2835-camera/
obj-$(CONFIG_BCM2835_VCHIQ_MMAL) += vchiq-mmal/
obj-$(CONFIG_BCM_VC_SM_CMA) += vc-sm-cma/
+obj-$(CONFIG_VIDEO_CODEC_BCM2835) += bcm2835-codec/
-diff --git a/drivers/staging/vc04_services/bcm2835-codec/Kconfig b/drivers/staging/vc04_services/bcm2835-codec/Kconfig
-new file mode 100644
-index 000000000000..761c8ba4b40f
--- /dev/null
+++ b/drivers/staging/vc04_services/bcm2835-codec/Kconfig
@@ -0,0 +1,11 @@
+ Say Y here to enable the V4L2 video codecs for
+ Broadcom BCM2835 SoC. This operates over the VCHIQ interface
+ to a service running on VideoCore.
-diff --git a/drivers/staging/vc04_services/bcm2835-codec/Makefile b/drivers/staging/vc04_services/bcm2835-codec/Makefile
-new file mode 100644
-index 000000000000..b2fe5ebb4a5a
--- /dev/null
+++ b/drivers/staging/vc04_services/bcm2835-codec/Makefile
@@ -0,0 +1,7 @@
+
+ccflags-y += \
+ -D__VCCOREVER__=0x04000000
-diff --git a/drivers/staging/vc04_services/bcm2835-codec/TODO b/drivers/staging/vc04_services/bcm2835-codec/TODO
-new file mode 100644
-index 000000000000..bc27a04ee9bd
--- /dev/null
+++ b/drivers/staging/vc04_services/bcm2835-codec/TODO
@@ -0,0 +1 @@
+No issues. Depends on VCHIQ which is in staging.
\ No newline at end of file
-diff --git a/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c b/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c
-new file mode 100644
-index 000000000000..903cb88d810c
--- /dev/null
+++ b/drivers/staging/vc04_services/bcm2835-codec/bcm2835-v4l2-codec.c
@@ -0,0 +1,4026 @@
+MODULE_LICENSE("GPL");
+MODULE_VERSION("0.0.1");
+MODULE_ALIAS("vchiq:bcm2835-codec");
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-msg-format.h b/drivers/staging/vc04_services/vchiq-mmal/mmal-msg-format.h
-index 5569876d8c7d..e8f5ca85a7c4 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-msg-format.h
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-msg-format.h
@@ -53,6 +53,16 @@ union mmal_es_specific_format {
/* Definition of an elementary stream format (MMAL_ES_FORMAT_T) */
struct mmal_es_format_local {
u32 type; /* enum mmal_es_type */
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h b/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h
-index 3ede6be20633..5e3ce586945e 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h
@@ -223,6 +223,8 @@ enum mmal_parameter_camera_type {
};
/** Valid mirror modes */
---
-2.54.0
-
1 file changed, 347 insertions(+)
create mode 100644 include/uapi/linux/bcm2835-isp.h
-diff --git a/include/uapi/linux/bcm2835-isp.h b/include/uapi/linux/bcm2835-isp.h
-new file mode 100644
-index 000000000000..c50e3ca81565
--- /dev/null
+++ b/include/uapi/linux/bcm2835-isp.h
@@ -0,0 +1,347 @@
+};
+
+#endif /* __BCM2835_ISP_H_ */
---
-2.54.0
-
create mode 100644 drivers/staging/vc04_services/bcm2835-isp/bcm2835-isp-fmts.h
create mode 100644 drivers/staging/vc04_services/bcm2835-isp/bcm2835-v4l2-isp.c
-diff --git a/MAINTAINERS b/MAINTAINERS
-index d5ee2cc41752..0fc7155157d3 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -4856,6 +4856,15 @@ S: Maintained
BROADCOM BCM2711 HEVC DECODER
M: Raspberry Pi Kernel Maintenance <kernel-list@raspberrypi.com>
L: linux-media@vger.kernel.org
-diff --git a/drivers/staging/vc04_services/Kconfig b/drivers/staging/vc04_services/Kconfig
-index 52841cae6b2d..d3e43aa8a9e2 100644
--- a/drivers/staging/vc04_services/Kconfig
+++ b/drivers/staging/vc04_services/Kconfig
-@@ -52,6 +52,7 @@ source "drivers/staging/vc04_services/bcm2835-camera/Kconfig"
+@@ -52,6 +52,7 @@ source "drivers/staging/vc04_services/bc
source "drivers/staging/vc04_services/vc-sm-cma/Kconfig"
source "drivers/staging/vc04_services/bcm2835-codec/Kconfig"
source "drivers/staging/vc04_services/vchiq-mmal/Kconfig"
-diff --git a/drivers/staging/vc04_services/Makefile b/drivers/staging/vc04_services/Makefile
-index 4633d09938cd..49baf05fcf1e 100644
--- a/drivers/staging/vc04_services/Makefile
+++ b/drivers/staging/vc04_services/Makefile
-@@ -16,4 +16,5 @@ obj-$(CONFIG_VIDEO_BCM2835) += bcm2835-camera/
+@@ -16,4 +16,5 @@ obj-$(CONFIG_VIDEO_BCM2835) += bcm2835-
obj-$(CONFIG_BCM2835_VCHIQ_MMAL) += vchiq-mmal/
obj-$(CONFIG_BCM_VC_SM_CMA) += vc-sm-cma/
obj-$(CONFIG_VIDEO_CODEC_BCM2835) += bcm2835-codec/
+obj-$(CONFIG_VIDEO_ISP_BCM2835) += bcm2835-isp/
-diff --git a/drivers/staging/vc04_services/bcm2835-isp/Kconfig b/drivers/staging/vc04_services/bcm2835-isp/Kconfig
-new file mode 100644
-index 000000000000..6222799ebe16
--- /dev/null
+++ b/drivers/staging/vc04_services/bcm2835-isp/Kconfig
@@ -0,0 +1,14 @@
+
+ To compile this driver as a module, choose M here: the module
+ will be called bcm2835-isp.
-diff --git a/drivers/staging/vc04_services/bcm2835-isp/Makefile b/drivers/staging/vc04_services/bcm2835-isp/Makefile
-new file mode 100644
-index 000000000000..1994f12db3fc
--- /dev/null
+++ b/drivers/staging/vc04_services/bcm2835-isp/Makefile
@@ -0,0 +1,7 @@
+
+ccflags-y += \
+ -D__VCCOREVER__=0x04000000
-diff --git a/drivers/staging/vc04_services/bcm2835-isp/bcm2835-isp-ctrls.h b/drivers/staging/vc04_services/bcm2835-isp/bcm2835-isp-ctrls.h
-new file mode 100644
-index 000000000000..172605718cdf
--- /dev/null
+++ b/drivers/staging/vc04_services/bcm2835-isp/bcm2835-isp-ctrls.h
@@ -0,0 +1,72 @@
+};
+
+#endif
-diff --git a/drivers/staging/vc04_services/bcm2835-isp/bcm2835-isp-fmts.h b/drivers/staging/vc04_services/bcm2835-isp/bcm2835-isp-fmts.h
-new file mode 100644
-index 000000000000..5c99d453f092
--- /dev/null
+++ b/drivers/staging/vc04_services/bcm2835-isp/bcm2835-isp-fmts.h
@@ -0,0 +1,558 @@
+};
+
+#endif
-diff --git a/drivers/staging/vc04_services/bcm2835-isp/bcm2835-v4l2-isp.c b/drivers/staging/vc04_services/bcm2835-isp/bcm2835-v4l2-isp.c
-new file mode 100644
-index 000000000000..4c3fe6aa4c55
--- /dev/null
+++ b/drivers/staging/vc04_services/bcm2835-isp/bcm2835-v4l2-isp.c
@@ -0,0 +1,1839 @@
+MODULE_LICENSE("GPL");
+MODULE_VERSION("1.0");
+MODULE_ALIAS("vchiq:bcm2835-isp");
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-encodings.h b/drivers/staging/vc04_services/vchiq-mmal/mmal-encodings.h
-index 6c19040b05df..bd0ddccfbbff 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-encodings.h
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-encodings.h
@@ -113,6 +113,10 @@
/* }@ */
/** \name Pre-defined audio encodings */
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h b/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h
-index 5e3ce586945e..722af059ff9d 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h
@@ -223,6 +223,64 @@ enum mmal_parameter_camera_type {
};
#endif
---
-2.54.0
-
3 files changed, 1222 insertions(+)
create mode 100644 drivers/gpio/gpio-fsm.c
-diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
-index 8ce7a57de297..c3fadbf139ab 100644
--- a/drivers/gpio/Kconfig
+++ b/drivers/gpio/Kconfig
@@ -1427,6 +1427,15 @@ config GPIO_ELKHARTLAKE
config GPIO_JANZ_TTL
tristate "Janz VMOD-TTL Digital IO Module"
depends on MFD_JANZ_CMODIO
-diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile
-index 75dbe47f4a32..7c5d31608ceb 100644
--- a/drivers/gpio/Makefile
+++ b/drivers/gpio/Makefile
-@@ -70,6 +70,7 @@ obj-$(CONFIG_GPIO_EN7523) += gpio-en7523.o
+@@ -70,6 +70,7 @@ obj-$(CONFIG_GPIO_EN7523) += gpio-en752
obj-$(CONFIG_GPIO_EP93XX) += gpio-ep93xx.o
obj-$(CONFIG_GPIO_EXAR) += gpio-exar.o
obj-$(CONFIG_GPIO_F7188X) += gpio-f7188x.o
obj-$(CONFIG_GPIO_FTGPIO010) += gpio-ftgpio010.o
obj-$(CONFIG_GPIO_FXL6408) += gpio-fxl6408.o
obj-$(CONFIG_GPIO_GE_FPGA) += gpio-ge.o
-diff --git a/drivers/gpio/gpio-fsm.c b/drivers/gpio/gpio-fsm.c
-new file mode 100644
-index 000000000000..baef9a5dde45
--- /dev/null
+++ b/drivers/gpio/gpio-fsm.c
@@ -0,0 +1,1212 @@
+MODULE_AUTHOR("Phil Elwell <phil@raspberrypi.com>");
+MODULE_DESCRIPTION("GPIO FSM driver");
+MODULE_ALIAS("platform:gpio-fsm");
---
-2.54.0
-
drivers/watchdog/bcm2835_wdt.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
-diff --git a/drivers/watchdog/bcm2835_wdt.c b/drivers/watchdog/bcm2835_wdt.c
-index b2960f67d8a8..1c082494e948 100644
--- a/drivers/watchdog/bcm2835_wdt.c
+++ b/drivers/watchdog/bcm2835_wdt.c
-@@ -127,10 +127,12 @@ static int bcm2835_restart(struct watchdog_device *wdog,
+@@ -127,10 +127,12 @@ static int bcm2835_restart(struct watchd
{
struct bcm2835_wdt *wdt = watchdog_get_drvdata(wdog);
partition = val;
__bcm2835_restart(wdt, partition);
---
-2.54.0
-
drivers/firmware/raspberrypi.c | 25 +++++++++++++++++++++++--
1 file changed, 23 insertions(+), 2 deletions(-)
-diff --git a/drivers/firmware/raspberrypi.c b/drivers/firmware/raspberrypi.c
-index be4d1d45a993..2498acd41acd 100644
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
-@@ -189,6 +189,7 @@ static int rpi_firmware_notify_reboot(struct notifier_block *nb,
+@@ -189,6 +189,7 @@ static int rpi_firmware_notify_reboot(st
{
struct rpi_firmware *fw;
struct platform_device *pdev = g_pdev;
if (!pdev)
return 0;
-@@ -197,8 +198,28 @@ static int rpi_firmware_notify_reboot(struct notifier_block *nb,
+@@ -197,8 +198,28 @@ static int rpi_firmware_notify_reboot(st
if (!fw)
return 0;
return 0;
}
---
-2.54.0
-
drivers/input/touchscreen/edt-ft5x06.c | 124 ++++++++++++++++++++++---
1 file changed, 109 insertions(+), 15 deletions(-)
-diff --git a/drivers/input/touchscreen/edt-ft5x06.c b/drivers/input/touchscreen/edt-ft5x06.c
-index bf498bd4dea9..333813f38c8a 100644
--- a/drivers/input/touchscreen/edt-ft5x06.c
+++ b/drivers/input/touchscreen/edt-ft5x06.c
@@ -69,6 +69,7 @@
};
struct edt_i2c_chip_data {
-@@ -302,17 +312,49 @@ static irqreturn_t edt_ft5x06_ts_isr(int irq, void *dev_id)
+@@ -302,17 +312,49 @@ static irqreturn_t edt_ft5x06_ts_isr(int
u8 rdbuf[63];
int i, type, x, y, id;
int error;
u8 *buf = &rdbuf[i * tsdata->point_len + tsdata->tdata_offset];
type = buf[0] >> 6;
-@@ -334,11 +376,26 @@ static irqreturn_t edt_ft5x06_ts_isr(int irq, void *dev_id)
+@@ -334,10 +376,25 @@ static irqreturn_t edt_ft5x06_ts_isr(int
input_mt_slot(tsdata->input, id);
if (input_mt_report_slot_state(tsdata->input, MT_TOOL_FINGER,
+ } else {
+ known_ids &= ~BIT(id);
+ }
- }
-
++ }
++
+ /* One issue with the device is the TOUCH_UP message is not always
+ * returned. Instead track which ids we know about and report when they
+ * are no longer updated
+ for_each_set_bit_from(b, &released_ids, tsdata->max_support_points) {
+ input_mt_slot(tsdata->input, b);
+ input_mt_report_slot_inactive(tsdata->input);
-+ }
+ }
+ tsdata->known_ids = active_ids;
-+
+
input_mt_report_pointer_emulation(tsdata->input, true);
input_sync(tsdata->input);
-
-@@ -346,6 +403,22 @@ static irqreturn_t edt_ft5x06_ts_isr(int irq, void *dev_id)
+@@ -346,6 +403,22 @@ out:
return IRQ_HANDLED;
}
struct edt_ft5x06_attribute {
struct device_attribute dattr;
size_t field_offset;
-@@ -858,6 +931,9 @@ static int edt_ft5x06_ts_identify(struct i2c_client *client,
+@@ -861,6 +934,9 @@ static int edt_ft5x06_ts_identify(struct
char *model_name = tsdata->name;
char *fw_version = tsdata->fw_version;
/* see what we find if we assume it is a M06 *
* if we get less than EDT_NAME_LEN, we don't want
* to have garbage in there
-@@ -1046,20 +1122,23 @@ static void edt_ft5x06_ts_get_parameters(struct edt_ft5x06_ts_data *tsdata)
+@@ -1049,20 +1125,23 @@ static void edt_ft5x06_ts_get_parameters
static void edt_ft5x06_ts_set_tdata_parameters(struct edt_ft5x06_ts_data *tsdata)
{
int crclen;
tsdata->tdata_offset + crclen;
}
-@@ -1254,7 +1333,7 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client)
+@@ -1257,7 +1336,7 @@ static int edt_ft5x06_ts_probe(struct i2
if (tsdata->reset_gpio) {
usleep_range(5000, 6000);
gpiod_set_value_cansleep(tsdata->reset_gpio, 0);
}
input = devm_input_allocate_device(&client->dev);
-@@ -1328,17 +1407,28 @@ static int edt_ft5x06_ts_probe(struct i2c_client *client)
+@@ -1331,17 +1410,28 @@ static int edt_ft5x06_ts_probe(struct i2
return error;
}
- if (irq_flags == IRQF_TRIGGER_NONE)
- irq_flags = IRQF_TRIGGER_FALLING;
- irq_flags |= IRQF_ONESHOT;
-+ if (client->irq) {
-+ irq_flags = irq_get_trigger_type(client->irq);
-+ if (irq_flags == IRQF_TRIGGER_NONE)
-+ irq_flags = IRQF_TRIGGER_FALLING;
-+ irq_flags |= IRQF_ONESHOT;
-
+-
- error = devm_request_threaded_irq(&client->dev, client->irq,
- NULL, edt_ft5x06_ts_isr, irq_flags,
- client->name, tsdata);
- if (error) {
- dev_err(&client->dev, "Unable to request touchscreen IRQ.\n");
- return error;
++ if (client->irq) {
++ irq_flags = irq_get_trigger_type(client->irq);
++ if (irq_flags == IRQF_TRIGGER_NONE)
++ irq_flags = IRQF_TRIGGER_FALLING;
++ irq_flags |= IRQF_ONESHOT;
++
+ error = devm_request_threaded_irq(&client->dev, client->irq,
+ NULL, edt_ft5x06_ts_isr,
+ irq_flags, client->name,
}
error = input_register_device(input);
-@@ -1360,6 +1450,10 @@ static void edt_ft5x06_ts_remove(struct i2c_client *client)
+@@ -1363,6 +1453,10 @@ static void edt_ft5x06_ts_remove(struct
{
struct edt_ft5x06_ts_data *tsdata = i2c_get_clientdata(client);
edt_ft5x06_ts_teardown_debugfs(tsdata);
}
---
-2.54.0
-
Documentation/devicetree/bindings/display/brcm,bcm2835-dsi0.yaml | 1 +
1 file changed, 1 insertion(+)
-diff --git a/Documentation/devicetree/bindings/display/brcm,bcm2835-dsi0.yaml b/Documentation/devicetree/bindings/display/brcm,bcm2835-dsi0.yaml
-index c8b2459d64f6..af638b224619 100644
--- a/Documentation/devicetree/bindings/display/brcm,bcm2835-dsi0.yaml
+++ b/Documentation/devicetree/bindings/display/brcm,bcm2835-dsi0.yaml
@@ -21,6 +21,7 @@ properties:
reg:
maxItems: 1
---
-2.54.0
-
.../vc04_services/vchiq-mmal/mmal-encodings.h | 22 +++++++++++++++++++
1 file changed, 22 insertions(+)
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-encodings.h b/drivers/staging/vc04_services/vchiq-mmal/mmal-encodings.h
-index bd0ddccfbbff..d8d7ec5b962c 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-encodings.h
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-encodings.h
@@ -102,12 +102,34 @@
/** An EGL image handle
*/
---
-2.54.0
-
drivers/spi/spi-bcm2835.c | 10 ++++++++++
1 file changed, 10 insertions(+)
-diff --git a/drivers/spi/spi-bcm2835.c b/drivers/spi/spi-bcm2835.c
-index 192cc5ef65fb..811aa1e9a496 100644
--- a/drivers/spi/spi-bcm2835.c
+++ b/drivers/spi/spi-bcm2835.c
-@@ -1059,6 +1059,16 @@ static int bcm2835_spi_transfer_one(struct spi_controller *ctlr,
+@@ -1059,6 +1059,16 @@ static int bcm2835_spi_transfer_one(stru
unsigned long hz_per_byte, byte_limit;
u32 cs = target->prepare_cs;
/* set clock */
spi_hz = tfr->speed_hz;
---
-2.54.0
-
arch/arm64/crypto/aes-neonbs-glue.c | 5 -----
3 files changed, 13 insertions(+), 7 deletions(-)
-diff --git a/arch/arm64/crypto/aes-cipher-glue.c b/arch/arm64/crypto/aes-cipher-glue.c
-index 4ec55e568941..bfaa0f1d3cc6 100644
--- a/arch/arm64/crypto/aes-cipher-glue.c
+++ b/arch/arm64/crypto/aes-cipher-glue.c
@@ -9,6 +9,17 @@
asmlinkage void __aes_arm64_encrypt(u32 *rk, u8 *out, const u8 *in, int rounds);
asmlinkage void __aes_arm64_decrypt(u32 *rk, u8 *out, const u8 *in, int rounds);
-diff --git a/arch/arm64/crypto/aes-glue.c b/arch/arm64/crypto/aes-glue.c
-index 5e207ff34482..9bf0efec087a 100644
--- a/arch/arm64/crypto/aes-glue.c
+++ b/arch/arm64/crypto/aes-glue.c
-@@ -58,18 +58,18 @@ MODULE_DESCRIPTION("AES-ECB/CBC/CTR/XTS/XCTR using ARMv8 Crypto Extensions");
+@@ -58,18 +58,18 @@ MODULE_DESCRIPTION("AES-ECB/CBC/CTR/XTS/
#define aes_mac_update neon_aes_mac_update
MODULE_DESCRIPTION("AES-ECB/CBC/CTR/XTS/XCTR using ARMv8 NEON");
#endif
MODULE_AUTHOR("Ard Biesheuvel <ard.biesheuvel@linaro.org>");
MODULE_LICENSE("GPL v2");
-diff --git a/arch/arm64/crypto/aes-neonbs-glue.c b/arch/arm64/crypto/aes-neonbs-glue.c
-index c4a623e86593..df8ee1444fc4 100644
--- a/arch/arm64/crypto/aes-neonbs-glue.c
+++ b/arch/arm64/crypto/aes-neonbs-glue.c
-@@ -19,11 +19,6 @@ MODULE_AUTHOR("Ard Biesheuvel <ard.biesheuvel@linaro.org>");
+@@ -19,11 +19,6 @@ MODULE_AUTHOR("Ard Biesheuvel <ard.biesh
MODULE_DESCRIPTION("Bit sliced AES using NEON instructions");
MODULE_LICENSE("GPL v2");
asmlinkage void aesbs_convert_key(u8 out[], u32 const rk[], int rounds);
asmlinkage void aesbs_ecb_encrypt(u8 out[], u8 const in[], u8 const rk[],
---
-2.54.0
-
drivers/media/i2c/ov5647.c | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
-diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c
-index 5fb10e02ba6e..bceca8f8d35d 100644
--- a/drivers/media/i2c/ov5647.c
+++ b/drivers/media/i2c/ov5647.c
-@@ -601,7 +601,13 @@ static int ov5647_write16(struct v4l2_subdev *sd, u16 reg, u16 val)
+@@ -601,7 +601,13 @@ static int ov5647_write16(struct v4l2_su
int ret;
ret = i2c_master_send(client, data, 4);
dev_dbg(&client->dev, "%s: i2c write error, reg: %x\n",
__func__, reg);
return ret;
-@@ -617,10 +623,17 @@ static int ov5647_write(struct v4l2_subdev *sd, u16 reg, u8 val)
+@@ -617,10 +623,17 @@ static int ov5647_write(struct v4l2_subd
int ret;
ret = i2c_master_send(client, data, 3);
}
return 0;
---
-2.54.0
-
drivers/media/i2c/ov5647.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
-diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c
-index bceca8f8d35d..e4fd0531c41b 100644
--- a/drivers/media/i2c/ov5647.c
+++ b/drivers/media/i2c/ov5647.c
-@@ -1297,10 +1297,11 @@ static const struct v4l2_ctrl_ops ov5647_ctrl_ops = {
+@@ -1297,10 +1297,11 @@ static const struct v4l2_ctrl_ops ov5647
.s_ctrl = ov5647_s_ctrl,
};
v4l2_ctrl_handler_init(&sensor->ctrls, 9);
-@@ -1353,6 +1354,11 @@ static int ov5647_init_controls(struct ov5647 *sensor)
+@@ -1353,6 +1354,11 @@ static int ov5647_init_controls(struct o
ARRAY_SIZE(ov5647_test_pattern_menu) - 1,
0, 0, ov5647_test_pattern_menu);
if (sensor->ctrls.error)
goto handler_free;
-@@ -1440,7 +1446,7 @@ static int ov5647_probe(struct i2c_client *client)
+@@ -1440,7 +1446,7 @@ static int ov5647_probe(struct i2c_clien
sd->internal_ops = &ov5647_subdev_internal_ops;
sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE | V4L2_SUBDEV_FL_HAS_EVENTS;
if (ret)
goto mutex_destroy;
---
-2.54.0
-
drivers/media/i2c/ov5647.c | 2 ++
1 file changed, 2 insertions(+)
-diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c
-index e4fd0531c41b..35c788fbeae8 100644
--- a/drivers/media/i2c/ov5647.c
+++ b/drivers/media/i2c/ov5647.c
-@@ -886,6 +886,8 @@ static const struct v4l2_subdev_core_ops ov5647_subdev_core_ops = {
+@@ -886,6 +886,8 @@ static const struct v4l2_subdev_core_ops
.g_register = ov5647_sensor_get_register,
.s_register = ov5647_sensor_set_register,
#endif
};
static const struct v4l2_rect *
---
-2.54.0
-
drivers/media/i2c/ov5647.c | 76 +++++++++++++++++++++++++++++++++++---
1 file changed, 70 insertions(+), 6 deletions(-)
-diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c
-index 35c788fbeae8..68db3845a526 100644
--- a/drivers/media/i2c/ov5647.c
+++ b/drivers/media/i2c/ov5647.c
@@ -54,6 +54,8 @@
};
static inline struct ov5647 *to_sensor(struct v4l2_subdev *sd)
-@@ -150,7 +154,7 @@ static struct regval_list ov5647_2592x1944_10bpp[] = {
+@@ -150,7 +154,7 @@ static struct regval_list ov5647_2592x19
{0x3036, 0x69},
{0x303c, 0x11},
{0x3106, 0xf5},
{0x3820, 0x00},
{0x3827, 0xec},
{0x370c, 0x03},
-@@ -239,7 +243,7 @@ static struct regval_list ov5647_1080p30_10bpp[] = {
+@@ -239,7 +243,7 @@ static struct regval_list ov5647_1080p30
{0x3036, 0x62},
{0x303c, 0x11},
{0x3106, 0xf5},
{0x3820, 0x00},
{0x3827, 0xec},
{0x370c, 0x03},
-@@ -403,7 +407,7 @@ static struct regval_list ov5647_2x2binned_10bpp[] = {
+@@ -403,7 +407,7 @@ static struct regval_list ov5647_2x2binn
{0x4800, 0x24},
{0x3503, 0x03},
{0x3820, 0x41},
{0x350a, 0x00},
{0x350b, 0x10},
{0x3500, 0x00},
-@@ -419,7 +423,7 @@ static struct regval_list ov5647_640x480_10bpp[] = {
+@@ -419,7 +423,7 @@ static struct regval_list ov5647_640x480
{0x3035, 0x11},
{0x3036, 0x46},
{0x303c, 0x11},
{0x3820, 0x41},
{0x370c, 0x03},
{0x3612, 0x59},
-@@ -948,6 +952,25 @@ static const struct v4l2_subdev_video_ops ov5647_subdev_video_ops = {
+@@ -948,6 +952,25 @@ static const struct v4l2_subdev_video_op
.s_stream = ov5647_s_stream,
};
static int ov5647_enum_mbus_code(struct v4l2_subdev *sd,
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_mbus_code_enum *code)
-@@ -955,7 +978,7 @@ static int ov5647_enum_mbus_code(struct v4l2_subdev *sd,
+@@ -955,7 +978,7 @@ static int ov5647_enum_mbus_code(struct
if (code->index > 0)
return -EINVAL;
return 0;
}
-@@ -966,7 +989,7 @@ static int ov5647_enum_frame_size(struct v4l2_subdev *sd,
+@@ -966,7 +989,7 @@ static int ov5647_enum_frame_size(struct
{
const struct v4l2_mbus_framefmt *fmt;
fse->index >= ARRAY_SIZE(ov5647_modes))
return -EINVAL;
-@@ -999,6 +1022,8 @@ static int ov5647_get_pad_fmt(struct v4l2_subdev *sd,
+@@ -999,6 +1022,8 @@ static int ov5647_get_pad_fmt(struct v4l
}
*fmt = *sensor_format;
mutex_unlock(&sensor->lock);
return 0;
-@@ -1046,6 +1071,8 @@ static int ov5647_set_pad_fmt(struct v4l2_subdev *sd,
+@@ -1046,6 +1071,8 @@ static int ov5647_set_pad_fmt(struct v4l
exposure_def);
}
*fmt = mode->format;
mutex_unlock(&sensor->lock);
return 0;
-@@ -1221,6 +1248,25 @@ static int ov5647_s_exposure(struct v4l2_subdev *sd, u32 val)
+@@ -1221,6 +1248,25 @@ static int ov5647_s_exposure(struct v4l2
return ov5647_write(sd, OV5647_REG_EXP_LO, (val & 0xf) << 4);
}
static int ov5647_s_ctrl(struct v4l2_ctrl *ctrl)
{
struct ov5647 *sensor = container_of(ctrl->handler,
-@@ -1283,6 +1329,14 @@ static int ov5647_s_ctrl(struct v4l2_ctrl *ctrl)
+@@ -1283,6 +1329,14 @@ static int ov5647_s_ctrl(struct v4l2_ctr
/* Read-only, but we adjust it based on mode. */
break;
default:
dev_info(&client->dev,
"Control (id:0x%x, val:0x%x) not supported\n",
-@@ -1356,6 +1410,16 @@ static int ov5647_init_controls(struct ov5647 *sensor, struct device *dev)
+@@ -1356,6 +1410,16 @@ static int ov5647_init_controls(struct o
ARRAY_SIZE(ov5647_test_pattern_menu) - 1,
0, 0, ov5647_test_pattern_menu);
v4l2_fwnode_device_parse(dev, &props);
v4l2_ctrl_new_fwnode_properties(&sensor->ctrls, &ov5647_ctrl_ops,
---
-2.54.0
-
drivers/media/i2c/ov5647.c | 37 +++++++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)
-diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c
-index 68db3845a526..52407a33546d 100644
--- a/drivers/media/i2c/ov5647.c
+++ b/drivers/media/i2c/ov5647.c
@@ -20,6 +20,7 @@
bool clock_ncont;
struct v4l2_ctrl_handler ctrls;
const struct ov5647_mode *mode;
-@@ -794,6 +805,12 @@ static int ov5647_power_on(struct device *dev)
+@@ -794,6 +805,12 @@ static int ov5647_power_on(struct device
dev_dbg(dev, "OV5647 power on\n");
if (sensor->pwdn) {
gpiod_set_value_cansleep(sensor->pwdn, 0);
msleep(PWDN_ACTIVE_DELAY_MS);
-@@ -825,6 +842,7 @@ static int ov5647_power_on(struct device *dev)
+@@ -825,6 +842,7 @@ error_clk_disable:
clk_disable_unprepare(sensor->xclk);
error_pwdn:
gpiod_set_value_cansleep(sensor->pwdn, 1);
return ret;
}
-@@ -854,6 +872,7 @@ static int ov5647_power_off(struct device *dev)
+@@ -854,6 +872,7 @@ static int ov5647_power_off(struct devic
clk_disable_unprepare(sensor->xclk);
gpiod_set_value_cansleep(sensor->pwdn, 1);
return 0;
}
-@@ -1353,6 +1372,18 @@ static const struct v4l2_ctrl_ops ov5647_ctrl_ops = {
+@@ -1353,6 +1372,18 @@ static const struct v4l2_ctrl_ops ov5647
.s_ctrl = ov5647_s_ctrl,
};
static int ov5647_init_controls(struct ov5647 *sensor, struct device *dev)
{
struct i2c_client *client = v4l2_get_subdevdata(&sensor->sd);
-@@ -1503,6 +1534,12 @@ static int ov5647_probe(struct i2c_client *client)
+@@ -1503,6 +1534,12 @@ static int ov5647_probe(struct i2c_clien
return -EINVAL;
}
mutex_init(&sensor->lock);
sensor->mode = OV5647_DEFAULT_MODE;
---
-2.54.0
-
drivers/media/i2c/ov5647.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c
-index 52407a33546d..ee5f7cb5305e 100644
--- a/drivers/media/i2c/ov5647.c
+++ b/drivers/media/i2c/ov5647.c
-@@ -1567,7 +1567,7 @@ static int ov5647_probe(struct i2c_client *client)
+@@ -1567,7 +1567,7 @@ static int ov5647_probe(struct i2c_clien
if (ret < 0)
goto power_off;
if (ret < 0)
goto power_off;
---
-2.54.0
-
drivers/media/i2c/ov5647.c | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
-diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c
-index ee5f7cb5305e..7d2b26337d88 100644
--- a/drivers/media/i2c/ov5647.c
+++ b/drivers/media/i2c/ov5647.c
@@ -53,6 +53,8 @@
#define OV5647_EXPOSURE_MIN 4
#define OV5647_EXPOSURE_STEP 1
#define OV5647_EXPOSURE_DEFAULT 1000
-@@ -187,8 +191,6 @@ static struct regval_list ov5647_2592x1944_10bpp[] = {
+@@ -187,8 +191,6 @@ static struct regval_list ov5647_2592x19
{0x3a19, 0xf8},
{0x3c01, 0x80},
{0x3b07, 0x0c},
{0x3814, 0x11},
{0x3815, 0x11},
{0x3708, 0x64},
-@@ -276,8 +278,6 @@ static struct regval_list ov5647_1080p30_10bpp[] = {
+@@ -276,8 +278,6 @@ static struct regval_list ov5647_1080p30
{0x3a19, 0xf8},
{0x3c01, 0x80},
{0x3b07, 0x0c},
{0x3814, 0x11},
{0x3815, 0x11},
{0x3708, 0x64},
-@@ -375,8 +375,6 @@ static struct regval_list ov5647_2x2binned_10bpp[] = {
+@@ -375,8 +375,6 @@ static struct regval_list ov5647_2x2binn
{0x3809, 0x10},
{0x380a, 0x03},
{0x380b, 0xcc},
{0x3811, 0x0c},
{0x3813, 0x06},
{0x3814, 0x31},
-@@ -450,8 +448,6 @@ static struct regval_list ov5647_640x480_10bpp[] = {
+@@ -450,8 +448,6 @@ static struct regval_list ov5647_640x480
{0x3a19, 0xf8},
{0x3c01, 0x80},
{0x3b07, 0x0c},
{0x3814, 0x35},
{0x3815, 0x35},
{0x3708, 0x64},
-@@ -1073,7 +1069,8 @@ static int ov5647_set_pad_fmt(struct v4l2_subdev *sd,
+@@ -1073,7 +1069,8 @@ static int ov5647_set_pad_fmt(struct v4l
mode->pixel_rate, 1, mode->pixel_rate);
hblank = mode->hts - mode->format.width;
hblank);
vblank = mode->vts - mode->format.height;
-@@ -1337,6 +1334,10 @@ static int ov5647_s_ctrl(struct v4l2_ctrl *ctrl)
+@@ -1337,6 +1334,10 @@ static int ov5647_s_ctrl(struct v4l2_ctr
ret = ov5647_write16(sd, OV5647_REG_VTS_HI,
sensor->mode->format.height + ctrl->val);
break;
case V4L2_CID_TEST_PATTERN:
ret = ov5647_write(sd, OV5647_REG_ISPCTRL3D,
ov5647_test_pattern_val[ctrl->val]);
-@@ -1344,7 +1345,6 @@ static int ov5647_s_ctrl(struct v4l2_ctrl *ctrl)
+@@ -1344,7 +1345,6 @@ static int ov5647_s_ctrl(struct v4l2_ctr
/* Read-only, but we adjust it based on mode. */
case V4L2_CID_PIXEL_RATE:
/* Read-only, but we adjust it based on mode. */
break;
-@@ -1423,10 +1423,11 @@ static int ov5647_init_controls(struct ov5647 *sensor, struct device *dev)
+@@ -1423,10 +1423,11 @@ static int ov5647_init_controls(struct o
sensor->mode->pixel_rate, 1,
sensor->mode->pixel_rate);
hblank);
sensor->vblank = v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops,
-@@ -1460,7 +1461,6 @@ static int ov5647_init_controls(struct ov5647 *sensor, struct device *dev)
+@@ -1460,7 +1461,6 @@ static int ov5647_init_controls(struct o
goto handler_free;
sensor->pixel_rate->flags |= V4L2_CTRL_FLAG_READ_ONLY;
sensor->sd.ctrl_handler = &sensor->ctrls;
return 0;
---
-2.54.0
-
drivers/media/i2c/ov5647.c | 33 ++++++++++++++-------------------
1 file changed, 14 insertions(+), 19 deletions(-)
-diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c
-index 7d2b26337d88..baef171b3e77 100644
--- a/drivers/media/i2c/ov5647.c
+++ b/drivers/media/i2c/ov5647.c
-@@ -343,6 +343,8 @@ static struct regval_list ov5647_2x2binned_10bpp[] = {
+@@ -343,6 +343,8 @@ static struct regval_list ov5647_2x2binn
{0x3036, 0x62},
{0x303c, 0x11},
{0x3106, 0xf5},
{0x3827, 0xec},
{0x370c, 0x03},
{0x3612, 0x59},
-@@ -415,8 +417,6 @@ static struct regval_list ov5647_2x2binned_10bpp[] = {
+@@ -415,8 +417,6 @@ static struct regval_list ov5647_2x2binn
{0x4837, 0x16},
{0x4800, 0x24},
{0x3503, 0x03},
{0x350a, 0x00},
{0x350b, 0x10},
{0x3500, 0x00},
-@@ -429,20 +429,27 @@ static struct regval_list ov5647_2x2binned_10bpp[] = {
+@@ -429,20 +429,27 @@ static struct regval_list ov5647_2x2binn
static struct regval_list ov5647_640x480_10bpp[] = {
{0x0100, 0x00},
{0x0103, 0x01},
{0x301d, 0xf0},
{0x3a18, 0x00},
{0x3a19, 0xf8},
-@@ -468,6 +475,7 @@ static struct regval_list ov5647_640x480_10bpp[] = {
+@@ -468,6 +475,7 @@ static struct regval_list ov5647_640x480
{0x3632, 0xe2},
{0x3633, 0x23},
{0x3634, 0x44},
{0x3620, 0x64},
{0x3621, 0xe0},
{0x3600, 0x37},
-@@ -496,19 +504,6 @@ static struct regval_list ov5647_640x480_10bpp[] = {
+@@ -496,19 +504,6 @@ static struct regval_list ov5647_640x480
{0x4001, 0x02},
{0x4004, 0x02},
{0x4000, 0x09},
{0x4800, 0x34},
{0x3503, 0x03},
{0x0100, 0x01},
---
-2.54.0
-
drivers/media/i2c/ov5647.c | 243 ++++++++-----------------------------
1 file changed, 50 insertions(+), 193 deletions(-)
-diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c
-index baef171b3e77..e295e3c380ea 100644
--- a/drivers/media/i2c/ov5647.c
+++ b/drivers/media/i2c/ov5647.c
-@@ -161,22 +161,16 @@ static const struct regval_list sensor_oe_enable_regs[] = {
+@@ -161,22 +161,16 @@ static const struct regval_list sensor_o
{0x3002, 0xe4},
};
{0x5003, 0x08},
{0x5a00, 0x08},
{0x3000, 0x00},
-@@ -191,24 +185,6 @@ static struct regval_list ov5647_2592x1944_10bpp[] = {
+@@ -191,24 +185,6 @@ static struct regval_list ov5647_2592x19
{0x3a19, 0xf8},
{0x3c01, 0x80},
{0x3b07, 0x0c},
{0x3630, 0x2e},
{0x3632, 0xe2},
{0x3633, 0x23},
-@@ -228,11 +204,6 @@ static struct regval_list ov5647_2592x1944_10bpp[] = {
+@@ -228,11 +204,6 @@ static struct regval_list ov5647_2592x19
{0x3f06, 0x10},
{0x3f01, 0x0a},
{0x3a08, 0x01},
{0x3a0f, 0x58},
{0x3a10, 0x50},
{0x3a1b, 0x58},
-@@ -240,52 +211,57 @@ static struct regval_list ov5647_2592x1944_10bpp[] = {
+@@ -240,52 +211,57 @@ static struct regval_list ov5647_2592x19
{0x3a11, 0x60},
{0x3a1f, 0x28},
{0x4001, 0x02},
{0x3800, 0x01},
{0x3801, 0x5c},
{0x3802, 0x01},
-@@ -294,77 +270,30 @@ static struct regval_list ov5647_1080p30_10bpp[] = {
+@@ -294,77 +270,30 @@ static struct regval_list ov5647_1080p30
{0x3805, 0xe3},
{0x3806, 0x05},
{0x3807, 0xf1},
{0x3800, 0x00},
{0x3801, 0x00},
{0x3802, 0x00},
-@@ -381,42 +310,14 @@ static struct regval_list ov5647_2x2binned_10bpp[] = {
+@@ -381,42 +310,14 @@ static struct regval_list ov5647_2x2binn
{0x3813, 0x06},
{0x3814, 0x31},
{0x3815, 0x31},
{0x350a, 0x00},
{0x350b, 0x10},
{0x3500, 0x00},
-@@ -427,42 +328,15 @@ static struct regval_list ov5647_2x2binned_10bpp[] = {
+@@ -427,42 +328,15 @@ static struct regval_list ov5647_2x2binn
};
static struct regval_list ov5647_640x480_10bpp[] = {
{0x3800, 0x00},
{0x3801, 0x10},
{0x3802, 0x00},
-@@ -471,41 +345,17 @@ static struct regval_list ov5647_640x480_10bpp[] = {
+@@ -471,41 +345,17 @@ static struct regval_list ov5647_640x480
{0x3805, 0x2f},
{0x3806, 0x07},
{0x3807, 0x9f},
{0x0100, 0x01},
};
-@@ -714,6 +564,13 @@ static int ov5647_set_mode(struct v4l2_subdev *sd)
+@@ -714,6 +564,13 @@ static int ov5647_set_mode(struct v4l2_s
if (ret < 0)
return ret;
ret = ov5647_write_array(sd, sensor->mode->reg_list,
sensor->mode->num_regs);
if (ret < 0) {
---
-2.54.0
-
drivers/media/i2c/ov5647.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
-diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c
-index e295e3c380ea..0e90e6ea849d 100644
--- a/drivers/media/i2c/ov5647.c
+++ b/drivers/media/i2c/ov5647.c
-@@ -252,7 +252,7 @@ static struct regval_list ov5647_2592x1944_10bpp[] = {
+@@ -252,7 +252,7 @@ static struct regval_list ov5647_2592x19
};
static struct regval_list ov5647_1080p30_10bpp[] = {
{0x3821, 0x00},
{0x3820, 0x00},
{0x3612, 0x5b},
-@@ -288,7 +288,7 @@ static struct regval_list ov5647_1080p30_10bpp[] = {
+@@ -288,7 +288,7 @@ static struct regval_list ov5647_1080p30
};
static struct regval_list ov5647_2x2binned_10bpp[] = {
{0x3821, 0x01},
{0x3820, 0x41},
{0x3612, 0x59},
-@@ -396,7 +396,7 @@ static const struct ov5647_mode ov5647_modes[] = {
+@@ -396,7 +396,7 @@ static const struct ov5647_mode ov5647_m
.width = 1928,
.height = 1080,
},
.hts = 2416,
.vts = 0x450,
.reg_list = ov5647_1080p30_10bpp,
-@@ -417,7 +417,7 @@ static const struct ov5647_mode ov5647_modes[] = {
+@@ -417,7 +417,7 @@ static const struct ov5647_mode ov5647_m
.width = 2592,
.height = 1944,
},
.hts = 1896,
.vts = 0x59b,
.reg_list = ov5647_2x2binned_10bpp,
---
-2.54.0
-
drivers/media/i2c/ov5647.c | 25 ++++++++++++++++++++++++-
1 file changed, 24 insertions(+), 1 deletion(-)
-diff --git a/drivers/media/i2c/ov5647.c b/drivers/media/i2c/ov5647.c
-index 0e90e6ea849d..08b831def18b 100644
--- a/drivers/media/i2c/ov5647.c
+++ b/drivers/media/i2c/ov5647.c
-@@ -97,6 +97,13 @@ static const char * const ov5647_supply_names[] = {
+@@ -97,6 +97,13 @@ static const char * const ov5647_supply_
#define OV5647_NUM_SUPPLIES ARRAY_SIZE(ov5647_supply_names)
};
static inline struct ov5647 *to_sensor(struct v4l2_subdev *sd)
-@@ -376,6 +385,7 @@ static const struct ov5647_mode ov5647_modes[] = {
+@@ -376,6 +385,7 @@ static const struct ov5647_mode ov5647_m
.height = 1944
},
.pixel_rate = 87500000,
.hts = 2844,
.vts = 0x7b0,
.reg_list = ov5647_2592x1944_10bpp,
-@@ -397,6 +407,7 @@ static const struct ov5647_mode ov5647_modes[] = {
+@@ -397,6 +407,7 @@ static const struct ov5647_mode ov5647_m
.height = 1080,
},
.pixel_rate = 87500000,
.hts = 2416,
.vts = 0x450,
.reg_list = ov5647_1080p30_10bpp,
-@@ -418,6 +429,7 @@ static const struct ov5647_mode ov5647_modes[] = {
+@@ -418,6 +429,7 @@ static const struct ov5647_mode ov5647_m
.height = 1944,
},
.pixel_rate = 87500000,
.hts = 1896,
.vts = 0x59b,
.reg_list = ov5647_2x2binned_10bpp,
-@@ -439,6 +451,7 @@ static const struct ov5647_mode ov5647_modes[] = {
+@@ -439,6 +451,7 @@ static const struct ov5647_mode ov5647_m
.height = 1920,
},
.pixel_rate = 58333000,
.hts = 1852,
.vts = 0x1f8,
.reg_list = ov5647_640x480_10bpp,
-@@ -937,6 +950,8 @@ static int ov5647_set_pad_fmt(struct v4l2_subdev *sd,
+@@ -937,6 +950,8 @@ static int ov5647_set_pad_fmt(struct v4l
sensor->exposure->minimum,
exposure_max, sensor->exposure->step,
exposure_def);
}
*fmt = mode->format;
/* The code we pass back must reflect the current h/vflips. */
-@@ -1242,7 +1257,7 @@ static int ov5647_init_controls(struct ov5647 *sensor, struct device *dev)
+@@ -1242,7 +1257,7 @@ static int ov5647_init_controls(struct o
int hblank, exposure_max, exposure_def;
struct v4l2_fwnode_device_properties props;
sensor->ctrls.lock = &sensor->lock;
-@@ -1304,6 +1319,14 @@ static int ov5647_init_controls(struct ov5647 *sensor, struct device *dev)
+@@ -1304,6 +1319,14 @@ static int ov5647_init_controls(struct o
if (sensor->vflip)
sensor->vflip->flags |= V4L2_CTRL_FLAG_MODIFY_LAYOUT;
v4l2_fwnode_device_parse(dev, &props);
v4l2_ctrl_new_fwnode_properties(&sensor->ctrls, &ov5647_ctrl_ops,
---
-2.54.0
-
drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
-diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
-index 0eabcd9350d1..1c9cba7cd295 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c
-@@ -1443,6 +1443,7 @@ static const struct v4l2_ioctl_ops camera0_ioctl_ops = {
+@@ -1443,6 +1443,7 @@ static const struct v4l2_ioctl_ops camer
.vidioc_querybuf = vb2_ioctl_querybuf,
.vidioc_qbuf = vb2_ioctl_qbuf,
.vidioc_dqbuf = vb2_ioctl_dqbuf,
.vidioc_enum_framesizes = vidioc_enum_framesizes,
.vidioc_enum_frameintervals = vidioc_enum_frameintervals,
.vidioc_g_parm = vidioc_g_parm,
-@@ -1929,7 +1930,7 @@ static int bcm2835_mmal_probe(struct vchiq_device *device)
+@@ -1929,7 +1930,7 @@ static int bcm2835_mmal_probe(struct vch
q = &dev->capture.vb_vidq;
memset(q, 0, sizeof(*q));
q->type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
q->drv_priv = dev;
q->buf_struct_size = sizeof(struct vb2_mmal_buffer);
q->ops = &bcm2835_mmal_video_qops;
---
-2.54.0
-
drivers/staging/fbtft/fb_st7789v.c | 44 +++++++++++++++++++++++++++++-
1 file changed, 43 insertions(+), 1 deletion(-)
-diff --git a/drivers/staging/fbtft/fb_st7789v.c b/drivers/staging/fbtft/fb_st7789v.c
-index 861a154144e6..ddc1452c2953 100644
--- a/drivers/staging/fbtft/fb_st7789v.c
+++ b/drivers/staging/fbtft/fb_st7789v.c
@@ -75,6 +75,11 @@ enum st7789v_command {
static irqreturn_t panel_te_handler(int irq, void *data)
{
-@@ -261,6 +266,22 @@ static int write_vmem(struct fbtft_par *par, size_t offset, size_t len)
+@@ -261,6 +266,22 @@ static int write_vmem(struct fbtft_par *
return ret;
}
/**
* set_var() - apply LCD properties like rotation and BGR mode
*
-@@ -271,20 +292,32 @@ static int write_vmem(struct fbtft_par *par, size_t offset, size_t len)
+@@ -271,20 +292,32 @@ static int write_vmem(struct fbtft_par *
static int set_var(struct fbtft_par *par)
{
u8 madctl_par = 0;
MODULE_ALIAS("spi:" DRVNAME);
MODULE_ALIAS("platform:" DRVNAME);
---
-2.54.0
-
.../vc04_services/bcm2835-camera/controls.c | 19 +++++++++++++++++--
1 file changed, 17 insertions(+), 2 deletions(-)
-diff --git a/drivers/staging/vc04_services/bcm2835-camera/controls.c b/drivers/staging/vc04_services/bcm2835-camera/controls.c
-index d800d54d8042..29a9ff97f30c 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/controls.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/controls.c
-@@ -702,6 +702,8 @@ static int ctrl_set_video_encode_profile_level(struct bcm2835_mmal_dev *dev,
+@@ -702,6 +702,8 @@ static int ctrl_set_video_encode_profile
case V4L2_MPEG_VIDEO_H264_LEVEL_3_1:
case V4L2_MPEG_VIDEO_H264_LEVEL_3_2:
case V4L2_MPEG_VIDEO_H264_LEVEL_4_0:
dev->capture.enc_level = ctrl->val;
break;
default:
-@@ -767,6 +769,17 @@ static int ctrl_set_video_encode_profile_level(struct bcm2835_mmal_dev *dev,
+@@ -767,6 +769,17 @@ static int ctrl_set_video_encode_profile
case V4L2_MPEG_VIDEO_H264_LEVEL_4_0:
param.level = MMAL_VIDEO_LEVEL_H264_4;
break;
default:
/* Should never get here */
break;
-@@ -1216,8 +1229,10 @@ static const struct bcm2835_mmal_v4l2_ctrl v4l2_ctrls[V4L2_CTRL_COUNT] = {
+@@ -1216,8 +1229,10 @@ static const struct bcm2835_mmal_v4l2_ct
BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_0) |
BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_1) |
BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_2) |
.def = V4L2_MPEG_VIDEO_H264_LEVEL_4_0,
.step = 1,
.imenu = NULL,
---
-2.54.0
-
drivers/media/i2c/ov7251.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
-diff --git a/drivers/media/i2c/ov7251.c b/drivers/media/i2c/ov7251.c
-index 27afc3fc0175..aa96f1238ca3 100644
--- a/drivers/media/i2c/ov7251.c
+++ b/drivers/media/i2c/ov7251.c
-@@ -1569,7 +1569,7 @@ static int ov7251_init_ctrls(struct ov7251 *ov7251)
+@@ -1569,7 +1569,7 @@ static int ov7251_init_ctrls(struct ov72
s64 pixel_rate;
int hblank;
ov7251->ctrls.lock = &ov7251->lock;
v4l2_ctrl_new_std(&ov7251->ctrls, &ov7251_ctrl_ops,
-@@ -1628,6 +1628,7 @@ static int ov7251_init_ctrls(struct ov7251 *ov7251)
+@@ -1628,6 +1628,7 @@ static int ov7251_init_ctrls(struct ov72
static int ov7251_probe(struct i2c_client *client)
{
struct device *dev = &client->dev;
struct ov7251 *ov7251;
int ret;
-@@ -1696,6 +1697,15 @@ static int ov7251_probe(struct i2c_client *client)
+@@ -1696,6 +1697,15 @@ static int ov7251_probe(struct i2c_clien
goto destroy_mutex;
}
v4l2_i2c_subdev_init(&ov7251->sd, client, &ov7251_subdev_ops);
ov7251->sd.internal_ops = &ov7251_internal_ops;
ov7251->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
---
-2.54.0
-
.../drm/panel/panel-raspberrypi-touchscreen.c | 44 +++++++++++++++++--
1 file changed, 41 insertions(+), 3 deletions(-)
-diff --git a/drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c b/drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c
-index dc4bb8ad9131..043877de257d 100644
--- a/drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c
+++ b/drivers/gpu/drm/panel/panel-raspberrypi-touchscreen.c
-@@ -218,7 +218,35 @@ static struct rpi_touchscreen *panel_to_ts(struct drm_panel *panel)
+@@ -218,7 +218,35 @@ static struct rpi_touchscreen *panel_to_
static int rpi_touchscreen_i2c_read(struct rpi_touchscreen *ts, u8 reg)
{
}
static void rpi_touchscreen_i2c_write(struct rpi_touchscreen *ts,
-@@ -267,12 +295,21 @@ static int rpi_touchscreen_noop(struct drm_panel *panel)
+@@ -267,12 +295,21 @@ static int rpi_touchscreen_noop(struct d
static int rpi_touchscreen_prepare(struct drm_panel *panel)
{
struct rpi_touchscreen *ts = panel_to_ts(panel);
break;
}
-@@ -401,6 +438,7 @@ static int rpi_touchscreen_probe(struct i2c_client *i2c)
+@@ -401,6 +438,7 @@ static int rpi_touchscreen_probe(struct
/* Turn off at boot, so we can cleanly sequence powering on. */
rpi_touchscreen_i2c_write(ts, REG_POWERON, 0);
/* Look up the DSI host. It needs to probe before we do. */
endpoint = of_graph_get_endpoint_by_regs(dev->of_node, 0, -1);
---
-2.54.0
-
drivers/gpu/drm/panel/panel-simple.c | 236 ++++++++++++++++--
3 files changed, 327 insertions(+), 22 deletions(-)
-diff --git a/Documentation/devicetree/bindings/display/panel/panel-simple.yaml b/Documentation/devicetree/bindings/display/panel/panel-simple.yaml
-index 2017428d8828..fe667ac2ccbd 100644
--- a/Documentation/devicetree/bindings/display/panel/panel-simple.yaml
+++ b/Documentation/devicetree/bindings/display/panel/panel-simple.yaml
@@ -158,6 +158,8 @@ properties:
# Innolux AT070TN92 7.0" WQVGA TFT LCD panel
- innolux,at070tn92
# Innolux G070ACE-L01 7" WVGA (800x480) TFT LCD panel
-diff --git a/Documentation/userspace-api/media/v4l/subdev-formats.rst b/Documentation/userspace-api/media/v4l/subdev-formats.rst
-index 2d9d4e1802d4..165d0a3bf4fe 100644
--- a/Documentation/userspace-api/media/v4l/subdev-formats.rst
+++ b/Documentation/userspace-api/media/v4l/subdev-formats.rst
-@@ -625,6 +625,43 @@ The following tables list existing packed RGB formats.
+@@ -625,6 +625,43 @@ The following tables list existing packe
- b\ :sub:`2`
- b\ :sub:`1`
- b\ :sub:`0`
* .. _MEDIA-BUS-FMT-BGR565-2X8-BE:
- MEDIA_BUS_FMT_BGR565_2X8_BE
-@@ -913,6 +950,43 @@ The following tables list existing packed RGB formats.
+@@ -913,6 +950,43 @@ The following tables list existing packe
- g\ :sub:`5`
- g\ :sub:`4`
- g\ :sub:`3`
* .. _MEDIA-BUS-FMT-RGB666-1X18:
- MEDIA_BUS_FMT_RGB666_1X18
-@@ -1096,6 +1170,43 @@ The following tables list existing packed RGB formats.
+@@ -1096,6 +1170,43 @@ The following tables list existing packe
- g\ :sub:`2`
- g\ :sub:`1`
- g\ :sub:`0`
* .. _MEDIA-BUS-FMT-RGB666-1X24_CPADHI:
- MEDIA_BUS_FMT_RGB666_1X24_CPADHI
-diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c
-index 271f93399193..6e9f437c852b 100644
--- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c
@@ -160,8 +160,6 @@ struct panel_simple {
};
static inline struct panel_simple *to_panel_simple(struct drm_panel *panel)
-@@ -396,12 +394,6 @@ static int panel_simple_get_modes(struct drm_panel *panel,
+@@ -396,12 +394,6 @@ static int panel_simple_get_modes(struct
/* add hard-coded panel modes */
num += panel_simple_get_non_edid_modes(p, connector);
return num;
}
-@@ -422,20 +414,12 @@ static int panel_simple_get_timings(struct drm_panel *panel,
+@@ -422,20 +414,12 @@ static int panel_simple_get_timings(stru
return p->desc->num_timings;
}
.get_timings = panel_simple_get_timings,
};
-@@ -469,6 +453,7 @@ static struct panel_desc *panel_dpi_probe(struct device *dev)
+@@ -469,6 +453,7 @@ static struct panel_desc *panel_dpi_prob
of_property_read_u32(np, "width-mm", &desc->size.width);
of_property_read_u32(np, "height-mm", &desc->size.height);
/* Extract bus_flags from display_timing */
bus_flags = 0;
-@@ -478,6 +463,8 @@ static struct panel_desc *panel_dpi_probe(struct device *dev)
+@@ -478,6 +463,8 @@ static struct panel_desc *panel_dpi_prob
/* We do not know the connector for the DT node, so guess it */
desc->connector_type = DRM_MODE_CONNECTOR_DPI;
return desc;
}
-@@ -693,12 +680,6 @@ static struct panel_simple *panel_simple_probe(struct device *dev)
+@@ -693,12 +680,6 @@ static struct panel_simple *panel_simple
return dev_err_cast_probe(dev, panel->enable_gpio,
"failed to request GPIO\n");
ddc = of_parse_phandle(dev->of_node, "ddc-i2c-bus", 0);
if (ddc) {
panel->ddc = of_find_i2c_adapter_by_node(ddc);
-@@ -2381,6 +2362,32 @@ static const struct panel_desc friendlyarm_hd702e = {
+@@ -2381,6 +2362,32 @@ static const struct panel_desc friendlya
},
};
static const struct drm_display_mode giantplus_gpg482739qs5_mode = {
.clock = 9000,
.hdisplay = 480,
-@@ -2561,6 +2568,38 @@ static const struct panel_desc innolux_at043tn24 = {
+@@ -2561,6 +2568,38 @@ static const struct panel_desc innolux_a
.bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE,
};
static const struct drm_display_mode innolux_at070tn92_mode = {
.clock = 33333,
.hdisplay = 800,
-@@ -4101,6 +4140,31 @@ static const struct panel_desc rocktech_rk043fn48h = {
+@@ -4101,6 +4140,31 @@ static const struct panel_desc rocktech_
.connector_type = DRM_MODE_CONNECTOR_DPI,
};
static const struct display_timing rocktech_rk070er9427_timing = {
.pixelclock = { 26400000, 33300000, 46800000 },
.hactive = { 800, 800, 800 },
-@@ -5151,6 +5215,9 @@ static const struct of_device_id platform_of_match[] = {
- }, {
+@@ -5152,6 +5216,9 @@ static const struct of_device_id platfor
.compatible = "friendlyarm,hd702e",
.data = &friendlyarm_hd702e,
-+ }, {
+ }, {
+ .compatible = "geekworm,mzp280",
+ .data = &geekworm_mzp280,
- }, {
++ }, {
.compatible = "giantplus,gpg482739qs5",
.data = &giantplus_gpg482739qs5
-@@ -5172,6 +5239,9 @@ static const struct of_device_id platform_of_match[] = {
}, {
+@@ -5173,6 +5240,9 @@ static const struct of_device_id platfor
.compatible = "innolux,at043tn24",
.data = &innolux_at043tn24,
-+ }, {
+ }, {
+ .compatible = "innolux,at056tn53v1",
+ .data = &innolux_at056tn53v1,
- }, {
++ }, {
.compatible = "innolux,at070tn92",
.data = &innolux_at070tn92,
-@@ -5346,6 +5416,9 @@ static const struct of_device_id platform_of_match[] = {
}, {
+@@ -5347,6 +5417,9 @@ static const struct of_device_id platfor
.compatible = "rocktech,rk043fn48h",
.data = &rocktech_rk043fn48h,
-+ }, {
+ }, {
+ .compatible = "raspberrypi,7inch-dsi",
+ .data = &raspberrypi_7inch,
- }, {
++ }, {
.compatible = "rocktech,rk070er9427",
.data = &rocktech_rk070er9427,
-@@ -5709,6 +5782,9 @@ static const struct panel_desc_dsi osd101t2045_53ts = {
+ }, {
+@@ -5709,6 +5782,9 @@ static const struct panel_desc_dsi osd10
.lanes = 4,
};
static const struct of_device_id dsi_of_match[] = {
{
.compatible = "auo,b080uan01",
-@@ -5731,12 +5807,113 @@ static const struct of_device_id dsi_of_match[] = {
- }, {
+@@ -5732,11 +5808,112 @@ static const struct of_device_id dsi_of_
.compatible = "osddisplays,osd101t2045-53ts",
.data = &osd101t2045_53ts
-+ }, {
+ }, {
+ /* Must be the last entry */
+ .compatible = "panel-dsi",
+ .data = &panel_dsi,
- }, {
++ }, {
/* sentinel */
}
};
static int panel_simple_dsi_probe(struct mipi_dsi_device *dsi)
{
const struct panel_desc_dsi *desc;
-@@ -5748,6 +5925,21 @@ static int panel_simple_dsi_probe(struct mipi_dsi_device *dsi)
+@@ -5748,6 +5925,21 @@ static int panel_simple_dsi_probe(struct
return PTR_ERR(panel);
desc = container_of(panel->desc, struct panel_desc_dsi, desc);
dsi->mode_flags = desc->flags;
dsi->format = desc->format;
dsi->lanes = desc->lanes;
---
-2.54.0
-
.../gpu/drm/panel/panel-jdi-lt070me05000.c | 20 ++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
-diff --git a/drivers/gpu/drm/panel/panel-jdi-lt070me05000.c b/drivers/gpu/drm/panel/panel-jdi-lt070me05000.c
-index 3513e5c4dd8c..42b9815fb887 100644
--- a/drivers/gpu/drm/panel/panel-jdi-lt070me05000.c
+++ b/drivers/gpu/drm/panel/panel-jdi-lt070me05000.c
-@@ -190,11 +190,11 @@ static int jdi_panel_unprepare(struct drm_panel *panel)
+@@ -190,11 +190,11 @@ static int jdi_panel_unprepare(struct dr
if (ret < 0)
dev_err(dev, "regulator disable failed, %d\n", ret);
return 0;
}
-@@ -213,13 +213,13 @@ static int jdi_panel_prepare(struct drm_panel *panel)
+@@ -213,13 +213,13 @@ static int jdi_panel_prepare(struct drm_
msleep(20);
usleep_range(10, 20);
ret = jdi_panel_init(jdi);
-@@ -241,11 +241,11 @@ static int jdi_panel_prepare(struct drm_panel *panel)
+@@ -241,11 +241,11 @@ poweroff:
if (ret < 0)
dev_err(dev, "regulator disable failed, %d\n", ret);
return ret;
}
-@@ -402,6 +402,8 @@ static int jdi_panel_add(struct jdi_panel *jdi)
+@@ -402,6 +402,8 @@ static int jdi_panel_add(struct jdi_pane
return dev_err_probe(dev, PTR_ERR(jdi->backlight),
"failed to register backlight %d\n", ret);
drm_panel_add(&jdi->base);
return 0;
---
-2.54.0
-
drivers/gpu/drm/panel/panel-ilitek-ili9881c.c | 707 +++++++++++++++++-
1 file changed, 706 insertions(+), 1 deletion(-)
-diff --git a/drivers/gpu/drm/panel/panel-ilitek-ili9881c.c b/drivers/gpu/drm/panel/panel-ilitek-ili9881c.c
-index ad4993b2f92a..fe8964d9f8f0 100644
--- a/drivers/gpu/drm/panel/panel-ilitek-ili9881c.c
+++ b/drivers/gpu/drm/panel/panel-ilitek-ili9881c.c
@@ -1,6 +1,9 @@
*/
#include <linux/delay.h>
-@@ -1224,6 +1227,622 @@ static const struct ili9881c_instr am8001280g_init[] = {
+@@ -1224,6 +1227,622 @@ static const struct ili9881c_instr am800
ILI9881C_COMMAND_INSTR(MIPI_DCS_WRITE_POWER_SAVE, 0x00),
};
static const struct ili9881c_instr rpi_7inch_init[] = {
ILI9881C_SWITCH_PAGE_INSTR(3),
ILI9881C_COMMAND_INSTR(0x01, 0x00),
-@@ -1806,6 +2425,58 @@ static const struct drm_display_mode am8001280g_default_mode = {
+@@ -1806,6 +2425,58 @@ static const struct drm_display_mode am8
.height_mm = 151,
};
static const struct drm_display_mode rpi_7inch_default_mode = {
.clock = 83330,
-@@ -1939,7 +2610,11 @@ static int ili9881c_dsi_probe(struct mipi_dsi_device *dsi)
+@@ -1939,7 +2610,11 @@ static int ili9881c_dsi_probe(struct mip
dsi->format = MIPI_DSI_FMT_RGB888;
dsi->lanes = ctx->desc->lanes;
}
static void ili9881c_dsi_remove(struct mipi_dsi_device *dsi)
-@@ -1948,6 +2623,9 @@ static void ili9881c_dsi_remove(struct mipi_dsi_device *dsi)
+@@ -1948,6 +2623,9 @@ static void ili9881c_dsi_remove(struct m
mipi_dsi_detach(dsi);
drm_panel_remove(&ctx->panel);
}
static const struct ili9881c_desc lhr050h41_desc = {
-@@ -2000,6 +2678,30 @@ static const struct ili9881c_desc am8001280g_desc = {
+@@ -2000,6 +2678,30 @@ static const struct ili9881c_desc am8001
MIPI_DSI_CLOCK_NON_CONTINUOUS | MIPI_DSI_MODE_LPM,
};
static const struct ili9881c_desc rpi_7inch_desc = {
.init = rpi_7inch_init,
.init_length = ARRAY_SIZE(rpi_7inch_init),
-@@ -2025,6 +2727,9 @@ static const struct of_device_id ili9881c_of_match[] = {
+@@ -2025,6 +2727,9 @@ static const struct of_device_id ili9881
{ .compatible = "tdo,tl050hdv35", .data = &tl050hdv35_desc },
{ .compatible = "wanchanglong,w552946aba", .data = &w552946aba_desc },
{ .compatible = "ampire,am8001280g", .data = &am8001280g_desc },
{ .compatible = "raspberrypi,dsi-7inch", &rpi_7inch_desc },
{ }
};
---
-2.54.0
-
.../devicetree/bindings/display/panel/ilitek,ili9881c.yaml | 2 ++
1 file changed, 2 insertions(+)
-diff --git a/Documentation/devicetree/bindings/display/panel/ilitek,ili9881c.yaml b/Documentation/devicetree/bindings/display/panel/ilitek,ili9881c.yaml
-index 434cc6af9c95..2dc9d02b8939 100644
--- a/Documentation/devicetree/bindings/display/panel/ilitek,ili9881c.yaml
+++ b/Documentation/devicetree/bindings/display/panel/ilitek,ili9881c.yaml
@@ -24,6 +24,8 @@ properties:
- const: ilitek,ili9881c
reg:
---
-2.54.0
-
3 files changed, 290 insertions(+)
create mode 100644 drivers/gpu/drm/panel/panel-tdo-y17p.c
-diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig
-index 407c5f6a268b..d3ef7b5e3141 100644
--- a/drivers/gpu/drm/panel/Kconfig
+++ b/drivers/gpu/drm/panel/Kconfig
@@ -1056,6 +1056,17 @@ config DRM_PANEL_TDO_TL070WSH30
config DRM_PANEL_TPO_TD028TTEC1
tristate "Toppoly (TPO) TD028TTEC1 panel driver"
depends on OF && SPI
-diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile
-index 3615a761b44f..82c704f6603b 100644
--- a/drivers/gpu/drm/panel/Makefile
+++ b/drivers/gpu/drm/panel/Makefile
-@@ -105,6 +105,7 @@ obj-$(CONFIG_DRM_PANEL_SONY_TD4353_JDI) += panel-sony-td4353-jdi.o
+@@ -105,6 +105,7 @@ obj-$(CONFIG_DRM_PANEL_SONY_TD4353_JDI)
obj-$(CONFIG_DRM_PANEL_SONY_TULIP_TRULY_NT35521) += panel-sony-tulip-truly-nt35521.o
obj-$(CONFIG_DRM_PANEL_STARTEK_KD070FHFID015) += panel-startek-kd070fhfid015.o
obj-$(CONFIG_DRM_PANEL_TDO_TL070WSH30) += panel-tdo-tl070wsh30.o
obj-$(CONFIG_DRM_PANEL_TPO_TD028TTEC1) += panel-tpo-td028ttec1.o
obj-$(CONFIG_DRM_PANEL_TPO_TD043MTEA1) += panel-tpo-td043mtea1.o
obj-$(CONFIG_DRM_PANEL_TPO_TPG110) += panel-tpo-tpg110.o
-diff --git a/drivers/gpu/drm/panel/panel-tdo-y17p.c b/drivers/gpu/drm/panel/panel-tdo-y17p.c
-new file mode 100644
-index 000000000000..ca6818dc465d
--- /dev/null
+++ b/drivers/gpu/drm/panel/panel-tdo-y17p.c
@@ -0,0 +1,278 @@
+MODULE_AUTHOR("Dave Stevenson <dave.stevenson@raspberrypi.com>");
+MODULE_DESCRIPTION("TDO Y17P LCD panel driver");
+MODULE_LICENSE("GPL v2");
---
-2.54.0
-
create mode 100644 drivers/gpu/drm/panel/panel-waveshare-dsi-v2.c
create mode 100644 drivers/gpu/drm/panel/panel-waveshare-dsi.c
-diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig
-index d3ef7b5e3141..33c484be76ab 100644
--- a/drivers/gpu/drm/panel/Kconfig
+++ b/drivers/gpu/drm/panel/Kconfig
@@ -1148,6 +1148,26 @@ config DRM_PANEL_VISIONOX_VTDR6130
config DRM_PANEL_WIDECHIPS_WS2401
tristate "Widechips WS2401 DPI panel driver"
depends on SPI && GPIOLIB
-diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile
-index 82c704f6603b..d04639d9dbd4 100644
--- a/drivers/gpu/drm/panel/Makefile
+++ b/drivers/gpu/drm/panel/Makefile
-@@ -115,5 +115,7 @@ obj-$(CONFIG_DRM_PANEL_VISIONOX_RM69299) += panel-visionox-rm69299.o
+@@ -115,5 +115,7 @@ obj-$(CONFIG_DRM_PANEL_VISIONOX_RM69299)
obj-$(CONFIG_DRM_PANEL_VISIONOX_RM692E5) += panel-visionox-rm692e5.o
obj-$(CONFIG_DRM_PANEL_VISIONOX_VTDR6130) += panel-visionox-vtdr6130.o
obj-$(CONFIG_DRM_PANEL_VISIONOX_R66451) += panel-visionox-r66451.o
+obj-$(CONFIG_DRM_PANEL_WAVESHARE_TOUCHSCREEN_V2) += panel-waveshare-dsi-v2.o
obj-$(CONFIG_DRM_PANEL_WIDECHIPS_WS2401) += panel-widechips-ws2401.o
obj-$(CONFIG_DRM_PANEL_XINPENG_XPP055C272) += panel-xinpeng-xpp055c272.o
-diff --git a/drivers/gpu/drm/panel/panel-waveshare-dsi-v2.c b/drivers/gpu/drm/panel/panel-waveshare-dsi-v2.c
-new file mode 100644
-index 000000000000..cfff92ead5e6
--- /dev/null
+++ b/drivers/gpu/drm/panel/panel-waveshare-dsi-v2.c
@@ -0,0 +1,2284 @@
+MODULE_AUTHOR("Waveshare Team <support@waveshare.com>");
+MODULE_DESCRIPTION("Waveshare DSI panel driver");
+MODULE_LICENSE("GPL");
-diff --git a/drivers/gpu/drm/panel/panel-waveshare-dsi.c b/drivers/gpu/drm/panel/panel-waveshare-dsi.c
-new file mode 100644
-index 000000000000..711b4c36c62f
--- /dev/null
+++ b/drivers/gpu/drm/panel/panel-waveshare-dsi.c
@@ -0,0 +1,633 @@
+MODULE_AUTHOR("Dave Stevenson <dave.stevenson@raspberrypi.com>");
+MODULE_DESCRIPTION("Waveshare DSI panel driver");
+MODULE_LICENSE("GPL");
---
-2.54.0
-
3 files changed, 338 insertions(+)
create mode 100644 drivers/regulator/waveshare-panel-regulator.c
-diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig
-index d84f3d054c59..b6ffd0d6ede8 100644
--- a/drivers/regulator/Kconfig
+++ b/drivers/regulator/Kconfig
-@@ -1201,6 +1201,16 @@ config REGULATOR_RASPBERRYPI_TOUCHSCREEN_V2
+@@ -1201,6 +1201,16 @@ config REGULATOR_RASPBERRYPI_TOUCHSCREEN
unit. The regulator is used to enable power to the display and to
control backlight PWM.
config REGULATOR_RC5T583
tristate "RICOH RC5T583 Power regulators"
depends on MFD_RC5T583
-diff --git a/drivers/regulator/Makefile b/drivers/regulator/Makefile
-index b3101376029d..b0b8fd277992 100644
--- a/drivers/regulator/Makefile
+++ b/drivers/regulator/Makefile
-@@ -141,6 +141,7 @@ obj-$(CONFIG_REGULATOR_PCAP) += pcap-regulator.o
+@@ -141,6 +141,7 @@ obj-$(CONFIG_REGULATOR_PCAP) += pcap-reg
obj-$(CONFIG_REGULATOR_RAA215300) += raa215300.o
obj-$(CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_ATTINY) += rpi-panel-attiny-regulator.o
obj-$(CONFIG_REGULATOR_RASPBERRYPI_TOUCHSCREEN_V2) += rpi-panel-v2-regulator.o
obj-$(CONFIG_REGULATOR_RC5T583) += rc5t583-regulator.o
obj-$(CONFIG_REGULATOR_RK808) += rk808-regulator.o
obj-$(CONFIG_REGULATOR_RN5T618) += rn5t618-regulator.o
-diff --git a/drivers/regulator/waveshare-panel-regulator.c b/drivers/regulator/waveshare-panel-regulator.c
-new file mode 100644
-index 000000000000..dfba8cf5b37c
--- /dev/null
+++ b/drivers/regulator/waveshare-panel-regulator.c
@@ -0,0 +1,327 @@
+MODULE_AUTHOR("Waveshare Team <support@waveshare.com>");
+MODULE_DESCRIPTION("Regulator device driver for Waveshare touchscreen");
+MODULE_LICENSE("GPL");
---
-2.54.0
-
Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
1 file changed, 2 insertions(+)
-diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
-index 8f01aa016db1..477612fd138f 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
@@ -612,6 +612,8 @@ patternProperties:
"^gef,.*":
description: GE Fanuc Intelligent Platforms Embedded Systems, Inc.
"^GEFanuc,.*":
---
-2.54.0
-
.../devicetree/bindings/display/panel/panel-simple.yaml | 2 ++
1 file changed, 2 insertions(+)
-diff --git a/Documentation/devicetree/bindings/display/panel/panel-simple.yaml b/Documentation/devicetree/bindings/display/panel/panel-simple.yaml
-index fe667ac2ccbd..7ca6f5d94410 100644
--- a/Documentation/devicetree/bindings/display/panel/panel-simple.yaml
+++ b/Documentation/devicetree/bindings/display/panel/panel-simple.yaml
@@ -146,6 +146,8 @@ properties:
# GiantPlus GPG48273QS5 4.3" (480x272) WQVGA TFT LCD panel
- giantplus,gpg48273qs5
# GiantPlus GPM940B0 3.0" QVGA TFT LCD panel
---
-2.54.0
-
1 file changed, 118 insertions(+)
create mode 100644 Documentation/devicetree/bindings/display/panel/panel-dsi.yaml
-diff --git a/Documentation/devicetree/bindings/display/panel/panel-dsi.yaml b/Documentation/devicetree/bindings/display/panel/panel-dsi.yaml
-new file mode 100644
-index 000000000000..0576541d9567
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/panel/panel-dsi.yaml
@@ -0,0 +1,118 @@
+ };
+
+...
---
-2.54.0
-
.../vc04_services/vchiq-mmal/mmal-msg.h | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-msg.h b/drivers/staging/vc04_services/vchiq-mmal/mmal-msg.h
-index 7cccd5ee9a9e..96bf2fa0cd4b 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-msg.h
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-msg.h
@@ -253,6 +253,25 @@ struct mmal_msg_port_action_reply {
struct mmal_driver_buffer {
u32 magic;
u32 component_handle;
---
-2.54.0
-
.../vchiq-mmal/mmal-parameters.h | 37 +++++++++++++++++++
1 file changed, 37 insertions(+)
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h b/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h
-index 722af059ff9d..3ef8e1e05902 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h
@@ -811,6 +811,43 @@ struct mmal_parameter_displayregion {
#define MMAL_MAX_IMAGEFX_PARAMETERS 5
struct mmal_parameter_imagefx_parameters {
---
-2.54.0
-
drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h | 3 +++
1 file changed, 3 insertions(+)
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h b/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h
-index 3ef8e1e05902..825daadf2fea 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h
@@ -397,6 +397,9 @@ enum mmal_parameter_imagefx {
};
enum MMAL_PARAM_FLICKERAVOID {
---
-2.54.0
-
3 files changed, 251 insertions(+)
create mode 100644 drivers/power/supply/rpi_poe_power.c
-diff --git a/drivers/power/supply/Kconfig b/drivers/power/supply/Kconfig
-index dca4be23ee70..a2c9959144a0 100644
--- a/drivers/power/supply/Kconfig
+++ b/drivers/power/supply/Kconfig
@@ -28,6 +28,13 @@ config POWER_SUPPLY_HWMON
config APM_POWER
tristate "APM emulation for class batteries"
depends on APM_EMULATION
-diff --git a/drivers/power/supply/Makefile b/drivers/power/supply/Makefile
-index 99a820d38197..d5ac83876180 100644
--- a/drivers/power/supply/Makefile
+++ b/drivers/power/supply/Makefile
-@@ -10,6 +10,7 @@ obj-$(CONFIG_POWER_SUPPLY_HWMON) += power_supply_hwmon.o
+@@ -10,6 +10,7 @@ obj-$(CONFIG_POWER_SUPPLY_HWMON) += powe
obj-$(CONFIG_ADC_BATTERY_HELPER) += adc-battery-helper.o
obj-$(CONFIG_GENERIC_ADC_BATTERY) += generic-adc-battery.o
obj-$(CONFIG_APM_POWER) += apm_power.o
obj-$(CONFIG_AXP20X_POWER) += axp20x_usb_power.o
obj-$(CONFIG_IP5XXX_POWER) += ip5xxx_power.o
-diff --git a/drivers/power/supply/rpi_poe_power.c b/drivers/power/supply/rpi_poe_power.c
-new file mode 100644
-index 000000000000..80f59fc8266c
--- /dev/null
+++ b/drivers/power/supply/rpi_poe_power.c
@@ -0,0 +1,243 @@
+MODULE_ALIAS("platform:" DRVNAME);
+MODULE_DESCRIPTION("Raspberry Pi PoE+ HAT power supply driver");
+MODULE_LICENSE("GPL");
---
-2.54.0
-
drivers/mfd/simple-mfd-i2c.c | 10 ++++++++++
2 files changed, 20 insertions(+)
-diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
-index 55a9fea95195..8333080aa974 100644
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
@@ -1303,6 +1303,16 @@ config MFD_SY7636A
config MFD_RDC321X
tristate "RDC R-321x southbridge"
select MFD_CORE
-diff --git a/drivers/mfd/simple-mfd-i2c.c b/drivers/mfd/simple-mfd-i2c.c
-index 28675b53cbc4..d7264c23d15c 100644
--- a/drivers/mfd/simple-mfd-i2c.c
+++ b/drivers/mfd/simple-mfd-i2c.c
-@@ -29,6 +29,15 @@ static const struct regmap_config regmap_config_8r_8v = {
+@@ -29,6 +29,15 @@ static const struct regmap_config regmap
.val_bits = 8,
};
static int simple_mfd_i2c_probe(struct i2c_client *i2c)
{
const struct simple_mfd_data *simple_mfd_data;
-@@ -118,6 +127,7 @@ static const struct of_device_id simple_mfd_i2c_of_match[] = {
+@@ -118,6 +127,7 @@ static const struct of_device_id simple_
{ .compatible = "maxim,max5970", .data = &maxim_max5970},
{ .compatible = "maxim,max5978", .data = &maxim_max5970},
{ .compatible = "maxim,max77705-battery", .data = &maxim_mon_max77705},
{ .compatible = "raspberrypi,sensehat" },
{ .compatible = "silergy,sy7636a", .data = &silergy_sy7636a},
{ .compatible = "spacemit,p1", .data = &spacemit_p1, },
---
-2.54.0
-
drivers/pwm/pwm-raspberrypi-poe.c | 88 +++++++++++++++++++------------
1 file changed, 55 insertions(+), 33 deletions(-)
-diff --git a/drivers/pwm/pwm-raspberrypi-poe.c b/drivers/pwm/pwm-raspberrypi-poe.c
-index 8921e7ea2cea..19ff0726f78e 100644
--- a/drivers/pwm/pwm-raspberrypi-poe.c
+++ b/drivers/pwm/pwm-raspberrypi-poe.c
@@ -16,6 +16,7 @@
unsigned int duty_cycle;
};
-@@ -42,7 +47,7 @@ struct raspberrypi_pwm *raspberrypi_pwm_from_chip(struct pwm_chip *chip)
+@@ -42,7 +47,7 @@ struct raspberrypi_pwm *raspberrypi_pwm_
return pwmchip_get_drvdata(chip);
}
u32 reg, u32 val)
{
struct raspberrypi_pwm_prop msg = {
-@@ -51,17 +56,19 @@ static int raspberrypi_pwm_set_property(struct rpi_firmware *firmware,
+@@ -51,17 +56,19 @@ static int raspberrypi_pwm_set_property(
};
int ret;
u32 reg, u32 *val)
{
struct raspberrypi_pwm_prop msg = {
-@@ -69,16 +76,17 @@ static int raspberrypi_pwm_get_property(struct rpi_firmware *firmware,
+@@ -69,16 +76,17 @@ static int raspberrypi_pwm_get_property(
};
int ret;
}
static int raspberrypi_pwm_get_state(struct pwm_chip *chip,
-@@ -118,7 +126,7 @@ static int raspberrypi_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
+@@ -118,7 +126,7 @@ static int raspberrypi_pwm_apply(struct
if (duty_cycle == rpipwm->duty_cycle)
return 0;
duty_cycle);
if (ret) {
dev_err(pwmchip_parent(chip), "Failed to set duty cycle: %pe\n",
-@@ -145,28 +153,41 @@ static int raspberrypi_pwm_probe(struct platform_device *pdev)
+@@ -145,28 +153,41 @@ static int raspberrypi_pwm_probe(struct
struct raspberrypi_pwm *rpipwm;
int ret;
&rpipwm->duty_cycle);
if (ret) {
dev_err(dev, "Failed to get duty cycle: %pe\n", ERR_PTR(ret));
-@@ -178,6 +199,7 @@ static int raspberrypi_pwm_probe(struct platform_device *pdev)
+@@ -178,6 +199,7 @@ static int raspberrypi_pwm_probe(struct
static const struct of_device_id raspberrypi_pwm_of_match[] = {
{ .compatible = "raspberrypi,firmware-poe-pwm", },
{ }
};
MODULE_DEVICE_TABLE(of, raspberrypi_pwm_of_match);
---
-2.54.0
-
.../vc04_services/vchiq-mmal/mmal-vchiq.c | 139 ++++++++++--------
1 file changed, 77 insertions(+), 62 deletions(-)
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
-index 194f1f1341e3..21320396cfc4 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
@@ -34,6 +34,16 @@
/*
* maximum number of components supported.
* This matches the maximum permitted by default on the VPU
-@@ -381,7 +391,8 @@ buffer_from_host(struct vchiq_mmal_instance *instance,
+@@ -381,7 +391,8 @@ buffer_from_host(struct vchiq_mmal_insta
if (!port->enabled)
return -EINVAL;
/* get context */
if (!buf->msg_context) {
-@@ -549,11 +560,11 @@ static void event_to_host_cb(struct vchiq_mmal_instance *instance,
+@@ -549,11 +560,11 @@ static void event_to_host_cb(struct vchi
msg_context->u.bulk.pts = MMAL_TIME_UNKNOWN;
msg_context->u.bulk.cmd = msg->u.event_to_host.cmd;
}
schedule_work(&msg_context->u.bulk.work);
-@@ -566,8 +577,8 @@ static void buffer_to_host_cb(struct vchiq_mmal_instance *instance,
+@@ -566,8 +577,8 @@ static void buffer_to_host_cb(struct vch
struct mmal_msg_context *msg_context;
u32 handle;
if (msg->u.buffer_from_host.drvbuf.magic == MMAL_MAGIC) {
handle = msg->u.buffer_from_host.drvbuf.client_context;
-@@ -838,39 +849,42 @@ static int send_synchronous_mmal_msg(struct vchiq_mmal_instance *instance,
+@@ -838,39 +849,42 @@ static int send_synchronous_mmal_msg(str
static void dump_port_info(struct vchiq_mmal_port *port)
{
- pr_debug("buffer minimum num:%d size:%d align:%d\n",
- port->minimum_buffer.num,
- port->minimum_buffer.size, port->minimum_buffer.alignment);
-+ pr_dbg_lvl(3, debug, "buffer minimum num:%d size:%d align:%d\n",
-+ port->minimum_buffer.num,
-+ port->minimum_buffer.size, port->minimum_buffer.alignment);
-
+-
- pr_debug("buffer recommended num:%d size:%d align:%d\n",
- port->recommended_buffer.num,
- port->recommended_buffer.size,
- port->recommended_buffer.alignment);
+-
+- pr_debug("buffer current values num:%d size:%d align:%d\n",
+- port->current_buffer.num,
+- port->current_buffer.size, port->current_buffer.alignment);
+-
+- pr_debug("elementary stream: type:%d encoding:0x%x variant:0x%x\n",
+- port->format.type,
+- port->format.encoding, port->format.encoding_variant);
++ pr_dbg_lvl(3, debug, "buffer minimum num:%d size:%d align:%d\n",
++ port->minimum_buffer.num,
++ port->minimum_buffer.size, port->minimum_buffer.alignment);
++
+ pr_dbg_lvl(3, debug, "buffer recommended num:%d size:%d align:%d\n",
+ port->recommended_buffer.num,
+ port->recommended_buffer.size,
+ port->recommended_buffer.alignment);
-
-- pr_debug("buffer current values num:%d size:%d align:%d\n",
-- port->current_buffer.num,
-- port->current_buffer.size, port->current_buffer.alignment);
++
+ pr_dbg_lvl(3, debug, "buffer current values num:%d size:%d align:%d\n",
+ port->current_buffer.num,
+ port->current_buffer.size, port->current_buffer.alignment);
-
-- pr_debug("elementary stream: type:%d encoding:0x%x variant:0x%x\n",
-- port->format.type,
-- port->format.encoding, port->format.encoding_variant);
++
+ pr_dbg_lvl(3, debug, "elementary stream: type:%d encoding:0x%x variant:0x%x\n",
+ port->format.type,
+ port->format.encoding, port->format.encoding_variant);
port->es.video.frame_rate.numerator,
port->es.video.frame_rate.denominator,
port->es.video.par.numerator, port->es.video.par.denominator);
-@@ -904,7 +918,7 @@ static int port_info_set(struct vchiq_mmal_instance *instance,
+@@ -904,7 +918,7 @@ static int port_info_set(struct vchiq_mm
struct mmal_msg *rmsg;
struct vchiq_header *rmsg_handle;
if (!port)
return -1;
dump_port_info(port);
-@@ -947,8 +961,8 @@ static int port_info_set(struct vchiq_mmal_instance *instance,
+@@ -947,8 +961,8 @@ static int port_info_set(struct vchiq_mm
/* return operation status */
ret = -rmsg->u.port_info_get_reply.status;
release_msg:
vchiq_release_message(instance->vchiq_instance, instance->service_handle, rmsg_handle);
-@@ -1038,13 +1052,13 @@ static int port_info_get(struct vchiq_mmal_instance *instance,
+@@ -1038,13 +1052,13 @@ static int port_info_get(struct vchiq_mm
rmsg->u.port_info_get_reply.extradata,
port->format.extradata_size);
vchiq_release_message(instance->vchiq_instance, instance->service_handle, rmsg_handle);
-@@ -1090,9 +1104,9 @@ static int create_component(struct vchiq_mmal_instance *instance,
+@@ -1090,9 +1104,9 @@ static int create_component(struct vchiq
component->outputs = rmsg->u.component_create_reply.output_num;
component->clocks = rmsg->u.component_create_reply.clock_num;
release_msg:
vchiq_release_message(instance->vchiq_instance, instance->service_handle, rmsg_handle);
-@@ -1261,10 +1275,9 @@ static int port_action_port(struct vchiq_mmal_instance *instance,
+@@ -1261,10 +1275,9 @@ static int port_action_port(struct vchiq
ret = -rmsg->u.port_action_reply.status;
release_msg:
vchiq_release_message(instance->vchiq_instance, instance->service_handle, rmsg_handle);
-@@ -1308,11 +1321,11 @@ static int port_action_handle(struct vchiq_mmal_instance *instance,
+@@ -1308,11 +1321,11 @@ static int port_action_handle(struct vch
ret = -rmsg->u.port_action_reply.status;
release_msg:
vchiq_release_message(instance->vchiq_instance, instance->service_handle, rmsg_handle);
-@@ -1351,9 +1364,9 @@ static int port_parameter_set(struct vchiq_mmal_instance *instance,
+@@ -1351,9 +1364,9 @@ static int port_parameter_set(struct vch
ret = -rmsg->u.port_parameter_set_reply.status;
release_msg:
vchiq_release_message(instance->vchiq_instance, instance->service_handle, rmsg_handle);
-@@ -1411,8 +1424,9 @@ static int port_parameter_get(struct vchiq_mmal_instance *instance,
+@@ -1411,8 +1424,9 @@ static int port_parameter_get(struct vch
/* Always report the size of the returned parameter to the caller */
*value_size = rmsg->u.port_parameter_get_reply.size;
release_msg:
vchiq_release_message(instance->vchiq_instance, instance->service_handle, rmsg_handle);
-@@ -1669,7 +1683,7 @@ int vchiq_mmal_port_connect_tunnel(struct vchiq_mmal_instance *instance,
+@@ -1669,7 +1683,7 @@ int vchiq_mmal_port_connect_tunnel(struc
if (!dst) {
/* do not make new connection */
ret = 0;
goto release_unlock;
}
-@@ -1687,14 +1701,14 @@ int vchiq_mmal_port_connect_tunnel(struct vchiq_mmal_instance *instance,
+@@ -1687,14 +1701,14 @@ int vchiq_mmal_port_connect_tunnel(struc
/* set new format */
ret = port_info_set(instance, dst);
if (ret) {
goto release_unlock;
}
-@@ -1703,9 +1717,9 @@ int vchiq_mmal_port_connect_tunnel(struct vchiq_mmal_instance *instance,
+@@ -1703,9 +1717,9 @@ int vchiq_mmal_port_connect_tunnel(struc
MMAL_MSG_PORT_ACTION_TYPE_CONNECT,
dst->component->handle, dst->handle);
if (ret < 0) {
goto release_unlock;
}
src->connected = dst;
-@@ -1730,7 +1744,8 @@ int vchiq_mmal_submit_buffer(struct vchiq_mmal_instance *instance,
+@@ -1730,7 +1744,8 @@ int vchiq_mmal_submit_buffer(struct vchi
* videobuf2 won't let us have the dmabuf there.
*/
if (port->zero_copy && buffer->dma_buf && !buffer->vcsm_handle) {
ret = vc_sm_cma_import_dmabuf(buffer->dma_buf,
&buffer->vcsm_handle);
if (ret) {
-@@ -1746,8 +1761,8 @@ int vchiq_mmal_submit_buffer(struct vchiq_mmal_instance *instance,
+@@ -1746,8 +1761,8 @@ int vchiq_mmal_submit_buffer(struct vchi
vc_sm_cma_free(buffer->vcsm_handle);
return ret;
}
}
ret = buffer_from_host(instance, port, buffer);
-@@ -1786,8 +1801,8 @@ int mmal_vchi_buffer_cleanup(struct mmal_buffer *buf)
+@@ -1786,8 +1801,8 @@ int mmal_vchi_buffer_cleanup(struct mmal
if (buf->vcsm_handle) {
int ret;
ret = vc_sm_cma_free(buf->vcsm_handle);
if (ret)
pr_err("%s: vcsm_free failed, ret %d\n", __func__, ret);
---
-2.54.0
-
drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c | 2 ++
1 file changed, 2 insertions(+)
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
-index 21320396cfc4..190d4808ffd9 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
-@@ -1503,6 +1503,8 @@ static int port_enable(struct vchiq_mmal_instance *instance,
+@@ -1503,6 +1503,8 @@ static int port_enable(struct vchiq_mmal
port->enabled = true;
if (port->buffer_cb) {
/* send buffer headers to videocore */
hdr_count = 1;
---
-2.54.0
-
drivers/hwmon/pwm-fan.c | 57 ++++++++++++++++++++++++++++++++++++-----
1 file changed, 51 insertions(+), 6 deletions(-)
-diff --git a/drivers/hwmon/pwm-fan.c b/drivers/hwmon/pwm-fan.c
-index 37269db2de84..b6ad75e4208d 100644
--- a/drivers/hwmon/pwm-fan.c
+++ b/drivers/hwmon/pwm-fan.c
@@ -14,6 +14,7 @@
/* This handler assumes self resetting edge triggered interrupt. */
static irqreturn_t pulse_handler(int irq, void *dev_id)
{
-@@ -355,7 +363,10 @@ static int pwm_fan_read(struct device *dev, enum hwmon_sensor_types type,
+@@ -355,7 +363,10 @@ static int pwm_fan_read(struct device *d
}
return -EOPNOTSUPP;
case hwmon_fan:
}
static int pwm_fan_probe(struct platform_device *pdev)
-@@ -577,10 +589,23 @@ static int pwm_fan_probe(struct platform_device *pdev)
+@@ -577,10 +589,23 @@ static int pwm_fan_probe(struct platform
return ret;
ctx->tach_count = platform_irq_count(pdev);
if (ctx->tach_count) {
channel_count++; /* We also have a FAN channel. */
-@@ -611,12 +636,24 @@ static int pwm_fan_probe(struct platform_device *pdev)
+@@ -611,12 +636,24 @@ static int pwm_fan_probe(struct platform
device_property_read_u32_array(dev, "pulses-per-revolution",
ctx->pulses_per_revolution, ctx->tach_count);
channels[0] = HWMON_CHANNEL_INFO(pwm, HWMON_PWM_INPUT | HWMON_PWM_ENABLE);
-@@ -652,6 +689,8 @@ static int pwm_fan_probe(struct platform_device *pdev)
- ctx->sample_start = ktime_get();
+@@ -653,6 +690,8 @@ static int pwm_fan_probe(struct platform
mod_timer(&ctx->rpm_timer, jiffies + HZ);
-+ channels[1] = &ctx->fan_channel;
-+ } else if (ctx->rpm_regbase) {
channels[1] = &ctx->fan_channel;
++ } else if (ctx->rpm_regbase) {
++ channels[1] = &ctx->fan_channel;
}
-@@ -680,7 +719,8 @@ static int pwm_fan_probe(struct platform_device *pdev)
+ ret = device_property_read_u32(dev, "fan-shutdown-percent",
+@@ -680,7 +719,8 @@ static int pwm_fan_probe(struct platform
ctx, &ctx->info, NULL);
if (IS_ERR(hwmon)) {
dev_err(dev, "Failed to register hwmon device\n");
}
ctx->pwm_fan_state = ctx->pwm_fan_max_state;
-@@ -692,12 +732,17 @@ static int pwm_fan_probe(struct platform_device *pdev)
+@@ -692,12 +732,17 @@ static int pwm_fan_probe(struct platform
dev_err(dev,
"Failed to register pwm-fan as cooling device: %d\n",
ret);
}
static void pwm_fan_shutdown(struct platform_device *pdev)
---
-2.54.0
-
3 files changed, 152 insertions(+)
create mode 100644 drivers/gpio/gpio-pwm.c
-diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
-index c3fadbf139ab..be04aa8a8a21 100644
--- a/drivers/gpio/Kconfig
+++ b/drivers/gpio/Kconfig
@@ -582,6 +582,14 @@ config GPIO_POLARFIRE_SOC
config GPIO_PXA
bool "PXA GPIO support"
depends on ARCH_PXA || ARCH_MMP || COMPILE_TEST
-diff --git a/drivers/gpio/Makefile b/drivers/gpio/Makefile
-index 7c5d31608ceb..17442badd2d5 100644
--- a/drivers/gpio/Makefile
+++ b/drivers/gpio/Makefile
-@@ -147,6 +147,7 @@ obj-$(CONFIG_GPIO_PISOSR) += gpio-pisosr.o
+@@ -148,6 +148,7 @@ obj-$(CONFIG_GPIO_PISOSR) += gpio-pisos
obj-$(CONFIG_GPIO_PL061) += gpio-pl061.o
obj-$(CONFIG_GPIO_PMIC_EIC_SPRD) += gpio-pmic-eic-sprd.o
obj-$(CONFIG_GPIO_POLARFIRE_SOC) += gpio-mpfs.o
obj-$(CONFIG_GPIO_PXA) += gpio-pxa.o
obj-$(CONFIG_GPIO_RASPBERRYPI_EXP) += gpio-raspberrypi-exp.o
obj-$(CONFIG_GPIO_RC5T583) += gpio-rc5t583.o
-diff --git a/drivers/gpio/gpio-pwm.c b/drivers/gpio/gpio-pwm.c
-new file mode 100644
-index 000000000000..01a2d404d4a3
--- /dev/null
+++ b/drivers/gpio/gpio-pwm.c
@@ -0,0 +1,143 @@
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Dave Stevenson <dave.stevenson@raspberrypi.com>");
+MODULE_DESCRIPTION("PWM GPIO driver");
---
-2.54.0
-
.../vc04_services/bcm2835-camera/controls.c | 22 +++++++++++++++++++
2 files changed, 23 insertions(+), 1 deletion(-)
-diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h
-index 0f0c6f7a3764..bd2de802fde2 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h
+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h
@@ -13,7 +13,7 @@
enum {
COMP_CAMERA = 0,
-diff --git a/drivers/staging/vc04_services/bcm2835-camera/controls.c b/drivers/staging/vc04_services/bcm2835-camera/controls.c
-index 29a9ff97f30c..75063449d570 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/controls.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/controls.c
-@@ -1262,6 +1262,28 @@ static const struct bcm2835_mmal_v4l2_ctrl v4l2_ctrls[V4L2_CTRL_COUNT] = {
+@@ -1262,6 +1262,28 @@ static const struct bcm2835_mmal_v4l2_ct
.mmal_id = MMAL_PARAMETER_INTRAPERIOD,
.setter = ctrl_set_video_encode_param_output,
},
};
int bcm2835_mmal_set_all_camera_controls(struct bcm2835_mmal_dev *dev)
---
-2.54.0
-
.../staging/vc04_services/bcm2835-camera/controls.c | 11 +++++++++++
2 files changed, 12 insertions(+), 1 deletion(-)
-diff --git a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h
-index bd2de802fde2..f27cc8e55c80 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h
+++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.h
@@ -13,7 +13,7 @@
enum {
COMP_CAMERA = 0,
-diff --git a/drivers/staging/vc04_services/bcm2835-camera/controls.c b/drivers/staging/vc04_services/bcm2835-camera/controls.c
-index 75063449d570..2d796b73e2e6 100644
--- a/drivers/staging/vc04_services/bcm2835-camera/controls.c
+++ b/drivers/staging/vc04_services/bcm2835-camera/controls.c
-@@ -1284,6 +1284,17 @@ static const struct bcm2835_mmal_v4l2_ctrl v4l2_ctrls[V4L2_CTRL_COUNT] = {
+@@ -1284,6 +1284,17 @@ static const struct bcm2835_mmal_v4l2_ct
.mmal_id = MMAL_PARAMETER_VIDEO_ENCODE_MAX_QUANT,
.setter = ctrl_set_video_encode_param_output,
},
};
int bcm2835_mmal_set_all_camera_controls(struct bcm2835_mmal_dev *dev)
---
-2.54.0
-
drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
-diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
-index 9bb5f709d41a..ca49700cca50 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
-@@ -67,7 +67,12 @@ void __brcmf_err(struct brcmf_bus *bus, const char *func, const char *fmt, ...);
+@@ -67,7 +67,12 @@ void __brcmf_err(struct brcmf_bus *bus,
#if defined(DEBUG) || defined(CONFIG_BRCM_TRACING)
/* For debug/tracing purposes treat info messages as errors */
__printf(3, 4)
void __brcmf_dbg(u32 level, const char *func, const char *fmt, ...);
---
-2.54.0
-
drivers/spi/spidev.c | 1 +
1 file changed, 1 insertion(+)
-diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c
-index 3b9045e656ce..a6e64d94e446 100644
--- a/drivers/spi/spidev.c
+++ b/drivers/spi/spidev.c
-@@ -700,6 +700,7 @@ static const struct spi_device_id spidev_spi_ids[] = {
+@@ -700,6 +700,7 @@ static const struct spi_device_id spidev
{ .name = /* semtech */ "sx1301" },
{ .name = /* silabs */ "em3581" },
{ .name = /* silabs */ "si3210" },
{},
};
MODULE_DEVICE_TABLE(spi, spidev_spi_ids);
---
-2.54.0
-
.../regulator/rpi-panel-attiny-regulator.c | 75 +++----------------
1 file changed, 10 insertions(+), 65 deletions(-)
-diff --git a/drivers/regulator/rpi-panel-attiny-regulator.c b/drivers/regulator/rpi-panel-attiny-regulator.c
-index 3020839b9ef1..aba9244d8411 100644
--- a/drivers/regulator/rpi-panel-attiny-regulator.c
+++ b/drivers/regulator/rpi-panel-attiny-regulator.c
-@@ -141,22 +141,7 @@ static int attiny_lcd_power_disable(struct regulator_dev *rdev)
+@@ -141,22 +141,7 @@ static int attiny_lcd_power_disable(stru
static int attiny_lcd_power_is_enabled(struct regulator_dev *rdev)
{
struct attiny_lcd *state = rdev_get_drvdata(rdev);
}
static const struct regulator_init_data attiny_regulator_default = {
-@@ -236,39 +221,6 @@ static int attiny_gpio_set(struct gpio_chip *gc, unsigned int off, int val)
+@@ -236,39 +221,6 @@ static int attiny_gpio_set(struct gpio_c
return 0;
}
/*
* I2C driver interface functions
*/
-@@ -280,7 +232,6 @@ static int attiny_i2c_probe(struct i2c_client *i2c)
+@@ -280,7 +232,6 @@ static int attiny_i2c_probe(struct i2c_c
struct regulator_dev *rdev;
struct attiny_lcd *state;
struct regmap *regmap;
int ret;
state = devm_kzalloc(&i2c->dev, sizeof(*state), GFP_KERNEL);
-@@ -301,21 +252,6 @@ static int attiny_i2c_probe(struct i2c_client *i2c)
+@@ -301,21 +252,6 @@ static int attiny_i2c_probe(struct i2c_c
return ret;
}
regmap_write(regmap, REG_POWERON, 0);
msleep(30);
regmap_write(regmap, REG_PWM, 0);
-@@ -362,6 +298,14 @@ static int attiny_i2c_probe(struct i2c_client *i2c)
+@@ -362,6 +298,14 @@ static int attiny_i2c_probe(struct i2c_c
return ret;
}
static const struct of_device_id attiny_dt_ids[] = {
{ .compatible = "raspberrypi,7inch-touchscreen-panel-regulator" },
{},
-@@ -375,6 +319,7 @@ static struct i2c_driver attiny_regulator_driver = {
+@@ -375,6 +319,7 @@ static struct i2c_driver attiny_regulato
.of_match_table = attiny_dt_ids,
},
.probe = attiny_i2c_probe,
};
module_i2c_driver(attiny_regulator_driver);
---
-2.54.0
-
drivers/rtc/rtc-pcf8523.c | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
-diff --git a/drivers/rtc/rtc-pcf8523.c b/drivers/rtc/rtc-pcf8523.c
-index 2c63c0ffd05a..82e01c735cc8 100644
--- a/drivers/rtc/rtc-pcf8523.c
+++ b/drivers/rtc/rtc-pcf8523.c
-@@ -100,6 +100,7 @@ static int pcf8523_rtc_read_time(struct device *dev, struct rtc_time *tm)
+@@ -100,6 +100,7 @@ static int pcf8523_rtc_read_time(struct
{
struct pcf8523 *pcf8523 = dev_get_drvdata(dev);
u8 regs[10];
int err;
err = regmap_bulk_read(pcf8523->regmap, PCF8523_REG_CONTROL1, regs,
-@@ -110,6 +111,33 @@ static int pcf8523_rtc_read_time(struct device *dev, struct rtc_time *tm)
+@@ -110,6 +111,33 @@ static int pcf8523_rtc_read_time(struct
if ((regs[0] & PCF8523_CONTROL1_STOP) || (regs[3] & PCF8523_SECONDS_OS))
return -EINVAL;
tm->tm_sec = bcd2bin(regs[3] & 0x7f);
tm->tm_min = bcd2bin(regs[4] & 0x7f);
tm->tm_hour = bcd2bin(regs[5] & 0x3f);
---
-2.54.0
-
drivers/media/i2c/ov7251.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/media/i2c/ov7251.c b/drivers/media/i2c/ov7251.c
-index aa96f1238ca3..87db3e725601 100644
--- a/drivers/media/i2c/ov7251.c
+++ b/drivers/media/i2c/ov7251.c
-@@ -1682,7 +1682,7 @@ static int ov7251_probe(struct i2c_client *client)
+@@ -1682,7 +1682,7 @@ static int ov7251_probe(struct i2c_clien
return PTR_ERR(ov7251->analog_regulator);
}
if (IS_ERR(ov7251->enable_gpio)) {
dev_err(dev, "cannot get enable gpio\n");
return PTR_ERR(ov7251->enable_gpio);
---
-2.54.0
-
include/uapi/linux/v4l2-controls.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h
-index 8455190494eb..ba826ef15a6e 100644
--- a/include/uapi/linux/v4l2-controls.h
+++ b/include/uapi/linux/v4l2-controls.h
@@ -230,7 +230,7 @@ enum v4l2_colorfx {
/* MPEG-class control IDs */
/* The MPEG controls are applicable to all codec controls
---
-2.54.0
-
Documentation/devicetree/bindings/spi/spi-gpio.yaml | 4 ++++
1 file changed, 4 insertions(+)
-diff --git a/Documentation/devicetree/bindings/spi/spi-gpio.yaml b/Documentation/devicetree/bindings/spi/spi-gpio.yaml
-index 9ce1df93d4c3..d911c203fa45 100644
--- a/Documentation/devicetree/bindings/spi/spi-gpio.yaml
+++ b/Documentation/devicetree/bindings/spi/spi-gpio.yaml
@@ -43,6 +43,10 @@ properties:
# Deprecated properties
gpio-sck: false
gpio-miso: false
---
-2.54.0
-
drivers/spi/spi-gpio.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
-diff --git a/drivers/spi/spi-gpio.c b/drivers/spi/spi-gpio.c
-index c8dadb532c40..a85d9b1a3355 100644
--- a/drivers/spi/spi-gpio.c
+++ b/drivers/spi/spi-gpio.c
@@ -34,6 +34,7 @@ struct spi_gpio {
struct gpio_desc **cs_gpios;
};
-@@ -196,8 +197,12 @@ static void spi_gpio_chipselect(struct spi_device *spi, int is_active)
+@@ -196,8 +197,12 @@ static void spi_gpio_chipselect(struct s
struct spi_gpio *spi_gpio = spi_to_spi_gpio(spi);
/* set initial clock line level */
/* Drive chip select line, if we have one */
if (spi_gpio->cs_gpios) {
-@@ -206,6 +211,9 @@ static void spi_gpio_chipselect(struct spi_device *spi, int is_active)
+@@ -206,6 +211,9 @@ static void spi_gpio_chipselect(struct s
/* SPI chip selects are normally active-low */
gpiod_set_value_cansleep(cs, (spi->mode & SPI_CS_HIGH) ? is_active : !is_active);
}
}
static void spi_gpio_set_mosi_idle(struct spi_device *spi)
-@@ -301,6 +309,7 @@ static int spi_gpio_request(struct device *dev, struct spi_gpio *spi_gpio)
+@@ -301,6 +309,7 @@ static int spi_gpio_request(struct devic
if (IS_ERR(spi_gpio->miso))
return PTR_ERR(spi_gpio->miso);
spi_gpio->sck = devm_gpiod_get(dev, "sck", GPIOD_OUT_LOW);
return PTR_ERR_OR_ZERO(spi_gpio->sck);
}
---
-2.54.0
-
drivers/media/i2c/ov7251.c | 8 ++++++++
1 file changed, 8 insertions(+)
-diff --git a/drivers/media/i2c/ov7251.c b/drivers/media/i2c/ov7251.c
-index 87db3e725601..77e00d79e4b7 100644
--- a/drivers/media/i2c/ov7251.c
+++ b/drivers/media/i2c/ov7251.c
-@@ -1348,6 +1348,14 @@ static int ov7251_s_stream(struct v4l2_subdev *subdev, int enable)
+@@ -1348,6 +1348,14 @@ static int ov7251_s_stream(struct v4l2_s
return ret;
}
ret = ov7251_pll_configure(ov7251);
if (ret) {
dev_err(ov7251->dev, "error configuring PLLs\n");
---
-2.54.0
-
3 files changed, 1189 insertions(+)
create mode 100644 drivers/media/i2c/ov2311.c
-diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig
-index 391c7089b71a..10f470ecf941 100644
--- a/drivers/media/i2c/Kconfig
+++ b/drivers/media/i2c/Kconfig
@@ -454,6 +454,16 @@ config VIDEO_OV13B10
config VIDEO_OV2640
tristate "OmniVision OV2640 sensor support"
help
-diff --git a/drivers/media/i2c/Makefile b/drivers/media/i2c/Makefile
-index 4c1c76e6f3a9..b76ee41a22ef 100644
--- a/drivers/media/i2c/Makefile
+++ b/drivers/media/i2c/Makefile
@@ -94,6 +94,7 @@ obj-$(CONFIG_VIDEO_OV08D10) += ov08d10.o
obj-$(CONFIG_VIDEO_OV2640) += ov2640.o
obj-$(CONFIG_VIDEO_OV2659) += ov2659.o
obj-$(CONFIG_VIDEO_OV2680) += ov2680.o
-diff --git a/drivers/media/i2c/ov2311.c b/drivers/media/i2c/ov2311.c
-new file mode 100644
-index 000000000000..3680561ad779
--- /dev/null
+++ b/drivers/media/i2c/ov2311.c
@@ -0,0 +1,1178 @@
+MODULE_AUTHOR("Dave Stevenson <dave.stevenson@raspberrypi.com");
+MODULE_DESCRIPTION("OmniVision OV2311 sensor driver");
+MODULE_LICENSE("GPL v2");
---
-2.54.0
-
1 file changed, 20 insertions(+)
create mode 100644 Documentation/devicetree/bindings/media/i2c/ad5398.txt
-diff --git a/Documentation/devicetree/bindings/media/i2c/ad5398.txt b/Documentation/devicetree/bindings/media/i2c/ad5398.txt
-new file mode 100644
-index 000000000000..446ac9717598
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/ad5398.txt
@@ -0,0 +1,20 @@
+ VANA-supply = <&vaux4>;
+ };
+
---
-2.54.0
-
3 files changed, 348 insertions(+)
create mode 100644 drivers/media/i2c/ad5398_vcm.c
-diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig
-index 10f470ecf941..59a74bbfee53 100644
--- a/drivers/media/i2c/Kconfig
+++ b/drivers/media/i2c/Kconfig
@@ -843,6 +843,13 @@ menuconfig VIDEO_CAMERA_LENS
config VIDEO_AD5820
tristate "AD5820 lens voice coil support"
depends on GPIOLIB
-diff --git a/drivers/media/i2c/Makefile b/drivers/media/i2c/Makefile
-index b76ee41a22ef..e41fd7a0a669 100644
--- a/drivers/media/i2c/Makefile
+++ b/drivers/media/i2c/Makefile
@@ -3,6 +3,7 @@
obj-$(CONFIG_VIDEO_AD5820) += ad5820.o
obj-$(CONFIG_VIDEO_ADP1653) += adp1653.o
obj-$(CONFIG_VIDEO_ADV7170) += adv7170.o
-diff --git a/drivers/media/i2c/ad5398_vcm.c b/drivers/media/i2c/ad5398_vcm.c
-new file mode 100644
-index 000000000000..649ff0b9e9c8
--- /dev/null
+++ b/drivers/media/i2c/ad5398_vcm.c
@@ -0,0 +1,340 @@
+MODULE_AUTHOR("Dave Stevenson <dave.stevenson@raspberrypi.com>");
+MODULE_DESCRIPTION("AD5398 camera lens driver");
+MODULE_LICENSE("GPL");
---
-2.54.0
-
mm/page_alloc.c | 28 +++++++++++++++++++++++++---
1 file changed, 25 insertions(+), 3 deletions(-)
-diff --git a/mm/page_alloc.c b/mm/page_alloc.c
-index 6288c7e4b971..f5f2bd1589b8 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -237,6 +237,27 @@ EXPORT_SYMBOL(node_states);
#ifdef CONFIG_HUGETLB_PAGE_SIZE_VARIABLE
unsigned int pageblock_order __read_mostly;
#endif
-@@ -2483,12 +2504,13 @@ __rmqueue(struct zone *zone, unsigned int order, int migratetype,
+@@ -2491,12 +2512,13 @@ __rmqueue(struct zone *zone, unsigned in
if (IS_ENABLED(CONFIG_CMA)) {
/*
* Balance movable allocations between regular and CMA areas by
page = __rmqueue_cma_fallback(zone, order);
if (page)
return page;
---
-2.54.0
-
drivers/char/tpm/tpm_tis_spi_main.c | 4 ++++
1 file changed, 4 insertions(+)
-diff --git a/drivers/char/tpm/tpm_tis_spi_main.c b/drivers/char/tpm/tpm_tis_spi_main.c
-index 61b42c83ced8..2a7dee1e1807 100644
--- a/drivers/char/tpm/tpm_tis_spi_main.c
+++ b/drivers/char/tpm/tpm_tis_spi_main.c
-@@ -350,7 +350,11 @@ static struct spi_driver tpm_tis_spi_driver = {
+@@ -350,7 +350,11 @@ static struct spi_driver tpm_tis_spi_dri
.pm = &tpm_tis_pm,
.of_match_table = of_match_ptr(of_tis_spi_match),
.acpi_match_table = ACPI_PTR(acpi_tis_spi_match),
},
.probe = tpm_tis_spi_driver_probe,
.remove = tpm_tis_spi_remove,
---
-2.54.0
-
Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++
1 file changed, 2 insertions(+)
-diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
-index 477612fd138f..ed931c894ccd 100644
--- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
+++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
@@ -160,6 +160,8 @@ patternProperties:
"^arm,.*":
description: ARM Ltd.
"^armadeus,.*":
---
-2.54.0
-
2 files changed, 120 insertions(+)
create mode 100644 Documentation/devicetree/bindings/media/i2c/arducam-pivariety.yaml
-diff --git a/Documentation/devicetree/bindings/media/i2c/arducam-pivariety.yaml b/Documentation/devicetree/bindings/media/i2c/arducam-pivariety.yaml
-new file mode 100644
-index 000000000000..92bf4ff32eb4
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/arducam-pivariety.yaml
@@ -0,0 +1,112 @@
+ };
+
+...
-diff --git a/MAINTAINERS b/MAINTAINERS
-index 0fc7155157d3..2b6fcbb41576 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1996,6 +1996,14 @@ S: Maintained
ARM AND ARM64 SoC SUB-ARCHITECTURES (COMMON PARTS)
M: Arnd Bergmann <arnd@arndb.de>
M: Krzysztof Kozlowski <krzk@kernel.org>
---
-2.54.0
-
create mode 100644 drivers/media/i2c/arducam-pivariety.c
create mode 100644 drivers/media/i2c/arducam-pivariety.h
-diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig
-index 59a74bbfee53..6bc200a9ff99 100644
--- a/drivers/media/i2c/Kconfig
+++ b/drivers/media/i2c/Kconfig
@@ -110,6 +110,17 @@ config VIDEO_GC2145
config VIDEO_HI556
tristate "Hynix Hi-556 sensor support"
help
-diff --git a/drivers/media/i2c/Makefile b/drivers/media/i2c/Makefile
-index e41fd7a0a669..188c12655f93 100644
--- a/drivers/media/i2c/Makefile
+++ b/drivers/media/i2c/Makefile
@@ -21,6 +21,7 @@ obj-$(CONFIG_VIDEO_AK881X) += ak881x.o
obj-$(CONFIG_VIDEO_BT819) += bt819.o
obj-$(CONFIG_VIDEO_BT856) += bt856.o
obj-$(CONFIG_VIDEO_BT866) += bt866.o
-diff --git a/drivers/media/i2c/arducam-pivariety.c b/drivers/media/i2c/arducam-pivariety.c
-new file mode 100644
-index 000000000000..945c462662db
--- /dev/null
+++ b/drivers/media/i2c/arducam-pivariety.c
@@ -0,0 +1,1475 @@
+MODULE_AUTHOR("Lee Jackson <info@arducam.com>");
+MODULE_DESCRIPTION("Arducam Pivariety v4l2 driver");
+MODULE_LICENSE("GPL v2");
-diff --git a/drivers/media/i2c/arducam-pivariety.h b/drivers/media/i2c/arducam-pivariety.h
-new file mode 100644
-index 000000000000..99d5ada309e8
--- /dev/null
+++ b/drivers/media/i2c/arducam-pivariety.h
@@ -0,0 +1,110 @@
+};
+
+#endif
---
-2.54.0
-
drivers/thermal/broadcom/bcm2711_thermal.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/thermal/broadcom/bcm2711_thermal.c b/drivers/thermal/broadcom/bcm2711_thermal.c
-index 03ac2d02e9d4..de581c31a8f7 100644
--- a/drivers/thermal/broadcom/bcm2711_thermal.c
+++ b/drivers/thermal/broadcom/bcm2711_thermal.c
-@@ -92,7 +92,7 @@ static int bcm2711_thermal_probe(struct platform_device *pdev)
+@@ -92,7 +92,7 @@ static int bcm2711_thermal_probe(struct
&bcm2711_thermal_of_ops);
if (IS_ERR(thermal)) {
ret = PTR_ERR(thermal);
return ret;
}
---
-2.54.0
-
drivers/hwmon/emc2305.c | 106 ++++++++++++++++++++++++++++++++++++++--
1 file changed, 103 insertions(+), 3 deletions(-)
-diff --git a/drivers/hwmon/emc2305.c b/drivers/hwmon/emc2305.c
-index 67e82021da21..2bbe656ef686 100644
--- a/drivers/hwmon/emc2305.c
+++ b/drivers/hwmon/emc2305.c
@@ -15,6 +15,8 @@
u16 pwm_freq[EMC2305_PWM_MAX];
struct emc2305_cdev_data cdev_data[EMC2305_PWM_MAX];
};
-@@ -288,7 +291,7 @@ static int emc2305_set_pwm(struct device *dev, long val, int channel)
+@@ -288,7 +291,7 @@ static int emc2305_set_pwm(struct device
struct i2c_client *client = data->client;
int ret;
return -EINVAL;
ret = i2c_smbus_write_byte_data(client, EMC2305_REG_FAN_DRIVE(channel), val);
-@@ -299,6 +302,49 @@ static int emc2305_set_pwm(struct device *dev, long val, int channel)
+@@ -299,6 +302,49 @@ static int emc2305_set_pwm(struct device
return 0;
}
static int emc2305_set_single_tz(struct device *dev, struct device_node *fan_node, int idx)
{
struct emc2305_data *data = dev_get_drvdata(dev);
-@@ -308,10 +354,16 @@ static int emc2305_set_single_tz(struct device *dev, struct device_node *fan_nod
+@@ -308,10 +354,16 @@ static int emc2305_set_single_tz(struct
cdev_idx = (idx) ? idx - 1 : 0;
pwm = data->pwm_min[cdev_idx];
if (IS_ERR(data->cdev_data[cdev_idx].cdev)) {
dev_err(dev, "Failed to register cooling device %s\n", emc2305_fan_name[idx]);
-@@ -344,6 +396,19 @@ static int emc2305_set_single_tz(struct device *dev, struct device_node *fan_nod
+@@ -344,6 +396,19 @@ static int emc2305_set_single_tz(struct
return 0;
}
static int emc2305_set_tz(struct device *dev)
{
struct emc2305_data *data = dev_get_drvdata(dev);
-@@ -355,9 +420,13 @@ static int emc2305_set_tz(struct device *dev)
+@@ -355,9 +420,13 @@ static int emc2305_set_tz(struct device
for (i = 0; i < data->pwm_num; i++) {
ret = emc2305_set_single_tz(dev, dev->of_node, i + 1);
if (ret)
}
static umode_t
-@@ -656,6 +725,7 @@ static int emc2305_probe(struct i2c_client *client)
+@@ -655,6 +724,7 @@ static int emc2305_probe(struct i2c_clie
data->pwm_min[i] = pdata->pwm_min[i];
data->pwm_freq[i] = pdata->pwm_freq[i];
}
} else {
data->max_state = EMC2305_FAN_MAX_STATE;
data->pwm_separate = false;
-@@ -665,12 +735,24 @@ static int emc2305_probe(struct i2c_client *client)
+@@ -664,12 +734,24 @@ static int emc2305_probe(struct i2c_clie
data->pwm_min[i] = EMC2305_FAN_MIN;
data->pwm_freq[i] = base_freq_table[3];
}
}
data->hwmon_dev = devm_hwmon_device_register_with_info(dev, "emc2305", data,
-@@ -714,21 +796,39 @@ static int emc2305_probe(struct i2c_client *client)
+@@ -711,21 +793,39 @@ static int emc2305_probe(struct i2c_clie
return ret;
}
.id_table = emc2305_ids,
};
---
-2.54.0
-
drivers/char/random.c | 8 ++++++++
1 file changed, 8 insertions(+)
-diff --git a/drivers/char/random.c b/drivers/char/random.c
-index f344f67c83f4..80ed1d593f27 100644
--- a/drivers/char/random.c
+++ b/drivers/char/random.c
-@@ -859,6 +859,14 @@ void __init random_init_early(const char *command_line)
+@@ -859,6 +859,14 @@ void __init random_init_early(const char
unsigned long entropy[BLAKE2S_BLOCK_SIZE / sizeof(long)];
size_t i, longs, arch_bits;
#if defined(LATENT_ENTROPY_PLUGIN)
static const u8 compiletime_seed[BLAKE2S_BLOCK_SIZE] __initconst __latent_entropy;
_mix_pool_bytes(compiletime_seed, sizeof(compiletime_seed));
---
-2.54.0
-
2 files changed, 123 insertions(+)
create mode 100644 Documentation/devicetree/bindings/media/i2c/arducam,64mp.yaml
-diff --git a/Documentation/devicetree/bindings/media/i2c/arducam,64mp.yaml b/Documentation/devicetree/bindings/media/i2c/arducam,64mp.yaml
-new file mode 100644
-index 000000000000..b71a19782f97
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/arducam,64mp.yaml
@@ -0,0 +1,115 @@
+ };
+
+...
-diff --git a/MAINTAINERS b/MAINTAINERS
-index 2b6fcbb41576..cdd4b9ce6079 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1996,6 +1996,14 @@ S: Maintained
ARDUCAM PIVARIETY SENSOR DRIVER
M: Arducam Kernel Maintenance <info@arducam.com>
L: linux-media@vger.kernel.org
---
-2.54.0
-
3 files changed, 2630 insertions(+)
create mode 100644 drivers/media/i2c/arducam_64mp.c
-diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig
-index 6bc200a9ff99..94f0982202bb 100644
--- a/drivers/media/i2c/Kconfig
+++ b/drivers/media/i2c/Kconfig
@@ -110,6 +110,17 @@ config VIDEO_GC2145
config VIDEO_ARDUCAM_PIVARIETY
tristate "Arducam Pivariety sensor support"
depends on I2C && VIDEO_DEV
-diff --git a/drivers/media/i2c/Makefile b/drivers/media/i2c/Makefile
-index 188c12655f93..58ea6808c961 100644
--- a/drivers/media/i2c/Makefile
+++ b/drivers/media/i2c/Makefile
@@ -21,6 +21,7 @@ obj-$(CONFIG_VIDEO_AK881X) += ak881x.o
obj-$(CONFIG_VIDEO_ARDUCAM_PIVARIETY) += arducam-pivariety.o
obj-$(CONFIG_VIDEO_BT819) += bt819.o
obj-$(CONFIG_VIDEO_BT856) += bt856.o
-diff --git a/drivers/media/i2c/arducam_64mp.c b/drivers/media/i2c/arducam_64mp.c
-new file mode 100644
-index 000000000000..0562a8b1eb0f
--- /dev/null
+++ b/drivers/media/i2c/arducam_64mp.c
@@ -0,0 +1,2618 @@
+MODULE_AUTHOR("Lee Jackson <info@arducam.com>");
+MODULE_DESCRIPTION("Arducam 64MP sensor driver");
+MODULE_LICENSE("GPL v2");
---
-2.54.0
-
.../vc04_services/bcm2835-audio/bcm2835.h | 6 +-
3 files changed, 106 insertions(+), 14 deletions(-)
-diff --git a/drivers/staging/vc04_services/bcm2835-audio/bcm2835-pcm.c b/drivers/staging/vc04_services/bcm2835-audio/bcm2835-pcm.c
-index 68e8d491a7ec..29e773fdd7ad 100644
--- a/drivers/staging/vc04_services/bcm2835-audio/bcm2835-pcm.c
+++ b/drivers/staging/vc04_services/bcm2835-audio/bcm2835-pcm.c
-@@ -321,10 +321,11 @@ static const struct snd_pcm_ops snd_bcm2835_playback_spdif_ops = {
+@@ -321,10 +321,11 @@ static const struct snd_pcm_ops snd_bcm2
/* create a pcm device */
int snd_bcm2835_new_pcm(struct bcm2835_chip *chip, const char *name,
int err;
err = snd_pcm_new(chip->card, name, idx, numchannels, 0, &pcm);
-diff --git a/drivers/staging/vc04_services/bcm2835-audio/bcm2835.c b/drivers/staging/vc04_services/bcm2835-audio/bcm2835.c
-index b74cb104e9de..0b2e0e8b2eec 100644
--- a/drivers/staging/vc04_services/bcm2835-audio/bcm2835.c
+++ b/drivers/staging/vc04_services/bcm2835-audio/bcm2835.c
@@ -5,11 +5,13 @@
static bool enable_headphones = true;
static int num_channels = MAX_SUBSTREAMS;
-@@ -65,14 +67,13 @@ static int bcm2835_audio_dual_newpcm(struct bcm2835_chip *chip,
+@@ -65,14 +67,13 @@ static int bcm2835_audio_dual_newpcm(str
u32 numchannels)
{
int err;
if (err)
return err;
-@@ -84,20 +85,33 @@ static int bcm2835_audio_simple_newpcm(struct bcm2835_chip *chip,
+@@ -84,20 +85,33 @@ static int bcm2835_audio_simple_newpcm(s
enum snd_bcm2835_route route,
u32 numchannels)
{
},
{
.audio_driver = &bcm2835_audio_headphones,
-@@ -268,10 +286,70 @@ static int snd_add_child_devices(struct device *device, u32 numchans)
+@@ -268,10 +286,70 @@ static int snd_add_child_devices(struct
return 0;
}
err = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(32));
if (err) {
-@@ -285,6 +363,17 @@ static int snd_bcm2835_alsa_probe(struct vchiq_device *device)
+@@ -285,6 +363,17 @@ static int snd_bcm2835_alsa_probe(struct
num_channels);
}
err = bcm2835_devm_add_vchi_ctx(dev);
if (err)
return err;
-diff --git a/drivers/staging/vc04_services/bcm2835-audio/bcm2835.h b/drivers/staging/vc04_services/bcm2835-audio/bcm2835.h
-index 49ec5b496edb..8e0aa1b5a58a 100644
--- a/drivers/staging/vc04_services/bcm2835-audio/bcm2835.h
+++ b/drivers/staging/vc04_services/bcm2835-audio/bcm2835.h
@@ -34,7 +34,8 @@ enum {
u32 numchannels, bool spdif);
int snd_bcm2835_new_hdmi_ctl(struct bcm2835_chip *chip);
---
-2.54.0
-
drivers/media/platform/video-mux.c | 73 ++++++++++++++++++++++++++++--
1 file changed, 69 insertions(+), 4 deletions(-)
-diff --git a/drivers/media/platform/video-mux.c b/drivers/media/platform/video-mux.c
-index cba34893258a..ddaae5550e46 100644
--- a/drivers/media/platform/video-mux.c
+++ b/drivers/media/platform/video-mux.c
@@ -20,10 +20,27 @@
struct mux_control *mux;
struct mutex lock;
int active;
-@@ -301,9 +318,33 @@ static int video_mux_init_state(struct v4l2_subdev *sd,
+@@ -301,9 +318,33 @@ static int video_mux_init_state(struct v
return 0;
}
};
static const struct v4l2_subdev_ops video_mux_subdev_ops = {
-@@ -320,6 +361,9 @@ static int video_mux_notify_bound(struct v4l2_async_notifier *notifier,
+@@ -320,6 +361,9 @@ static int video_mux_notify_bound(struct
struct v4l2_async_connection *asd)
{
struct video_mux *vmux = notifier_to_video_mux(notifier);
return v4l2_create_fwnode_links(sd, &vmux->subdev);
}
-@@ -337,7 +381,7 @@ static int video_mux_async_register(struct video_mux *vmux,
+@@ -337,7 +381,7 @@ static int video_mux_async_register(stru
v4l2_async_subdev_nf_init(&vmux->notifier, &vmux->subdev);
for (i = 0; i < num_input_pads; i++) {
struct fwnode_handle *ep, *remote_ep;
ep = fwnode_graph_get_endpoint_by_id(
-@@ -355,8 +399,7 @@ static int video_mux_async_register(struct video_mux *vmux,
+@@ -355,8 +399,7 @@ static int video_mux_async_register(stru
fwnode_handle_put(remote_ep);
asd = v4l2_async_nf_add_fwnode_remote(&vmux->notifier, ep,
fwnode_handle_put(ep);
if (IS_ERR(asd)) {
-@@ -365,6 +408,8 @@ static int video_mux_async_register(struct video_mux *vmux,
+@@ -365,6 +408,8 @@ static int video_mux_async_register(stru
if (ret != -EEXIST)
goto err_nf_cleanup;
}
}
vmux->notifier.ops = &video_mux_notify_ops;
-@@ -390,6 +435,9 @@ static int video_mux_probe(struct platform_device *pdev)
+@@ -390,6 +435,9 @@ static int video_mux_probe(struct platfo
{
struct device_node *np = pdev->dev.of_node;
struct device *dev = &pdev->dev;
struct device_node *ep;
struct video_mux *vmux;
unsigned int num_pads = 0;
-@@ -437,10 +485,27 @@ static int video_mux_probe(struct platform_device *pdev)
+@@ -437,10 +485,27 @@ static int video_mux_probe(struct platfo
if (!vmux->pads)
return -ENOMEM;
vmux->subdev.entity.function = MEDIA_ENT_F_VID_MUX;
ret = media_entity_pads_init(&vmux->subdev.entity, num_pads,
vmux->pads);
---
-2.54.0
-
drivers/media/i2c/adv7180.c | 26 +++++++++++++++++++++++++-
1 file changed, 25 insertions(+), 1 deletion(-)
-diff --git a/drivers/media/i2c/adv7180.c b/drivers/media/i2c/adv7180.c
-index 101ab60ed665..e2bafe475242 100644
--- a/drivers/media/i2c/adv7180.c
+++ b/drivers/media/i2c/adv7180.c
@@ -189,6 +189,10 @@
struct adv7180_state;
#define ADV7180_FLAG_RESET_POWERED BIT(0)
-@@ -434,10 +438,24 @@ static int adv7180_s_routing(struct v4l2_subdev *sd, u32 input,
+@@ -434,10 +438,24 @@ out:
return ret;
}
if (ret)
return ret;
-@@ -465,6 +483,8 @@ static int adv7180_s_std(struct v4l2_subdev *sd, v4l2_std_id std)
+@@ -465,6 +483,8 @@ static int adv7180_s_std(struct v4l2_sub
struct adv7180_state *state = to_state(sd);
int ret;
guard(mutex)(&state->mutex);
/* Make sure we can support this std */
-@@ -481,6 +501,8 @@ static int adv7180_g_std(struct v4l2_subdev *sd, v4l2_std_id *norm)
+@@ -481,6 +501,8 @@ static int adv7180_g_std(struct v4l2_sub
{
struct adv7180_state *state = to_state(sd);
*norm = state->curr_norm;
return 0;
-@@ -939,6 +961,8 @@ static int adv7180_s_stream(struct v4l2_subdev *sd, int enable)
+@@ -939,6 +961,8 @@ static int adv7180_s_stream(struct v4l2_
struct adv7180_state *state = to_state(sd);
int ret;
/* Must wait until querystd released the lock */
guard(mutex)(&state->mutex);
---
-2.54.0
-
drivers/media/i2c/ov7251.c | 35 ++++++++++++++++++++++++++++++++---
1 file changed, 32 insertions(+), 3 deletions(-)
-diff --git a/drivers/media/i2c/ov7251.c b/drivers/media/i2c/ov7251.c
-index 77e00d79e4b7..a9c4e04443d1 100644
--- a/drivers/media/i2c/ov7251.c
+++ b/drivers/media/i2c/ov7251.c
@@ -23,6 +23,10 @@
#define OV7251_SC_MODE_SELECT 0x0100
#define OV7251_SC_MODE_SELECT_SW_STANDBY 0x0
#define OV7251_SC_MODE_SELECT_STREAMING 0x1
-@@ -525,7 +529,6 @@ static const struct reg_value ov7251_setting_vga_90fps[] = {
+@@ -525,7 +529,6 @@ static const struct reg_value ov7251_set
{ 0x3662, 0x01 },
{ 0x3663, 0x70 },
{ 0x3664, 0x50 },
{ 0x3669, 0x1a },
{ 0x366a, 0x00 },
{ 0x366b, 0x50 },
-@@ -592,9 +595,8 @@ static const struct reg_value ov7251_setting_vga_90fps[] = {
+@@ -592,9 +595,8 @@ static const struct reg_value ov7251_set
{ 0x3c00, 0x89 },
{ 0x3c01, 0x63 },
{ 0x3c02, 0x01 },
{ 0x3c06, 0x00 },
{ 0x3c07, 0x06 },
{ 0x3c0c, 0x01 },
-@@ -624,6 +626,16 @@ static const struct reg_value ov7251_setting_vga_90fps[] = {
+@@ -624,6 +626,16 @@ static const struct reg_value ov7251_set
{ 0x5001, 0x80 },
};
static const unsigned long supported_xclk_rates[] = {
[OV7251_19_2_MHZ] = 19200000,
[OV7251_24_MHZ] = 24000000,
-@@ -1376,6 +1388,23 @@ static int ov7251_s_stream(struct v4l2_subdev *subdev, int enable)
+@@ -1376,6 +1388,23 @@ static int ov7251_s_stream(struct v4l2_s
dev_err(ov7251->dev, "could not sync v4l2 controls\n");
goto err_power_down;
}
ret = ov7251_write_reg(ov7251, OV7251_SC_MODE_SELECT,
OV7251_SC_MODE_SELECT_STREAMING);
if (ret)
---
-2.54.0
-
drivers/net/ethernet/broadcom/genet/bcmgenet.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
-diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
-index d095968730c5..94646b73e4d0 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
-@@ -68,6 +68,9 @@ static void bcmgenet_set_rx_mode(struct net_device *dev);
+@@ -68,6 +68,9 @@ static void bcmgenet_set_rx_mode(struct
static bool skip_umac_reset = false;
module_param(skip_umac_reset, bool, 0444);
MODULE_PARM_DESC(skip_umac_reset, "Skip UMAC reset step");
static inline void bcmgenet_writel(u32 value, void __iomem *offset)
{
-@@ -3364,6 +3367,17 @@ static int bcmgenet_open(struct net_device *dev)
+@@ -3365,6 +3368,17 @@ static int bcmgenet_open(struct net_devi
bcmgenet_phy_pause_set(dev, priv->rx_pause, priv->tx_pause);
bcmgenet_netif_start(dev);
netif_tx_start_all_queues(dev);
---
-2.54.0
-
.../bindings/media/i2c/dongwoon,dw9807-vcm.yaml | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
-diff --git a/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9807-vcm.yaml b/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9807-vcm.yaml
-index aae246ca3fcf..1be649611ba2 100644
--- a/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9807-vcm.yaml
+++ b/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9807-vcm.yaml
@@ -5,18 +5,24 @@
reg:
maxItems: 1
---
-2.54.0
-
drivers/media/i2c/dw9807-vcm.c | 113 +++++++++++++++++++++++++--------
1 file changed, 86 insertions(+), 27 deletions(-)
-diff --git a/drivers/media/i2c/dw9807-vcm.c b/drivers/media/i2c/dw9807-vcm.c
-index 4148009e0e01..4e62e092e9c8 100644
--- a/drivers/media/i2c/dw9807-vcm.c
+++ b/drivers/media/i2c/dw9807-vcm.c
@@ -1,6 +1,14 @@
};
static inline struct dw9807_device *sd_to_dw9807_vcm(
-@@ -109,6 +123,40 @@ static int dw9807_set_dac(struct i2c_client *client, u16 data)
+@@ -109,6 +123,40 @@ static int dw9807_set_dac(struct i2c_cli
return 0;
}
static int dw9807_set_ctrl(struct v4l2_ctrl *ctrl)
{
struct dw9807_device *dev_vcm = container_of(ctrl->handler,
-@@ -118,7 +166,7 @@ static int dw9807_set_ctrl(struct v4l2_ctrl *ctrl)
+@@ -118,7 +166,7 @@ static int dw9807_set_ctrl(struct v4l2_c
struct i2c_client *client = v4l2_get_subdevdata(&dev_vcm->sd);
dev_vcm->current_val = ctrl->val;
}
return -EINVAL;
-@@ -163,7 +211,8 @@ static int dw9807_init_controls(struct dw9807_device *dev_vcm)
+@@ -163,7 +211,8 @@ static int dw9807_init_controls(struct d
v4l2_ctrl_handler_init(hdl, 1);
v4l2_ctrl_new_std(hdl, ops, V4L2_CID_FOCUS_ABSOLUTE,
dev_vcm->sd.ctrl_handler = hdl;
if (hdl->error) {
-@@ -175,9 +224,31 @@ static int dw9807_init_controls(struct dw9807_device *dev_vcm)
+@@ -175,9 +224,31 @@ static int dw9807_init_controls(struct d
return 0;
}
int rval;
dw9807_dev = devm_kzalloc(&client->dev, sizeof(*dw9807_dev),
-@@ -185,6 +256,12 @@ static int dw9807_probe(struct i2c_client *client)
+@@ -185,6 +256,12 @@ static int dw9807_probe(struct i2c_clien
if (dw9807_dev == NULL)
return -ENOMEM;
v4l2_i2c_subdev_init(&dw9807_dev->sd, client, &dw9807_ops);
dw9807_dev->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
dw9807_dev->sd.internal_ops = &dw9807_int_ops;
-@@ -203,7 +280,8 @@ static int dw9807_probe(struct i2c_client *client)
+@@ -203,7 +280,8 @@ static int dw9807_probe(struct i2c_clien
if (rval < 0)
goto err_cleanup;
pm_runtime_enable(&client->dev);
pm_runtime_idle(&client->dev);
-@@ -237,15 +315,10 @@ static int __maybe_unused dw9807_vcm_suspend(struct device *dev)
+@@ -237,15 +315,10 @@ static int __maybe_unused dw9807_vcm_sus
struct v4l2_subdev *sd = i2c_get_clientdata(client);
struct dw9807_device *dw9807_dev = sd_to_dw9807_vcm(sd);
const char tx_data[2] = { DW9807_CTL_ADDR, 0x01 };
/* Power down */
ret = i2c_master_send(client, tx_data, sizeof(tx_data));
-@@ -269,7 +342,7 @@ static int __maybe_unused dw9807_vcm_resume(struct device *dev)
+@@ -269,7 +342,7 @@ static int __maybe_unused dw9807_vcm_re
struct v4l2_subdev *sd = i2c_get_clientdata(client);
struct dw9807_device *dw9807_dev = sd_to_dw9807_vcm(sd);
const char tx_data[2] = { DW9807_CTL_ADDR, 0x00 };
/* Power on */
ret = i2c_master_send(client, tx_data, sizeof(tx_data));
-@@ -278,25 +351,11 @@ static int __maybe_unused dw9807_vcm_resume(struct device *dev)
+@@ -278,25 +351,11 @@ static int __maybe_unused dw9807_vcm_re
return ret;
}
MODULE_DEVICE_TABLE(of, dw9807_of_table);
static const struct dev_pm_ops dw9807_pm_ops = {
---
-2.54.0
-
drivers/media/i2c/dw9807-vcm.c | 4 ++++
2 files changed, 8 insertions(+)
-diff --git a/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9807-vcm.yaml b/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9807-vcm.yaml
-index 1be649611ba2..6de07543e973 100644
--- a/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9807-vcm.yaml
+++ b/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9807-vcm.yaml
@@ -27,6 +27,10 @@ properties:
required:
- compatible
- reg
-diff --git a/drivers/media/i2c/dw9807-vcm.c b/drivers/media/i2c/dw9807-vcm.c
-index 4e62e092e9c8..3ecdbee66b60 100644
--- a/drivers/media/i2c/dw9807-vcm.c
+++ b/drivers/media/i2c/dw9807-vcm.c
-@@ -299,6 +299,10 @@ static void dw9807_remove(struct i2c_client *client)
+@@ -299,6 +299,10 @@ static void dw9807_remove(struct i2c_cli
struct v4l2_subdev *sd = i2c_get_clientdata(client);
struct dw9807_device *dw9807_dev = sd_to_dw9807_vcm(sd);
pm_runtime_disable(&client->dev);
dw9807_subdev_cleanup(dw9807_dev);
---
-2.54.0
-
drivers/media/i2c/dw9807-vcm.c | 113 ++++++++++++++++++++++++++-------
1 file changed, 90 insertions(+), 23 deletions(-)
-diff --git a/drivers/media/i2c/dw9807-vcm.c b/drivers/media/i2c/dw9807-vcm.c
-index 3ecdbee66b60..5e7f5404178e 100644
--- a/drivers/media/i2c/dw9807-vcm.c
+++ b/drivers/media/i2c/dw9807-vcm.c
@@ -15,6 +15,7 @@
};
static inline struct dw9807_device *sd_to_dw9807_vcm(
-@@ -157,6 +163,66 @@ static int dw9807_ramp(struct i2c_client *client, int start, int end)
+@@ -157,6 +163,66 @@ static int dw9807_ramp(struct i2c_client
return ret;
}
static int dw9807_set_ctrl(struct v4l2_ctrl *ctrl)
{
struct dw9807_device *dev_vcm = container_of(ctrl->handler,
-@@ -256,6 +322,24 @@ static int dw9807_probe(struct i2c_client *client)
+@@ -256,6 +322,24 @@ static int dw9807_probe(struct i2c_clien
if (dw9807_dev == NULL)
return -ENOMEM;
cfg = (const struct dw9807_cfg *)i2c_get_match_data(client);
if (cfg) {
dw9807_dev->idle_pos = cfg->idle_pos;
-@@ -318,20 +402,11 @@ static int __maybe_unused dw9807_vcm_suspend(struct device *dev)
+@@ -318,20 +402,11 @@ static int __maybe_unused dw9807_vcm_sus
struct i2c_client *client = to_i2c_client(dev);
struct v4l2_subdev *sd = i2c_get_clientdata(client);
struct dw9807_device *dw9807_dev = sd_to_dw9807_vcm(sd);
}
/*
-@@ -345,19 +420,11 @@ static int __maybe_unused dw9807_vcm_resume(struct device *dev)
+@@ -345,19 +420,11 @@ static int __maybe_unused dw9807_vcm_re
struct i2c_client *client = to_i2c_client(dev);
struct v4l2_subdev *sd = i2c_get_clientdata(client);
struct dw9807_device *dw9807_dev = sd_to_dw9807_vcm(sd);
}
MODULE_DEVICE_TABLE(of, dw9807_of_table);
---
-2.54.0
-
drivers/media/i2c/dw9807-vcm.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
-diff --git a/drivers/media/i2c/dw9807-vcm.c b/drivers/media/i2c/dw9807-vcm.c
-index 5e7f5404178e..e4966e9b0edd 100644
--- a/drivers/media/i2c/dw9807-vcm.c
+++ b/drivers/media/i2c/dw9807-vcm.c
@@ -62,6 +62,7 @@ struct dw9807_device {
};
static inline struct dw9807_device *sd_to_dw9807_vcm(
-@@ -176,6 +177,8 @@ static int dw9807_active(struct dw9807_device *dw9807_dev)
+@@ -176,6 +177,8 @@ static int dw9807_active(struct dw9807_d
return ret;
}
return dw9807_ramp(client, dw9807_dev->idle_pos, dw9807_dev->current_val);
}
-@@ -230,9 +233,11 @@ static int dw9807_set_ctrl(struct v4l2_ctrl *ctrl)
+@@ -230,9 +233,11 @@ static int dw9807_set_ctrl(struct v4l2_c
if (ctrl->id == V4L2_CID_FOCUS_ABSOLUTE) {
struct i2c_client *client = v4l2_get_subdevdata(&dev_vcm->sd);
}
return -EINVAL;
---
-2.54.0
-
2 files changed, 127 insertions(+)
create mode 100644 Documentation/devicetree/bindings/media/i2c/imx708.yaml
-diff --git a/Documentation/devicetree/bindings/media/i2c/imx708.yaml b/Documentation/devicetree/bindings/media/i2c/imx708.yaml
-new file mode 100644
-index 000000000000..4b8645f6880c
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/imx708.yaml
@@ -0,0 +1,119 @@
+ };
+
+...
-diff --git a/MAINTAINERS b/MAINTAINERS
-index cdd4b9ce6079..5c767edb271b 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -24064,6 +24064,14 @@ T: git git://linuxtv.org/media_tree.git
+@@ -24073,6 +24073,14 @@ T: git git://linuxtv.org/media_tree.git
F: Documentation/devicetree/bindings/media/i2c/imx519.yaml
F: drivers/media/i2c/imx519.c
SONY MEMORYSTICK SUBSYSTEM
M: Maxim Levitsky <maximlevitsky@gmail.com>
M: Alex Dubov <oakad@yahoo.com>
---
-2.54.0
-
delete mode 100644 Documentation/devicetree/bindings/media/i2c/imx708.yaml
create mode 100644 Documentation/devicetree/bindings/media/i2c/sony,imx708.yaml
-diff --git a/Documentation/devicetree/bindings/media/i2c/imx708.yaml b/Documentation/devicetree/bindings/media/i2c/imx708.yaml
-deleted file mode 100644
-index 4b8645f6880c..000000000000
--- a/Documentation/devicetree/bindings/media/i2c/imx708.yaml
+++ /dev/null
@@ -1,119 +0,0 @@
- };
-
-...
-diff --git a/Documentation/devicetree/bindings/media/i2c/sony,imx708.yaml b/Documentation/devicetree/bindings/media/i2c/sony,imx708.yaml
-new file mode 100644
-index 000000000000..286aad2e8c69
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/sony,imx708.yaml
@@ -0,0 +1,128 @@
+ };
+ };
+...
-diff --git a/MAINTAINERS b/MAINTAINERS
-index 5c767edb271b..8c53bc8da9f4 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -24069,7 +24069,7 @@ M: Raspberry Pi Kernel Maintenance <kernel-list@raspberrypi.com>
+@@ -24078,7 +24078,7 @@ M: Raspberry Pi Kernel Maintenance <kern
L: linux-media@vger.kernel.org
S: Maintained
T: git git://linuxtv.org/media_tree.git
F: drivers/media/i2c/imx708.c
SONY MEMORYSTICK SUBSYSTEM
---
-2.54.0
-
3 files changed, 2148 insertions(+)
create mode 100644 drivers/media/i2c/imx708.c
-diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig
-index 94f0982202bb..e000055ad199 100644
--- a/drivers/media/i2c/Kconfig
+++ b/drivers/media/i2c/Kconfig
@@ -324,6 +324,19 @@ config VIDEO_IMX519
config VIDEO_MAX9271_LIB
tristate
-diff --git a/drivers/media/i2c/Makefile b/drivers/media/i2c/Makefile
-index 58ea6808c961..b21830757b00 100644
--- a/drivers/media/i2c/Makefile
+++ b/drivers/media/i2c/Makefile
@@ -65,6 +65,7 @@ obj-$(CONFIG_VIDEO_IMX412) += imx412.o
obj-$(CONFIG_VIDEO_IR_I2C) += ir-kbd-i2c.o
obj-$(CONFIG_VIDEO_IRS1125) += irs1125.o
obj-$(CONFIG_VIDEO_ISL7998X) += isl7998x.o
-diff --git a/drivers/media/i2c/imx708.c b/drivers/media/i2c/imx708.c
-new file mode 100644
-index 000000000000..6ab38e6a30e5
--- /dev/null
+++ b/drivers/media/i2c/imx708.c
@@ -0,0 +1,2134 @@
+MODULE_AUTHOR("David Plowman <david.plowman@raspberrypi.com>");
+MODULE_DESCRIPTION("Sony IMX708 sensor driver");
+MODULE_LICENSE("GPL v2");
---
-2.54.0
-
drivers/iio/adc/mcp3422.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
-diff --git a/drivers/iio/adc/mcp3422.c b/drivers/iio/adc/mcp3422.c
-index 50834fdcf738..e27813611a64 100644
--- a/drivers/iio/adc/mcp3422.c
+++ b/drivers/iio/adc/mcp3422.c
-@@ -407,7 +407,14 @@ static const struct i2c_device_id mcp3422_id[] = {
+@@ -407,7 +407,14 @@ static const struct i2c_device_id mcp342
MODULE_DEVICE_TABLE(i2c, mcp3422_id);
static const struct of_device_id mcp3422_of_match[] = {
{ }
};
MODULE_DEVICE_TABLE(of, mcp3422_of_match);
---
-2.54.0
-
drivers/gpio/gpio-pca953x.c | 1 +
1 file changed, 1 insertion(+)
-diff --git a/drivers/gpio/gpio-pca953x.c b/drivers/gpio/gpio-pca953x.c
-index f7daeadaea57..ac52ba9573f0 100644
--- a/drivers/gpio/gpio-pca953x.c
+++ b/drivers/gpio/gpio-pca953x.c
-@@ -1468,6 +1468,7 @@ static const struct of_device_id pca953x_dt_ids[] = {
+@@ -1468,6 +1468,7 @@ static const struct of_device_id pca953x
{ .compatible = "ti,tca9535", .data = OF_953X(16, PCA_INT), },
{ .compatible = "ti,tca9538", .data = OF_953X( 8, PCA_INT), },
{ .compatible = "ti,tca9539", .data = OF_953X(16, PCA_INT), },
{ .compatible = "ti,tcal6408", .data = OF_953X( 8, PCA_LATCH_INT), },
{ .compatible = "ti,tcal6416", .data = OF_953X(16, PCA_LATCH_INT), },
---
-2.54.0
-
drivers/hwmon/aht10.c | 7 +++++++
1 file changed, 7 insertions(+)
-diff --git a/drivers/hwmon/aht10.c b/drivers/hwmon/aht10.c
-index 7ba00bafb57d..8bb037525ef0 100644
--- a/drivers/hwmon/aht10.c
+++ b/drivers/hwmon/aht10.c
-@@ -62,6 +62,12 @@ static const struct i2c_device_id aht10_id[] = {
+@@ -62,6 +62,12 @@ static const struct i2c_device_id aht10_
};
MODULE_DEVICE_TABLE(i2c, aht10_id);
/**
* struct aht10_data - All the data required to operate an AHT10/AHT20 chip
* @client: the i2c client associated with the AHT10/AHT20
-@@ -395,6 +401,7 @@ static int aht10_probe(struct i2c_client *client)
+@@ -395,6 +401,7 @@ static int aht10_probe(struct i2c_client
static struct i2c_driver aht10_driver = {
.driver = {
.name = "aht10",
},
.probe = aht10_probe,
.id_table = aht10_id,
---
-2.54.0
-
drivers/hwmon/ds1621.c | 10 ++++++++++
1 file changed, 10 insertions(+)
-diff --git a/drivers/hwmon/ds1621.c b/drivers/hwmon/ds1621.c
-index 42ec34cb8a5f..30d2a771054f 100644
--- a/drivers/hwmon/ds1621.c
+++ b/drivers/hwmon/ds1621.c
-@@ -376,6 +376,16 @@ static const struct i2c_device_id ds1621_id[] = {
+@@ -376,6 +376,16 @@ static const struct i2c_device_id ds1621
};
MODULE_DEVICE_TABLE(i2c, ds1621_id);
/* This is the driver that will be inserted */
static struct i2c_driver ds1621_driver = {
.driver = {
---
-2.54.0
-
drivers/rtc/rtc-ds3232.c | 7 +++++++
1 file changed, 7 insertions(+)
-diff --git a/drivers/rtc/rtc-ds3232.c b/drivers/rtc/rtc-ds3232.c
-index 18f35823b4b5..a39fc08ce529 100644
--- a/drivers/rtc/rtc-ds3232.c
+++ b/drivers/rtc/rtc-ds3232.c
-@@ -681,9 +681,16 @@ static int ds3234_probe(struct spi_device *spi)
+@@ -681,9 +681,16 @@ static int ds3234_probe(struct spi_devic
return ds3232_probe(&spi->dev, regmap, spi->irq, "ds3234");
}
},
.probe = ds3234_probe,
};
---
-2.54.0
-
drivers/hwmon/sht3x.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
-diff --git a/drivers/hwmon/sht3x.c b/drivers/hwmon/sht3x.c
-index f36c0229328f..f7116b4d8b79 100644
--- a/drivers/hwmon/sht3x.c
+++ b/drivers/hwmon/sht3x.c
-@@ -933,13 +933,25 @@ static int sht3x_probe(struct i2c_client *client)
+@@ -933,13 +933,25 @@ static int sht3x_probe(struct i2c_client
static const struct i2c_device_id sht3x_ids[] = {
{"sht3x", sht3x},
{"sts3x", sts3x},
.probe = sht3x_probe,
.id_table = sht3x_ids,
};
---
-2.54.0
-
drivers/iio/light/tsl4531.c | 7 +++++++
1 file changed, 7 insertions(+)
-diff --git a/drivers/iio/light/tsl4531.c b/drivers/iio/light/tsl4531.c
-index a5788c09ad02..c918ebc930c3 100644
--- a/drivers/iio/light/tsl4531.c
+++ b/drivers/iio/light/tsl4531.c
-@@ -232,9 +232,16 @@ static const struct i2c_device_id tsl4531_id[] = {
+@@ -232,9 +232,16 @@ static const struct i2c_device_id tsl453
};
MODULE_DEVICE_TABLE(i2c, tsl4531_id);
.pm = pm_sleep_ptr(&tsl4531_pm_ops),
},
.probe = tsl4531_probe,
---
-2.54.0
-
drivers/char/hw_random/bcm2835-rng.c | 20 ++++++++++++++------
1 file changed, 14 insertions(+), 6 deletions(-)
-diff --git a/drivers/char/hw_random/bcm2835-rng.c b/drivers/char/hw_random/bcm2835-rng.c
-index d74b2c593033..05a4569ce28f 100644
--- a/drivers/char/hw_random/bcm2835-rng.c
+++ b/drivers/char/hw_random/bcm2835-rng.c
@@ -13,6 +13,7 @@
struct bcm2835_rng_priv {
struct hwrng rng;
void __iomem *base;
-@@ -63,19 +67,23 @@ static inline void rng_writel(struct bcm2835_rng_priv *priv, u32 val,
+@@ -63,19 +67,23 @@ static inline void rng_writel(struct bcm
static int bcm2835_rng_read(struct hwrng *rng, void *buf, size_t max,
bool wait)
{
for (count = 0; count < num_words; count++)
((u32 *)buf)[count] = rng_readl(priv, RNG_DATA);
---
-2.54.0
-
drivers/video/fbdev/core/fb_defio.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
-diff --git a/drivers/video/fbdev/core/fb_defio.c b/drivers/video/fbdev/core/fb_defio.c
-index 8df2e51e3390..2a1ab2ef4d35 100644
--- a/drivers/video/fbdev/core/fb_defio.c
+++ b/drivers/video/fbdev/core/fb_defio.c
-@@ -337,7 +337,8 @@ EXPORT_SYMBOL_GPL(fb_deferred_io_open);
+@@ -435,7 +435,8 @@ EXPORT_SYMBOL_GPL(fb_deferred_io_open);
static void fb_deferred_io_lastclose(struct fb_info *info)
{
}
void fb_deferred_io_release(struct fb_info *info)
---
-2.54.0
-
drivers/tty/serial/8250/8250_port.c | 12 +++++++++++-
4 files changed, 28 insertions(+), 1 deletion(-)
-diff --git a/drivers/tty/serial/8250/8250.h b/drivers/tty/serial/8250/8250.h
-index 2d4f15df18f7..2ebf455ce371 100644
--- a/drivers/tty/serial/8250/8250.h
+++ b/drivers/tty/serial/8250/8250.h
@@ -92,6 +92,7 @@ struct serial8250_config {
/* Module parameters */
#define UART_NR CONFIG_SERIAL_8250_NR_UARTS
-diff --git a/drivers/tty/serial/8250/8250_bcm2835aux.c b/drivers/tty/serial/8250/8250_bcm2835aux.c
-index 9c587f873ba5..ece629bdd700 100644
--- a/drivers/tty/serial/8250/8250_bcm2835aux.c
+++ b/drivers/tty/serial/8250/8250_bcm2835aux.c
-@@ -101,6 +101,7 @@ static int bcm2835aux_serial_probe(struct platform_device *pdev)
+@@ -101,6 +101,7 @@ static int bcm2835aux_serial_probe(struc
up.port.flags = UPF_FIXED_PORT | UPF_FIXED_TYPE | UPF_SKIP_TEST | UPF_IOREMAP;
up.port.rs485_config = serial8250_em485_config;
up.port.rs485_supported = serial8250_em485_supported;
up.rs485_start_tx = bcm2835aux_rs485_start_tx;
up.rs485_stop_tx = bcm2835aux_rs485_stop_tx;
-diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
-index bfa421ab3253..fa0720a6bd11 100644
--- a/drivers/tty/serial/8250/8250_core.c
+++ b/drivers/tty/serial/8250/8250_core.c
-@@ -210,6 +210,18 @@ static void serial8250_timeout(struct timer_list *t)
+@@ -210,6 +210,18 @@ static void serial8250_timeout(struct ti
mod_timer(&up->timer, jiffies + uart_poll_timeout(&up->port));
}
static void serial8250_backup_timeout(struct timer_list *t)
{
struct uart_8250_port *up = timer_container_of(up, t, timer);
-@@ -273,6 +285,9 @@ static void univ8250_setup_timer(struct uart_8250_port *up)
+@@ -273,6 +285,9 @@ static void univ8250_setup_timer(struct
uart_poll_timeout(port) + HZ / 5);
}
/*
* If the "interrupt" for this port doesn't correspond with any
* hardware interrupt, we use a timer-based system. The original
-diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c
-index 8785961a2a82..6d42b078db20 100644
--- a/drivers/tty/serial/8250/8250_port.c
+++ b/drivers/tty/serial/8250/8250_port.c
-@@ -1401,7 +1401,7 @@ static void serial8250_stop_tx(struct uart_port *port)
+@@ -1402,7 +1402,7 @@ static void serial8250_stop_tx(struct ua
{
struct uart_8250_port *up = up_to_u8250p(port);
__stop_tx(up);
/*
-@@ -1411,6 +1411,10 @@ static void serial8250_stop_tx(struct uart_port *port)
+@@ -1412,6 +1412,10 @@ static void serial8250_stop_tx(struct ua
up->acr |= UART_ACR_TXDIS;
serial_icr_write(up, UART_ACR, up->acr);
}
}
static inline void __start_tx(struct uart_port *port)
-@@ -1524,6 +1528,9 @@ static void serial8250_start_tx(struct uart_port *port)
+@@ -1525,6 +1529,9 @@ static void serial8250_start_tx(struct u
/* Port locked to synchronize UART_IER access against the console. */
lockdep_assert_held_once(&port->lock);
if (!port->x_char && kfifo_is_empty(&port->state->port.xmit_fifo))
return;
-@@ -1751,6 +1758,9 @@ unsigned int serial8250_modem_status(struct uart_8250_port *up)
+@@ -1752,6 +1759,9 @@ unsigned int serial8250_modem_status(str
uart_handle_cts_change(port, status & UART_MSR_CTS);
wake_up_interruptible(&port->state->port.delta_msr_wait);
}
return status;
---
-2.54.0
-
net/bluetooth/hci_sync.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
-diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c
-index 9a7bd4a4b14c..0299577183a5 100644
--- a/net/bluetooth/hci_sync.c
+++ b/net/bluetooth/hci_sync.c
-@@ -4965,6 +4965,7 @@ static const struct {
+@@ -4970,6 +4970,7 @@ static const struct {
*/
static int hci_dev_setup_sync(struct hci_dev *hdev)
{
int ret = 0;
bool invalid_bdaddr;
size_t i;
-@@ -4993,7 +4994,8 @@ static int hci_dev_setup_sync(struct hci_dev *hdev)
+@@ -4998,7 +4999,8 @@ static int hci_dev_setup_sync(struct hci
hci_test_quirk(hdev, HCI_QUIRK_USE_BDADDR_PROPERTY);
if (!ret) {
if (hci_test_quirk(hdev, HCI_QUIRK_USE_BDADDR_PROPERTY) &&
hci_dev_get_bd_addr_from_property(hdev);
if (invalid_bdaddr && bacmp(&hdev->public_addr, BDADDR_ANY) &&
---
-2.54.0
-
drivers/bluetooth/btbcm.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
-diff --git a/drivers/bluetooth/btbcm.c b/drivers/bluetooth/btbcm.c
-index 3a3a56ddbb06..1e3b78dc0fa0 100644
--- a/drivers/bluetooth/btbcm.c
+++ b/drivers/bluetooth/btbcm.c
@@ -25,12 +25,15 @@
#define BCM_FW_NAME_LEN 64
#define BCM_FW_NAME_COUNT_MAX 4
-@@ -127,9 +130,12 @@ int btbcm_check_bdaddr(struct hci_dev *hdev)
+@@ -127,9 +130,12 @@ int btbcm_check_bdaddr(struct hci_dev *h
!bacmp(&bda->bdaddr, BDADDR_BCM4324B3) ||
!bacmp(&bda->bdaddr, BDADDR_BCM4330B1) ||
!bacmp(&bda->bdaddr, BDADDR_BCM4334B0) ||
!bacmp(&bda->bdaddr, BDADDR_BCM43341B)) {
/* Try falling back to BDADDR EFI variable */
if (btbcm_set_bdaddr_from_efi(hdev) != 0) {
---
-2.54.0
-
drivers/pinctrl/bcm/pinctrl-bcm2835.c | 23 ++++++++++++++++++-----
1 file changed, 18 insertions(+), 5 deletions(-)
-diff --git a/drivers/pinctrl/bcm/pinctrl-bcm2835.c b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
-index 77f84ac4b424..0342ea93ef6a 100644
--- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c
+++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
-@@ -428,15 +428,32 @@ static void bcm2835_gpio_irq_handle_bank(struct bcm2835_pinctrl *pc,
+@@ -428,15 +428,32 @@ static void bcm2835_gpio_irq_handle_bank
unsigned long events;
unsigned offset;
unsigned gpio;
}
static void bcm2835_gpio_irq_handler(struct irq_desc *desc)
-@@ -676,11 +693,7 @@ static int bcm2835_gpio_irq_set_type(struct irq_data *data, unsigned int type)
+@@ -676,11 +693,7 @@ static int bcm2835_gpio_irq_set_type(str
static void bcm2835_gpio_irq_ack(struct irq_data *data)
{
}
static int bcm2835_gpio_irq_set_wake(struct irq_data *data, unsigned int on)
---
-2.54.0
-
drivers/mmc/host/bcm2835.c | 17 +++--------------
1 file changed, 3 insertions(+), 14 deletions(-)
-diff --git a/drivers/mmc/host/bcm2835.c b/drivers/mmc/host/bcm2835.c
-index ee63835b3ca0..bae88c3b45b5 100644
--- a/drivers/mmc/host/bcm2835.c
+++ b/drivers/mmc/host/bcm2835.c
@@ -38,7 +38,6 @@
#include <linux/of_irq.h>
#include <linux/platform_device.h>
#include <linux/scatterlist.h>
-@@ -1367,8 +1366,8 @@ static int bcm2835_probe(struct platform_device *pdev)
+@@ -1367,8 +1366,8 @@ static int bcm2835_probe(struct platform
{
struct device *dev = &pdev->dev;
struct bcm2835_host *host;
int ret;
dev_dbg(dev, "%s\n", __func__);
-@@ -1381,23 +1380,13 @@ static int bcm2835_probe(struct platform_device *pdev)
+@@ -1381,23 +1380,13 @@ static int bcm2835_probe(struct platform
host->pdev = pdev;
spin_lock_init(&host->lock);
host->dma_chan = NULL;
host->dma_desc = NULL;
---
-2.54.0
-
drivers/spi/spi-bcm2835.c | 22 +++++++---------------
1 file changed, 7 insertions(+), 15 deletions(-)
-diff --git a/drivers/spi/spi-bcm2835.c b/drivers/spi/spi-bcm2835.c
-index 811aa1e9a496..d034068220db 100644
--- a/drivers/spi/spi-bcm2835.c
+++ b/drivers/spi/spi-bcm2835.c
@@ -119,6 +119,7 @@ MODULE_PARM_DESC(polling_limit_us,
struct clk *clk;
struct gpio_desc *cs_gpio;
unsigned long clk_hz;
-@@ -891,19 +892,8 @@ static int bcm2835_dma_init(struct spi_controller *ctlr, struct device *dev,
+@@ -891,19 +892,8 @@ static int bcm2835_dma_init(struct spi_c
struct bcm2835_spi *bs)
{
struct dma_slave_config slave_config;
/* get tx/rx dma */
ctlr->dma_tx = dma_request_chan(dev, "tx");
if (IS_ERR(ctlr->dma_tx)) {
-@@ -925,7 +915,7 @@ static int bcm2835_dma_init(struct spi_controller *ctlr, struct device *dev,
+@@ -925,7 +915,7 @@ static int bcm2835_dma_init(struct spi_c
* or, in case of an RX-only transfer, cyclically copies from the zero
* page to the FIFO using a preallocated, reusable descriptor.
*/
slave_config.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
ret = dmaengine_slave_config(ctlr->dma_tx, &slave_config);
-@@ -964,9 +954,9 @@ static int bcm2835_dma_init(struct spi_controller *ctlr, struct device *dev,
+@@ -964,9 +954,9 @@ static int bcm2835_dma_init(struct spi_c
* RX FIFO or, in case of a TX-only transfer, cyclically writes a
* precalculated value to the CS register to clear the RX FIFO.
*/
slave_config.dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
ret = dmaengine_slave_config(ctlr->dma_rx, &slave_config);
-@@ -1360,6 +1350,7 @@ static int bcm2835_spi_probe(struct platform_device *pdev)
+@@ -1360,6 +1350,7 @@ static int bcm2835_spi_probe(struct plat
{
struct spi_controller *ctlr;
struct bcm2835_spi *bs;
int err;
ctlr = devm_spi_alloc_host(&pdev->dev, sizeof(*bs));
-@@ -1383,10 +1374,11 @@ static int bcm2835_spi_probe(struct platform_device *pdev)
+@@ -1383,10 +1374,11 @@ static int bcm2835_spi_probe(struct plat
bs = spi_controller_get_devdata(ctlr);
bs->ctlr = ctlr;
bs->clk = devm_clk_get_enabled(&pdev->dev, NULL);
if (IS_ERR(bs->clk))
return dev_err_probe(&pdev->dev, PTR_ERR(bs->clk),
---
-2.54.0
-
drivers/pps/pps.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
-diff --git a/drivers/pps/pps.c b/drivers/pps/pps.c
-index c6b8b6478276..442d7e8f6fb9 100644
--- a/drivers/pps/pps.c
+++ b/drivers/pps/pps.c
-@@ -254,12 +254,13 @@ static long pps_cdev_ioctl(struct file *file,
+@@ -254,12 +254,13 @@ static long pps_cdev_ioctl(struct file *
static long pps_cdev_compat_ioctl(struct file *file,
unsigned int cmd, unsigned long arg)
{
struct pps_fdata_compat compat;
struct pps_fdata fdata;
int err;
-@@ -296,6 +297,7 @@ static long pps_cdev_compat_ioctl(struct file *file,
+@@ -296,6 +297,7 @@ static long pps_cdev_compat_ioctl(struct
return copy_to_user(uarg, &compat,
sizeof(struct pps_fdata_compat)) ? -EFAULT : 0;
}
return pps_cdev_ioctl(file, cmd, arg);
}
---
-2.54.0
-
drivers/tty/serial/sc16is7xx.c | 3 +++
1 file changed, 3 insertions(+)
-diff --git a/drivers/tty/serial/sc16is7xx.c b/drivers/tty/serial/sc16is7xx.c
-index c7435595dce1..defbe370eac8 100644
--- a/drivers/tty/serial/sc16is7xx.c
+++ b/drivers/tty/serial/sc16is7xx.c
-@@ -1205,6 +1205,9 @@ static int sc16is7xx_startup(struct uart_port *port)
+@@ -1205,6 +1205,9 @@ static int sc16is7xx_startup(struct uart
SC16IS7XX_IER_MSI_BIT;
sc16is7xx_port_write(port, SC16IS7XX_IER_REG, val);
/* Enable modem status polling */
uart_port_lock_irqsave(port, &flags);
sc16is7xx_enable_ms(port);
---
-2.54.0
-
drivers/usb/host/xhci-ring.c | 23 +++++++++++++++++++-
3 files changed, 24 insertions(+), 4 deletions(-)
-diff --git a/drivers/net/ethernet/broadcom/genet/bcmmii.c b/drivers/net/ethernet/broadcom/genet/bcmmii.c
-index e0b04f6f81ba..fcf86e1e0147 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmmii.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c
-@@ -306,9 +306,7 @@ int bcmgenet_mii_probe(struct net_device *dev)
+@@ -306,9 +306,7 @@ int bcmgenet_mii_probe(struct net_device
struct device_node *dn = kdev->of_node;
phy_interface_t phy_iface = priv->phy_interface;
struct phy_device *phydev;
int ret;
/* Communicate the integrated PHY revision */
-diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
-index f67a4d956204..72f36d2e3aaa 100644
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
-@@ -448,6 +448,7 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
+@@ -448,6 +448,7 @@ static void xhci_pci_quirks(struct devic
if (pdev->vendor == PCI_VENDOR_ID_VIA && pdev->device == PCI_DEVICE_ID_VIA_VL805) {
xhci->quirks |= XHCI_LPM_SUPPORT;
xhci->quirks |= XHCI_TRB_OVERFETCH;
}
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
-diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
-index 44291e7b7781..c013f11849e4 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
-@@ -694,8 +694,11 @@ static int xhci_move_dequeue_past_td(struct xhci_hcd *xhci,
+@@ -694,8 +694,11 @@ static int xhci_move_dequeue_past_td(str
struct xhci_ring *ep_ring;
struct xhci_command *cmd;
struct xhci_segment *new_seg;
dma_addr_t addr;
u64 hw_dequeue;
bool hw_dequeue_found = false;
-@@ -714,7 +717,25 @@ static int xhci_move_dequeue_past_td(struct xhci_hcd *xhci,
+@@ -714,7 +717,25 @@ static int xhci_move_dequeue_past_td(str
hw_dequeue = xhci_get_hw_deq(xhci, dev, ep_index, stream_id) & TR_DEQ_PTR_MASK;
new_seg = ep_ring->deq_seg;
new_deq = ep_ring->dequeue;
/*
* Walk the ring until both the next TRB and hw_dequeue are found (don't
---
-2.54.0
-
drivers/usb/host/xhci.h | 3 +++
3 files changed, 14 insertions(+)
-diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
-index 72f36d2e3aaa..6b70166a87a2 100644
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
-@@ -449,6 +449,7 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
+@@ -449,6 +449,7 @@ static void xhci_pci_quirks(struct devic
xhci->quirks |= XHCI_LPM_SUPPORT;
xhci->quirks |= XHCI_TRB_OVERFETCH;
xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS;
}
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
-diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
-index c013f11849e4..fe635a266519 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
-@@ -766,6 +766,16 @@ static int xhci_move_dequeue_past_td(struct xhci_hcd *xhci,
+@@ -766,6 +766,16 @@ static int xhci_move_dequeue_past_td(str
} while (!hw_dequeue_found || !td_last_trb_found);
/* Don't update the ring cycle state for the producer (us). */
addr = xhci_trb_virt_to_dma(new_seg, new_deq);
if (addr == 0) {
-diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
-index 58a51f09cceb..bf85f4726d7b 100644
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
@@ -1646,6 +1646,9 @@ struct xhci_hcd {
unsigned int num_active_eps;
unsigned int limit_active_eps;
struct xhci_port *hw_ports;
---
-2.54.0
-
drivers/usb/host/xhci.h | 1 +
3 files changed, 32 insertions(+), 1 deletion(-)
-diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
-index 6e5b6057de79..2d1331b238a5 100644
--- a/drivers/usb/host/xhci-mem.c
+++ b/drivers/usb/host/xhci-mem.c
-@@ -1413,6 +1413,7 @@ int xhci_endpoint_init(struct xhci_hcd *xhci,
+@@ -1413,6 +1413,7 @@ int xhci_endpoint_init(struct xhci_hcd *
unsigned int ep_index;
struct xhci_ep_ctx *ep_ctx;
struct xhci_ring *ep_ring;
unsigned int max_packet;
enum xhci_ring_type ring_type;
u32 max_esit_payload;
-@@ -1422,6 +1423,8 @@ int xhci_endpoint_init(struct xhci_hcd *xhci,
+@@ -1422,6 +1423,8 @@ int xhci_endpoint_init(struct xhci_hcd *
unsigned int mult;
unsigned int avg_trb_len;
unsigned int err_count = 0;
ep_index = xhci_get_endpoint_index(&ep->desc);
ep_ctx = xhci_get_ep_ctx(xhci, virt_dev->in_ctx, ep_index);
-@@ -1464,9 +1467,35 @@ int xhci_endpoint_init(struct xhci_hcd *xhci,
+@@ -1464,9 +1467,35 @@ int xhci_endpoint_init(struct xhci_hcd *
mult = xhci_get_endpoint_mult(xhci, udev, ep);
max_packet = xhci_usb_endpoint_maxp(udev, ep);
/* FIXME dig Mult and streams info out of ep companion desc */
/* Allow 3 retries for everything but isoc, set CErr = 3 */
-diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
-index 6b70166a87a2..da1227682dde 100644
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
-@@ -450,6 +450,7 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
+@@ -450,6 +450,7 @@ static void xhci_pci_quirks(struct devic
xhci->quirks |= XHCI_TRB_OVERFETCH;
xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS;
xhci->quirks |= XHCI_AVOID_DQ_ON_LINK;
}
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
-diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
-index bf85f4726d7b..c8b3f115ffd0 100644
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
@@ -1648,6 +1648,7 @@ struct xhci_hcd {
unsigned int num_active_eps;
unsigned int limit_active_eps;
---
-2.54.0
-
drivers/usb/host/xhci.h | 1 +
3 files changed, 61 insertions(+)
-diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
-index da1227682dde..86272de4bfe1 100644
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
@@ -27,6 +27,8 @@
/* Device for a quirk */
#define PCI_VENDOR_ID_FRESCO_LOGIC 0x1b73
#define PCI_DEVICE_ID_FRESCO_LOGIC_PDK 0x1000
-@@ -248,6 +250,16 @@ static int xhci_pci_reinit(struct xhci_hcd *xhci, struct pci_dev *pdev)
+@@ -248,6 +250,16 @@ static int xhci_pci_reinit(struct xhci_h
return 0;
}
static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
{
struct pci_dev *pdev = to_pci_dev(dev);
-@@ -451,6 +463,8 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
+@@ -451,6 +463,8 @@ static void xhci_pci_quirks(struct devic
xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS;
xhci->quirks |= XHCI_AVOID_DQ_ON_LINK;
xhci->quirks |= XHCI_VLI_SS_BULK_OUT_BUG;
}
if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
-diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
-index fe635a266519..98a7111916d3 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
-@@ -3667,6 +3667,48 @@ static int xhci_align_td(struct xhci_hcd *xhci, struct urb *urb, u32 enqd_len,
+@@ -3667,6 +3667,48 @@ static int xhci_align_td(struct xhci_hcd
return 1;
}
/* This is very similar to what ehci-q.c qtd_fill() does */
int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
struct urb *urb, int slot_id, unsigned int ep_index)
-@@ -3821,6 +3863,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
+@@ -3821,6 +3863,8 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
}
check_trb_math(urb, enqd_len);
giveback_first_trb(xhci, slot_id, ep_index, urb->stream_id,
start_cycle, start_trb);
return 0;
-@@ -3969,6 +4013,8 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *xhci, gfp_t mem_flags,
+@@ -3969,6 +4013,8 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
/* Event on completion */
field | TRB_IOC | TRB_TYPE(TRB_STATUS) | ep_ring->cycle_state);
giveback_first_trb(xhci, slot_id, ep_index, 0,
start_cycle, start_trb);
return 0;
-diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
-index c8b3f115ffd0..f841680218b4 100644
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
@@ -1649,6 +1649,7 @@ struct xhci_hcd {
unsigned int num_active_eps;
unsigned int limit_active_eps;
---
-2.54.0
-
1 file changed, 1426 insertions(+)
create mode 100644 net/wireless/certs/debian.hex
-diff --git a/net/wireless/certs/debian.hex b/net/wireless/certs/debian.hex
-new file mode 100644
-index 000000000000..c5ab03f8c500
--- /dev/null
+++ b/net/wireless/certs/debian.hex
@@ -0,0 +1,1426 @@
+0x44,
+0x9f,
+0x21,
---
-2.54.0
-
drivers/gpu/drm/tiny/ili9486.c | 1 -
1 file changed, 1 deletion(-)
-diff --git a/drivers/gpu/drm/tiny/ili9486.c b/drivers/gpu/drm/tiny/ili9486.c
-index 093661c771a0..b8e93ac771bb 100644
--- a/drivers/gpu/drm/tiny/ili9486.c
+++ b/drivers/gpu/drm/tiny/ili9486.c
-@@ -189,7 +189,6 @@ static const struct of_device_id ili9486_of_match[] = {
+@@ -189,7 +189,6 @@ static const struct of_device_id ili9486
MODULE_DEVICE_TABLE(of, ili9486_of_match);
static const struct spi_device_id ili9486_id[] = {
{ "rpi-lcd-35", 0 },
{ "piscreen", 0 },
{ }
---
-2.54.0
-
drivers/rtc/rtc-rv3028.c | 24 ++++++++++++++++++------
1 file changed, 18 insertions(+), 6 deletions(-)
-diff --git a/drivers/rtc/rtc-rv3028.c b/drivers/rtc/rtc-rv3028.c
-index c2a531f0e125..874ebd4f6938 100644
--- a/drivers/rtc/rtc-rv3028.c
+++ b/drivers/rtc/rtc-rv3028.c
-@@ -865,16 +865,17 @@ static const struct regmap_config regmap_config = {
+@@ -865,16 +865,17 @@ static const struct regmap_config regmap
static u8 rv3028_set_trickle_charger(struct rv3028_data *rv3028,
struct i2c_client *client)
{
/* setup trickle charger */
if (!device_property_read_u32(&client->dev, "trickle-resistor-ohms",
-@@ -909,10 +910,21 @@ static u8 rv3028_set_trickle_charger(struct rv3028_data *rv3028,
+@@ -909,10 +910,21 @@ static u8 rv3028_set_trickle_charger(str
}
}
if (ret)
return ret;
}
---
-2.54.0
-
include/linux/gpio/generic.h | 1 +
3 files changed, 137 insertions(+), 10 deletions(-)
-diff --git a/drivers/gpio/gpio-brcmstb.c b/drivers/gpio/gpio-brcmstb.c
-index f0cb1991b326..7e2e3f3829ef 100644
--- a/drivers/gpio/gpio-brcmstb.c
+++ b/drivers/gpio/gpio-brcmstb.c
-@@ -630,6 +630,8 @@ static int brcmstb_gpio_probe(struct platform_device *pdev)
+@@ -630,6 +630,8 @@ static int brcmstb_gpio_probe(struct pla
#if defined(CONFIG_MIPS) && defined(__BIG_ENDIAN)
flags = GPIO_GENERIC_BIG_ENDIAN_BYTE_ORDER;
#endif
of_property_for_each_u32(np, "brcm,gpio-bank-widths", bank_width) {
struct brcmstb_gpio_bank *bank;
-@@ -685,7 +687,9 @@ static int brcmstb_gpio_probe(struct platform_device *pdev)
+@@ -685,7 +687,9 @@ static int brcmstb_gpio_probe(struct pla
}
gc->owner = THIS_MODULE;
if (!gc->label) {
err = -ENOMEM;
goto fail;
-@@ -693,7 +697,7 @@ static int brcmstb_gpio_probe(struct platform_device *pdev)
+@@ -693,7 +697,7 @@ static int brcmstb_gpio_probe(struct pla
gc->of_gpio_n_cells = 2;
gc->of_xlate = brcmstb_gpio_of_xlate;
/* not all ngpio lines are valid, will use bank width later */
gc->offset = bank->id * MAX_GPIO_PER_BANK;
gc->request = gpiochip_generic_request;
gc->free = gpiochip_generic_free;
-@@ -704,9 +708,11 @@ static int brcmstb_gpio_probe(struct platform_device *pdev)
+@@ -704,9 +708,11 @@ static int brcmstb_gpio_probe(struct pla
* Mask all interrupts by default, since wakeup interrupts may
* be retained from S5 cold boot
*/
err = gpiochip_add_data(gc, bank);
if (err) {
-diff --git a/drivers/gpio/gpio-mmio.c b/drivers/gpio/gpio-mmio.c
-index 7d6dd36cf1ae..a3f33da50dc4 100644
--- a/drivers/gpio/gpio-mmio.c
+++ b/drivers/gpio/gpio-mmio.c
-@@ -245,6 +245,27 @@ static int bgpio_set(struct gpio_chip *gc, unsigned int gpio, int val)
+@@ -245,6 +245,27 @@ static int bgpio_set(struct gpio_chip *g
return 0;
}
static int bgpio_set_with_clear(struct gpio_chip *gc, unsigned int gpio,
int val)
{
-@@ -354,6 +375,29 @@ static int bgpio_set_multiple_with_clear(struct gpio_chip *gc,
+@@ -354,6 +375,29 @@ static int bgpio_set_multiple_with_clear
return 0;
}
static int bgpio_dir_return(struct gpio_chip *gc, unsigned int gpio, bool dir_out)
{
struct gpio_generic_chip *chip = to_gpio_generic_chip(gc);
-@@ -410,6 +454,30 @@ static int bgpio_dir_in(struct gpio_chip *gc, unsigned int gpio)
+@@ -410,6 +454,30 @@ static int bgpio_dir_in(struct gpio_chip
return bgpio_dir_return(gc, gpio, false);
}
static int bgpio_get_dir(struct gpio_chip *gc, unsigned int gpio)
{
struct gpio_generic_chip *chip = to_gpio_generic_chip(gc);
-@@ -451,6 +519,29 @@ static void bgpio_dir_out(struct gpio_chip *gc, unsigned int gpio, int val)
+@@ -451,6 +519,29 @@ static void bgpio_dir_out(struct gpio_ch
raw_spin_unlock_irqrestore(&chip->lock, flags);
}
static int bgpio_dir_out_dir_first(struct gpio_chip *gc, unsigned int gpio,
int val)
{
-@@ -467,6 +558,22 @@ static int bgpio_dir_out_val_first(struct gpio_chip *gc, unsigned int gpio,
+@@ -467,6 +558,22 @@ static int bgpio_dir_out_val_first(struc
return bgpio_dir_return(gc, gpio, true);
}
static int bgpio_setup_accessors(struct device *dev,
struct gpio_generic_chip *chip,
bool byte_be)
-@@ -557,6 +664,9 @@ static int bgpio_setup_io(struct gpio_generic_chip *chip,
+@@ -557,6 +664,9 @@ static int bgpio_setup_io(struct gpio_ge
} else if (cfg->flags & GPIO_GENERIC_NO_OUTPUT) {
gc->set = bgpio_set_none;
gc->set_multiple = NULL;
} else {
gc->set = bgpio_set;
gc->set_multiple = bgpio_set_multiple;
-@@ -593,11 +703,21 @@ static int bgpio_setup_direction(struct gpio_generic_chip *chip,
+@@ -593,11 +703,21 @@ static int bgpio_setup_direction(struct
if (cfg->dirout || cfg->dirin) {
chip->reg_dir_out = cfg->dirout;
chip->reg_dir_in = cfg->dirin;
gc->get_direction = bgpio_get_dir;
} else {
if (cfg->flags & GPIO_GENERIC_NO_OUTPUT)
-diff --git a/include/linux/gpio/generic.h b/include/linux/gpio/generic.h
-index ff566dc9c3cb..e3625f4cb933 100644
--- a/include/linux/gpio/generic.h
+++ b/include/linux/gpio/generic.h
@@ -18,6 +18,7 @@ struct device;
/**
* struct gpio_generic_chip_config - Generic GPIO chip configuration data
---
-2.54.0
-
drivers/mmc/host/sdhci-brcmstb.c | 235 +++++++++++++++++++++++++++++--
2 files changed, 227 insertions(+), 9 deletions(-)
-diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
-index 85e418954f20..493aead98f19 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -1086,6 +1086,7 @@ config MMC_SDHCI_BRCMSTB
default ARCH_BRCMSTB || BMIPS_GENERIC
help
This selects support for the SDIO/SD/MMC Host Controller on
-diff --git a/drivers/mmc/host/sdhci-brcmstb.c b/drivers/mmc/host/sdhci-brcmstb.c
-index 15705e85417f..9baabf1be54e 100644
--- a/drivers/mmc/host/sdhci-brcmstb.c
+++ b/drivers/mmc/host/sdhci-brcmstb.c
@@ -12,6 +12,8 @@
};
struct brcmstb_match_priv {
-@@ -141,6 +152,42 @@ static void sdhci_brcmstb_hs400es(struct mmc_host *mmc, struct mmc_ios *ios)
+@@ -141,6 +152,42 @@ static void sdhci_brcmstb_hs400es(struct
writel(reg, host->ioaddr + SDHCI_VENDOR);
}
static void sdhci_brcmstb_set_clock(struct sdhci_host *host, unsigned int clock)
{
u16 clk;
-@@ -156,6 +203,17 @@ static void sdhci_brcmstb_set_clock(struct sdhci_host *host, unsigned int clock)
+@@ -156,6 +203,17 @@ static void sdhci_brcmstb_set_clock(stru
sdhci_enable_clk(host, clk);
}
static void sdhci_brcmstb_set_uhs_signaling(struct sdhci_host *host,
unsigned int timing)
{
-@@ -190,12 +248,16 @@ static void sdhci_brcmstb_cfginit_2712(struct sdhci_host *host)
+@@ -190,12 +248,16 @@ static void sdhci_brcmstb_cfginit_2712(s
struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
struct sdhci_brcmstb_priv *brcmstb_priv = sdhci_pltfm_priv(pltfm_host);
u32 reg;
reg = readl(brcmstb_priv->cfg_regs + SDIO_CFG_MAX_50MHZ_MODE);
reg &= ~SDIO_CFG_MAX_50MHZ_MODE_ENABLE;
reg |= SDIO_CFG_MAX_50MHZ_MODE_STRAP_OVERRIDE;
-@@ -210,6 +272,109 @@ static void sdhci_brcmstb_cfginit_2712(struct sdhci_host *host)
+@@ -210,6 +272,109 @@ static void sdhci_brcmstb_cfginit_2712(s
reg |= SDIO_CFG_CTRL_SDCD_N_TEST_EN;
writel(reg, brcmstb_priv->cfg_regs + SDIO_CFG_CTRL);
}
}
static void sdhci_brcmstb_dumpregs(struct mmc_host *mmc)
-@@ -245,11 +410,12 @@ static struct sdhci_ops sdhci_brcmstb_ops = {
+@@ -245,11 +410,12 @@ static struct sdhci_ops sdhci_brcmstb_op
};
static struct sdhci_ops sdhci_brcmstb_ops_2712 = {
};
static struct sdhci_ops sdhci_brcmstb_ops_7216 = {
-@@ -267,6 +433,8 @@ static struct sdhci_ops sdhci_brcmstb_ops_74165b0 = {
+@@ -267,6 +433,8 @@ static struct sdhci_ops sdhci_brcmstb_op
};
static const struct brcmstb_match_priv match_priv_2712 = {
.cfginit = sdhci_brcmstb_cfginit_2712,
.ops = &sdhci_brcmstb_ops_2712,
};
-@@ -372,6 +540,8 @@ static int sdhci_brcmstb_probe(struct platform_device *pdev)
+@@ -372,6 +540,8 @@ static int sdhci_brcmstb_probe(struct pl
struct sdhci_brcmstb_priv *priv;
u32 actual_clock_mhz;
struct sdhci_host *host;
struct clk *clk;
struct clk *base_clk = NULL;
int res;
-@@ -394,12 +564,19 @@ static int sdhci_brcmstb_probe(struct platform_device *pdev)
+@@ -394,12 +564,19 @@ static int sdhci_brcmstb_probe(struct pl
return PTR_ERR(host);
pltfm_host = sdhci_priv(host);
/* Map in the non-standard CFG registers */
priv->cfg_regs = devm_platform_get_and_ioremap_resource(pdev, 1, NULL);
if (IS_ERR(priv->cfg_regs)) {
-@@ -412,6 +589,43 @@ static int sdhci_brcmstb_probe(struct platform_device *pdev)
+@@ -412,6 +589,43 @@ static int sdhci_brcmstb_probe(struct pl
if (res)
goto err;
/*
* Automatic clock gating does not work for SD cards that may
* voltage switch so only enable it for non-removable devices.
-@@ -428,6 +642,10 @@ static int sdhci_brcmstb_probe(struct platform_device *pdev)
+@@ -428,6 +642,10 @@ static int sdhci_brcmstb_probe(struct pl
(host->mmc->caps2 & MMC_CAP2_HS400_ES))
host->mmc_host_ops.hs400_enhanced_strobe = match_priv->hs400es;
if (match_priv->cfginit)
match_priv->cfginit(host);
-@@ -481,7 +699,6 @@ static int sdhci_brcmstb_probe(struct platform_device *pdev)
+@@ -481,7 +699,6 @@ add_host:
if (res)
goto err;
return res;
err:
---
-2.54.0
-
drivers/mmc/host/sdhci.h | 6 ++++++
3 files changed, 30 insertions(+), 1 deletion(-)
-diff --git a/drivers/mmc/host/sdhci-of-dwcmshc.c b/drivers/mmc/host/sdhci-of-dwcmshc.c
-index 5ae4e11b1e90..05704c30e254 100644
--- a/drivers/mmc/host/sdhci-of-dwcmshc.c
+++ b/drivers/mmc/host/sdhci-of-dwcmshc.c
-@@ -1206,7 +1206,11 @@ static const struct dwcmshc_pltfm_data sdhci_dwcmshc_rk35xx_pdata = {
+@@ -1219,7 +1219,11 @@ static const struct dwcmshc_pltfm_data s
.quirks = SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN |
SDHCI_QUIRK_BROKEN_TIMEOUT_VAL,
.quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN |
},
.init = dwcmshc_rk35xx_init,
.postinit = dwcmshc_rk35xx_postinit,
-diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
-index 6e6efe8d419b..46f83056ecf0 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
-@@ -3076,6 +3076,15 @@ static void sdhci_card_event(struct mmc_host *mmc)
+@@ -3076,6 +3076,15 @@ static void sdhci_card_event(struct mmc_
spin_unlock_irqrestore(&host->lock, flags);
}
static const struct mmc_host_ops sdhci_ops = {
.request = sdhci_request,
.post_req = sdhci_post_req,
-@@ -3091,6 +3100,7 @@ static const struct mmc_host_ops sdhci_ops = {
+@@ -3091,6 +3100,7 @@ static const struct mmc_host_ops sdhci_o
.execute_tuning = sdhci_execute_tuning,
.card_event = sdhci_card_event,
.card_busy = sdhci_card_busy,
};
/*****************************************************************************\
-@@ -4625,6 +4635,15 @@ int sdhci_setup_host(struct sdhci_host *host)
+@@ -4626,6 +4636,15 @@ int sdhci_setup_host(struct sdhci_host *
!(host->quirks2 & SDHCI_QUIRK2_BROKEN_DDR50))
mmc->caps |= MMC_CAP_UHS_DDR50;
/* Does the host need tuning for SDR50? */
if (host->caps1 & SDHCI_USE_SDR50_TUNING)
host->flags |= SDHCI_SDR50_NEEDS_TUNING;
-diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h
-index b6a571d866fa..4894a75a1391 100644
--- a/drivers/mmc/host/sdhci.h
+++ b/drivers/mmc/host/sdhci.h
@@ -537,6 +537,11 @@ struct sdhci_host {
};
#ifdef CONFIG_MMC_SDHCI_IO_ACCESSORS
---
-2.54.0
-
drivers/reset/reset-brcmstb-rescal.c | 10 ++++++++++
1 file changed, 10 insertions(+)
-diff --git a/drivers/reset/reset-brcmstb-rescal.c b/drivers/reset/reset-brcmstb-rescal.c
-index 823317772bac..89c1cae675a0 100644
--- a/drivers/reset/reset-brcmstb-rescal.c
+++ b/drivers/reset/reset-brcmstb-rescal.c
@@ -20,6 +20,7 @@ struct brcm_rescal_reset {
static int brcm_rescal_reset_set(struct reset_controller_dev *rcdev,
unsigned long id)
{
-@@ -52,6 +53,13 @@ static int brcm_rescal_reset_set(struct reset_controller_dev *rcdev,
+@@ -52,6 +53,13 @@ static int brcm_rescal_reset_set(struct
return 0;
}
static int brcm_rescal_reset_xlate(struct reset_controller_dev *rcdev,
const struct of_phandle_args *reset_spec)
{
-@@ -61,6 +69,8 @@ static int brcm_rescal_reset_xlate(struct reset_controller_dev *rcdev,
+@@ -61,6 +69,8 @@ static int brcm_rescal_reset_xlate(struc
static const struct reset_control_ops brcm_rescal_reset_ops = {
.reset = brcm_rescal_reset_set,
};
static int brcm_rescal_reset_probe(struct platform_device *pdev)
---
-2.54.0
-
drivers/net/ethernet/cadence/macb_main.c | 139 ++++++++++++++++++++++-
2 files changed, 162 insertions(+), 2 deletions(-)
-diff --git a/drivers/net/ethernet/cadence/macb.h b/drivers/net/ethernet/cadence/macb.h
-index 0830c48973aa..2c814a2d06b7 100644
--- a/drivers/net/ethernet/cadence/macb.h
+++ b/drivers/net/ethernet/cadence/macb.h
@@ -86,6 +86,8 @@
/* AT91RM9200 transmit queue (1 on wire + 1 queued) */
struct macb_tx_skb rm9200_txq[2];
unsigned int max_tx_length;
-diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
-index 17d4a3e03945..3cf1df8634ed 100644
--- a/drivers/net/ethernet/cadence/macb_main.c
+++ b/drivers/net/ethernet/cadence/macb_main.c
@@ -13,6 +13,7 @@
/* This structure is only used for MACB on SiFive FU540 devices */
struct sifive_fu540_macb_mgmt {
void __iomem *reg;
-@@ -330,7 +334,7 @@ static int macb_mdio_wait_for_idle(struct macb *bp)
+@@ -330,7 +334,7 @@ static int macb_mdio_wait_for_idle(struc
u32 val;
return readx_poll_timeout(MACB_READ_NSR, bp, val, val & MACB_BIT(IDLE),
}
static int macb_mdio_read_c22(struct mii_bus *bus, int mii_id, int regnum)
-@@ -489,6 +493,19 @@ static int macb_mdio_write_c45(struct mii_bus *bus, int mii_id,
+@@ -489,6 +493,19 @@ mdio_pm_exit:
return status;
}
static void macb_init_buffers(struct macb *bp)
{
struct macb_queue *queue;
-@@ -1043,6 +1060,7 @@ static int macb_mii_init(struct macb *bp)
+@@ -1043,6 +1060,7 @@ static int macb_mii_init(struct macb *bp
bp->mii_bus->write = &macb_mdio_write_c22;
bp->mii_bus->read_c45 = &macb_mdio_read_c45;
bp->mii_bus->write_c45 = &macb_mdio_write_c45;
snprintf(bp->mii_bus->id, MII_BUS_ID_SIZE, "%s-%x",
bp->pdev->name, bp->pdev->id);
bp->mii_bus->priv = bp;
-@@ -1719,6 +1737,11 @@ static int macb_rx(struct macb_queue *queue, struct napi_struct *napi,
+@@ -1719,6 +1737,11 @@ static int macb_rx(struct macb_queue *qu
macb_init_rx_ring(queue);
queue_writel(queue, RBQP, queue->rx_ring_dma);
macb_writel(bp, NCR, ctrl | MACB_BIT(RE));
-@@ -2021,8 +2044,9 @@ static irqreturn_t macb_interrupt(int irq, void *dev_id)
+@@ -2021,8 +2044,9 @@ static irqreturn_t macb_interrupt(int ir
queue_writel(queue, ISR, MACB_BIT(TCOMP) |
MACB_BIT(TXUBR));
wmb(); // ensure softirq can see update
}
-@@ -2480,6 +2504,11 @@ static netdev_tx_t macb_start_xmit(struct sk_buff *skb, struct net_device *dev)
+@@ -2480,6 +2504,11 @@ static netdev_tx_t macb_start_xmit(struc
skb->len);
spin_lock(&bp->lock);
macb_writel(bp, NCR, macb_readl(bp, NCR) | MACB_BIT(TSTART));
spin_unlock(&bp->lock);
-@@ -2908,6 +2937,37 @@ static void macb_configure_dma(struct macb *bp)
+@@ -2908,6 +2937,37 @@ static void macb_configure_dma(struct ma
}
}
static void macb_init_hw(struct macb *bp)
{
u32 config;
-@@ -2936,6 +2996,11 @@ static void macb_init_hw(struct macb *bp)
+@@ -2936,6 +2996,11 @@ static void macb_init_hw(struct macb *bp
if (bp->caps & MACB_CAPS_JUMBO)
bp->rx_frm_len_mask = MACB_RX_JFRMLEN_MASK;
macb_configure_dma(bp);
/* Enable RX partial store and forward and set watermark */
-@@ -3299,6 +3364,52 @@ static void gem_get_ethtool_strings(struct net_device *dev, u32 sset, u8 *p)
+@@ -3299,6 +3364,52 @@ static void gem_get_ethtool_strings(stru
}
}
static void macb_get_stats(struct net_device *dev,
struct rtnl_link_stats64 *nstat)
{
-@@ -4055,6 +4166,8 @@ static const struct ethtool_ops macb_ethtool_ops = {
+@@ -4055,6 +4166,8 @@ static const struct ethtool_ops macb_eth
};
static const struct ethtool_ops gem_ethtool_ops = {
.get_regs_len = macb_get_regs_len,
.get_regs = macb_get_regs,
.get_wol = macb_get_wol,
-@@ -4068,6 +4181,8 @@ static const struct ethtool_ops gem_ethtool_ops = {
+@@ -4068,6 +4181,8 @@ static const struct ethtool_ops gem_etht
.get_eth_mac_stats = gem_get_eth_mac_stats,
.get_eth_phy_stats = gem_get_eth_phy_stats,
.get_rmon_stats = gem_get_rmon_stats,
.get_link_ksettings = macb_get_link_ksettings,
.set_link_ksettings = macb_set_link_ksettings,
.get_ringparam = macb_get_ringparam,
-@@ -5634,6 +5749,11 @@ static int macb_probe(struct platform_device *pdev)
+@@ -5634,6 +5749,11 @@ static int macb_probe(struct platform_de
}
}
}
spin_lock_init(&bp->lock);
spin_lock_init(&bp->stats_lock);
-@@ -5694,6 +5814,21 @@ static int macb_probe(struct platform_device *pdev)
+@@ -5694,6 +5814,21 @@ static int macb_probe(struct platform_de
else
bp->phy_interface = interface;
/* IP specific init */
err = init(pdev);
if (err)
---
-2.54.0
-
drivers/usb/dwc3/host.c | 9 ++-
7 files changed, 144 insertions(+), 3 deletions(-)
-diff --git a/drivers/phy/broadcom/Kconfig b/drivers/phy/broadcom/Kconfig
-index 1d89a2fd9b79..a67ac49a0d59 100644
--- a/drivers/phy/broadcom/Kconfig
+++ b/drivers/phy/broadcom/Kconfig
@@ -93,7 +93,7 @@ config PHY_BRCM_SATA
depends on OF
select GENERIC_PHY
select SOC_BRCMSTB if ARCH_BRCMSTB
-diff --git a/drivers/phy/broadcom/phy-brcm-usb-init-synopsys.c b/drivers/phy/broadcom/phy-brcm-usb-init-synopsys.c
-index 8a5ed50f2da0..71e9c4c6dd97 100644
--- a/drivers/phy/broadcom/phy-brcm-usb-init-synopsys.c
+++ b/drivers/phy/broadcom/phy-brcm-usb-init-synopsys.c
-@@ -356,6 +356,36 @@ static void usb_init_common_7216(struct brcm_usb_init_params *params)
+@@ -356,6 +356,36 @@ static void usb_init_common_7216(struct
usb_init_common(params);
}
static void usb_init_xhci(struct brcm_usb_init_params *params)
{
pr_debug("%s\n", __func__);
-@@ -437,6 +467,18 @@ static void usb_uninit_common_7211b0(struct brcm_usb_init_params *params)
+@@ -437,6 +467,18 @@ static void usb_uninit_common_7211b0(str
}
static void usb_uninit_xhci(struct brcm_usb_init_params *params)
{
-@@ -501,6 +543,16 @@ static const struct brcm_usb_init_ops bcm7211b0_ops = {
+@@ -501,6 +543,16 @@ static const struct brcm_usb_init_ops bc
.set_dual_select = usb_set_dual_select,
};
void brcm_usb_dvr_init_74110(struct brcm_usb_init_params *params)
{
params->family_name = "74110";
-@@ -524,3 +576,10 @@ void brcm_usb_dvr_init_7211b0(struct brcm_usb_init_params *params)
+@@ -524,3 +576,10 @@ void brcm_usb_dvr_init_7211b0(struct brc
params->family_name = "7211";
params->ops = &bcm7211b0_ops;
}
+ params->ops = &bcm2712_ops;
+ params->suspend_with_clocks = true;
+}
-diff --git a/drivers/phy/broadcom/phy-brcm-usb-init.h b/drivers/phy/broadcom/phy-brcm-usb-init.h
-index 4c7be78d0b14..533c111e7cd6 100644
--- a/drivers/phy/broadcom/phy-brcm-usb-init.h
+++ b/drivers/phy/broadcom/phy-brcm-usb-init.h
@@ -70,6 +70,7 @@ struct brcm_usb_init_params {
};
void brcm_usb_dvr_init_74110(struct brcm_usb_init_params *params);
-@@ -77,6 +78,7 @@ void brcm_usb_dvr_init_4908(struct brcm_usb_init_params *params);
+@@ -77,6 +78,7 @@ void brcm_usb_dvr_init_4908(struct brcm_
void brcm_usb_dvr_init_7445(struct brcm_usb_init_params *params);
void brcm_usb_dvr_init_7216(struct brcm_usb_init_params *params);
void brcm_usb_dvr_init_7211b0(struct brcm_usb_init_params *params);
static inline u32 brcm_usb_readl(void __iomem *addr)
{
-diff --git a/drivers/phy/broadcom/phy-brcm-usb.c b/drivers/phy/broadcom/phy-brcm-usb.c
-index 59d756a10d6c..5e1ca5a24e47 100644
--- a/drivers/phy/broadcom/phy-brcm-usb.c
+++ b/drivers/phy/broadcom/phy-brcm-usb.c
@@ -75,7 +75,7 @@ struct brcm_usb_phy_data {
};
static int brcm_pm_notifier(struct notifier_block *notifier,
-@@ -325,6 +325,18 @@ static const struct match_chip_info chip_info_7211b0 = {
+@@ -325,6 +325,18 @@ static const struct match_chip_info chip
.optional_reg = BRCM_REGS_BDC_EC,
};
static const struct match_chip_info chip_info_7445 = {
.init_func = &brcm_usb_dvr_init_7445,
.required_regs = {
-@@ -351,6 +363,10 @@ static const struct of_device_id brcm_usb_dt_ids[] = {
- .compatible = "brcm,bcm7211-usb-phy",
+@@ -352,6 +364,10 @@ static const struct of_device_id brcm_us
.data = &chip_info_7211b0,
},
-+ {
+ {
+ .compatible = "brcm,bcm2712-usb-phy",
+ .data = &chip_info_2712,
+ },
- {
++ {
.compatible = "brcm,brcmstb-usb-phy",
.data = &chip_info_7445,
-diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
-index c6b7df5682b4..dd131cbce2b6 100644
+ },
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
-@@ -1325,6 +1325,24 @@ static void dwc3_config_threshold(struct dwc3 *dwc)
+@@ -1325,6 +1325,24 @@ static void dwc3_config_threshold(struct
}
}
/**
* dwc3_core_init - Low-level initialization of DWC3 Core
* @dwc: Pointer to our controller context structure
-@@ -1392,6 +1410,8 @@ static int dwc3_core_init(struct dwc3 *dwc)
+@@ -1392,6 +1410,8 @@ static int dwc3_core_init(struct dwc3 *d
dwc3_config_soc_bus(dwc);
ret = dwc3_phy_power_on(dwc);
if (ret)
goto err_exit_phy;
-@@ -1520,6 +1540,24 @@ static int dwc3_core_init(struct dwc3 *dwc)
- dwc3_writel(dwc->regs, DWC3_GUCTL3, reg);
+@@ -1520,6 +1540,24 @@ static int dwc3_core_init(struct dwc3 *d
+ dwc3_writel(dwc, DWC3_GUCTL3, reg);
}
+ if (DWC3_IP_IS(DWC3) && dwc->dr_mode == USB_DR_MODE_HOST) {
return 0;
err_power_off_phy:
-@@ -1706,6 +1744,7 @@ static void dwc3_get_properties(struct dwc3 *dwc)
+@@ -1706,6 +1744,7 @@ static void dwc3_get_properties(struct d
u8 tx_max_burst_prd = 0;
u8 tx_fifo_resize_max_num;
u16 num_hc_interrupters;
/* default to highest possible threshold */
lpm_nyet_threshold = 0xf;
-@@ -1728,6 +1767,8 @@ static void dwc3_get_properties(struct dwc3 *dwc)
+@@ -1728,6 +1767,8 @@ static void dwc3_get_properties(struct d
/* default to a single XHCI interrupter */
num_hc_interrupters = 1;
dwc->maximum_speed = usb_get_maximum_speed(dev);
dwc->max_ssp_rate = usb_get_maximum_ssp_rate(dev);
-@@ -1849,6 +1890,9 @@ static void dwc3_get_properties(struct dwc3 *dwc)
+@@ -1849,6 +1890,9 @@ static void dwc3_get_properties(struct d
dwc->dis_split_quirk = device_property_read_bool(dev,
"snps,dis-split-quirk");
dwc->lpm_nyet_threshold = lpm_nyet_threshold;
dwc->tx_de_emphasis = tx_de_emphasis;
-@@ -1866,6 +1910,8 @@ static void dwc3_get_properties(struct dwc3 *dwc)
+@@ -1866,6 +1910,8 @@ static void dwc3_get_properties(struct d
dwc->tx_thr_num_pkt_prd = tx_thr_num_pkt_prd;
dwc->tx_max_burst_prd = tx_max_burst_prd;
dwc->tx_fifo_resize_max_num = tx_fifo_resize_max_num;
dwc->num_hc_interrupters = num_hc_interrupters;
-@@ -2230,6 +2276,12 @@ int dwc3_core_probe(const struct dwc3_probe_data *data)
+@@ -2230,6 +2276,12 @@ int dwc3_core_probe(const struct dwc3_pr
if (IS_ERR(dwc->usb_psy))
return dev_err_probe(dev, PTR_ERR(dwc->usb_psy), "couldn't get usb power supply\n");
if (!data->ignore_clocks_and_resets) {
dwc->reset = devm_reset_control_array_get_optional_shared(dev);
if (IS_ERR(dwc->reset)) {
-diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
-index 9cfc36d4bc25..6ac702395670 100644
--- a/drivers/usb/dwc3/core.h
+++ b/drivers/usb/dwc3/core.h
@@ -198,6 +198,9 @@
/* Global Debug LSP MUX Select */
#define DWC3_GDBGLSPMUX_ENDBC BIT(15) /* Host only */
#define DWC3_GDBGLSPMUX_HOSTSELECT(n) ((n) & 0x3fff)
-@@ -1098,6 +1101,7 @@ struct dwc3_glue_ops {
+@@ -1096,6 +1099,7 @@ struct dwc3_glue_ops {
* @tx_fifo_resize_max_num: max number of fifos allocated during txfifo resize
* @clear_stall_protocol: endpoint number that requires a delayed status phase
* @num_hc_interrupters: number of host controller interrupters
* @hsphy_interface: "utmi" or "ulpi"
* @connected: true when we're connected to a host, false otherwise
* @softconnect: true when gadget connect is called, false when disconnect runs
-@@ -1354,6 +1358,7 @@ struct dwc3 {
+@@ -1352,6 +1356,7 @@ struct dwc3 {
u8 tx_fifo_resize_max_num;
u8 clear_stall_protocol;
u16 num_hc_interrupters;
const char *hsphy_interface;
-diff --git a/drivers/usb/dwc3/host.c b/drivers/usb/dwc3/host.c
-index 3f075c57605c..cd59aba1fac0 100644
--- a/drivers/usb/dwc3/host.c
+++ b/drivers/usb/dwc3/host.c
-@@ -129,10 +129,12 @@ static int dwc3_host_get_irq(struct dwc3 *dwc)
+@@ -129,10 +129,12 @@ out:
int dwc3_host_init(struct dwc3 *dwc)
{
if (!xhci) {
dev_err(dwc->dev, "couldn't allocate xHCI device\n");
return -ENOMEM;
---
-2.54.0
-
1 file changed, 235 insertions(+)
create mode 100644 include/dt-bindings/mfd/rp1.h
-diff --git a/include/dt-bindings/mfd/rp1.h b/include/dt-bindings/mfd/rp1.h
-new file mode 100644
-index 000000000000..80bbfd61b270
--- /dev/null
+++ b/include/dt-bindings/mfd/rp1.h
@@ -0,0 +1,235 @@
+#define RP1_DMA_PIO_CH3_RX 0x3f
+
+#endif
---
-2.54.0
-
create mode 100644 drivers/mfd/rp1.c
create mode 100644 include/linux/rp1_platform.h
-diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
-index 8333080aa974..c54335feb1bd 100644
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
@@ -2527,6 +2527,18 @@ config MFD_QNAP_MCU
config MFD_RSMU_I2C
tristate "Renesas Synchronization Management Unit with I2C"
depends on I2C && OF
-diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
-index 865e9f12faff..57cde054292d 100644
--- a/drivers/mfd/Makefile
+++ b/drivers/mfd/Makefile
-@@ -303,3 +303,5 @@ obj-$(CONFIG_MFD_RSMU_SPI) += rsmu_spi.o rsmu_core.o
+@@ -303,3 +303,5 @@ obj-$(CONFIG_MFD_RSMU_SPI) += rsmu_spi.o
obj-$(CONFIG_MFD_UPBOARD_FPGA) += upboard-fpga.o
obj-$(CONFIG_MFD_LOONGSON_SE) += loongson-se.o
+
+obj-$(CONFIG_MFD_RP1) += rp1.o
-diff --git a/drivers/mfd/rp1.c b/drivers/mfd/rp1.c
-new file mode 100644
-index 000000000000..9880cde51e43
--- /dev/null
+++ b/drivers/mfd/rp1.c
@@ -0,0 +1,375 @@
+MODULE_AUTHOR("Phil Elwell <phil@raspberrypi.com>");
+MODULE_DESCRIPTION("RP1 wrapper");
+MODULE_LICENSE("GPL");
-diff --git a/include/linux/rp1_platform.h b/include/linux/rp1_platform.h
-new file mode 100644
-index 000000000000..f805dbe1ed9b
--- /dev/null
+++ b/include/linux/rp1_platform.h
@@ -0,0 +1,20 @@
+void rp1_get_platform(u32 *chip_id, u32 *platform);
+
+#endif
---
-2.54.0
-
1 file changed, 46 insertions(+)
create mode 100644 include/dt-bindings/pinctrl/rp1.h
-diff --git a/include/dt-bindings/pinctrl/rp1.h b/include/dt-bindings/pinctrl/rp1.h
-new file mode 100644
-index 000000000000..f3fa7f59e641
--- /dev/null
+++ b/include/dt-bindings/pinctrl/rp1.h
@@ -0,0 +1,46 @@
+#define RP1_PUD_KEEP 3
+
+#endif /* __DT_BINDINGS_PINCTRL_RP1_H__ */
---
-2.54.0
-
drivers/tty/serial/amba-pl011.c | 104 ++++++++++++++++++++++++++++++++
1 file changed, 104 insertions(+)
-diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
-index 2273ffccd2c9..f0a28e172e54 100644
--- a/drivers/tty/serial/amba-pl011.c
+++ b/drivers/tty/serial/amba-pl011.c
-@@ -152,6 +152,20 @@ static const struct vendor_data vendor_sbsa = {
+@@ -152,6 +152,20 @@ static const struct vendor_data vendor_s
.fixed_options = true,
};
#ifdef CONFIG_ACPI_SPCR_TABLE
static const struct vendor_data vendor_qdt_qdf2400_e44 = {
.reg_offset = pl011_std_offsets,
-@@ -480,6 +494,12 @@ static void pl011_dma_probe(struct uart_amba_port *uap)
+@@ -480,6 +494,12 @@ static void pl011_dma_probe(struct uart_
"RX DMA disabled - no residue processing\n");
return;
}
}
dmaengine_slave_config(chan, &rx_conf);
uap->dmarx.chan = chan;
-@@ -3080,6 +3100,87 @@ static struct platform_driver arm_sbsa_uart_platform_driver = {
+@@ -3080,6 +3100,87 @@ static struct platform_driver arm_sbsa_u
},
};
amba_driver_unregister(&pl011_driver);
}
---
-2.54.0
-
drivers/mmc/host/sdhci-pltfm.h | 3 ++
3 files changed, 64 insertions(+), 3 deletions(-)
-diff --git a/drivers/mmc/host/sdhci-of-dwcmshc.c b/drivers/mmc/host/sdhci-of-dwcmshc.c
-index 05704c30e254..b5fa8357c7f0 100644
--- a/drivers/mmc/host/sdhci-of-dwcmshc.c
+++ b/drivers/mmc/host/sdhci-of-dwcmshc.c
@@ -221,6 +221,7 @@ struct rk35xx_priv {
int vendor_specific_area1; /* P_VENDOR_SPECIFIC_AREA1 reg */
int vendor_specific_area2; /* P_VENDOR_SPECIFIC_AREA2 reg */
-@@ -302,6 +303,17 @@ static void dwcmshc_reset(struct sdhci_host *host, u8 mask)
+@@ -302,6 +303,17 @@ static void dwcmshc_reset(struct sdhci_h
sdhci_writel(host, SDHCI_INT_RESPONSE, SDHCI_INT_STATUS);
}
static unsigned int dwcmshc_get_max_clock(struct sdhci_host *host)
{
struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
-@@ -1108,10 +1120,11 @@ static int sg2042_init(struct device *dev, struct sdhci_host *host,
+@@ -1121,10 +1133,11 @@ static int sg2042_init(struct device *de
}
static const struct sdhci_ops sdhci_dwcmshc_ops = {
.reset = dwcmshc_reset,
.adma_write_desc = dwcmshc_adma_write_desc,
.irq = dwcmshc_cqe_irq_handler,
-@@ -1184,8 +1197,10 @@ static const struct sdhci_ops sdhci_dwcmshc_sg2042_ops = {
+@@ -1197,8 +1210,10 @@ static const struct sdhci_ops sdhci_dwcm
static const struct dwcmshc_pltfm_data sdhci_dwcmshc_pdata = {
.pdata = {
.ops = &sdhci_dwcmshc_ops,
},
};
-@@ -1200,6 +1215,17 @@ static const struct dwcmshc_pltfm_data sdhci_dwcmshc_bf3_pdata = {
+@@ -1213,6 +1228,17 @@ static const struct dwcmshc_pltfm_data s
};
#endif
static const struct dwcmshc_pltfm_data sdhci_dwcmshc_rk35xx_pdata = {
.pdata = {
.ops = &sdhci_dwcmshc_rk35xx_ops,
-@@ -1322,6 +1348,10 @@ static void dwcmshc_cqhci_init(struct sdhci_host *host, struct platform_device *
- }
+@@ -1336,6 +1362,10 @@ dsbl_cqe_caps:
static const struct of_device_id sdhci_dwcmshc_dt_ids[] = {
-+ {
+ {
+ .compatible = "raspberrypi,rp1-dwcmshc",
+ .data = &sdhci_dwcmshc_rp1_pdata,
+ },
- {
++ {
.compatible = "rockchip,rk3588-dwcmshc",
.data = &sdhci_dwcmshc_rk35xx_pdata,
-@@ -1414,13 +1444,32 @@ static int dwcmshc_probe(struct platform_device *pdev)
+ },
+@@ -1427,13 +1457,32 @@ static int dwcmshc_probe(struct platform
priv->bus_clk = devm_clk_get(dev, "bus");
if (!IS_ERR(priv->bus_clk))
clk_prepare_enable(priv->bus_clk);
priv->vendor_specific_area1 =
sdhci_readl(host, DWCMSHC_P_VENDOR_AREA1) & DWCMSHC_AREA1_MASK;
-@@ -1480,6 +1529,7 @@ static int dwcmshc_probe(struct platform_device *pdev)
+@@ -1493,6 +1542,7 @@ err_rpm:
pm_runtime_put_noidle(dev);
err_clk:
clk_disable_unprepare(pltfm_host->clk);
clk_disable_unprepare(priv->bus_clk);
clk_bulk_disable_unprepare(priv->num_other_clks, priv->other_clks);
return err;
-diff --git a/drivers/mmc/host/sdhci-pltfm.c b/drivers/mmc/host/sdhci-pltfm.c
-index 7f6ac636f040..ea58a8cdf33c 100644
--- a/drivers/mmc/host/sdhci-pltfm.c
+++ b/drivers/mmc/host/sdhci-pltfm.c
-@@ -32,6 +32,14 @@ unsigned int sdhci_pltfm_clk_get_max_clock(struct sdhci_host *host)
+@@ -32,6 +32,14 @@ unsigned int sdhci_pltfm_clk_get_max_clo
}
EXPORT_SYMBOL_GPL(sdhci_pltfm_clk_get_max_clock);
static const struct sdhci_ops sdhci_pltfm_ops = {
.set_clock = sdhci_set_clock,
.set_bus_width = sdhci_set_bus_width,
-diff --git a/drivers/mmc/host/sdhci-pltfm.h b/drivers/mmc/host/sdhci-pltfm.h
-index 9c32e8a289d6..15d98c833c73 100644
--- a/drivers/mmc/host/sdhci-pltfm.h
+++ b/drivers/mmc/host/sdhci-pltfm.h
@@ -20,6 +20,7 @@ struct sdhci_pltfm_data {
/* migrate from sdhci_of_host */
unsigned int clock;
-@@ -105,6 +106,8 @@ extern void sdhci_pltfm_remove(struct platform_device *pdev);
+@@ -105,6 +106,8 @@ extern void sdhci_pltfm_remove(struct pl
extern unsigned int sdhci_pltfm_clk_get_max_clock(struct sdhci_host *host);
static inline void *sdhci_pltfm_priv(struct sdhci_pltfm_host *host)
{
return host->private;
---
-2.54.0
-
3 files changed, 606 insertions(+)
create mode 100644 drivers/clk/clk-rp1-sdio.c
-diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig
-index 977df860c856..b6d2990980d1 100644
--- a/drivers/clk/Kconfig
+++ b/drivers/clk/Kconfig
@@ -96,6 +96,12 @@ config COMMON_CLK_RP1
config COMMON_CLK_HI655X
tristate "Clock driver for Hi655x" if EXPERT
depends on (MFD_HI655X_PMIC || COMPILE_TEST)
-diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile
-index fc95155f9167..29b2c6838753 100644
--- a/drivers/clk/Makefile
+++ b/drivers/clk/Makefile
-@@ -88,6 +88,7 @@ obj-$(CONFIG_COMMON_CLK_PWM) += clk-pwm.o
+@@ -88,6 +88,7 @@ obj-$(CONFIG_COMMON_CLK_PWM) += clk-pwm
obj-$(CONFIG_CLK_QORIQ) += clk-qoriq.o
obj-$(CONFIG_COMMON_CLK_RK808) += clk-rk808.o
obj-$(CONFIG_COMMON_CLK_RP1) += clk-rp1.o
obj-$(CONFIG_COMMON_CLK_RPMI) += clk-rpmi.o
obj-$(CONFIG_COMMON_CLK_HI655X) += clk-hi655x.o
obj-$(CONFIG_COMMON_CLK_S2MPS11) += clk-s2mps11.o
-diff --git a/drivers/clk/clk-rp1-sdio.c b/drivers/clk/clk-rp1-sdio.c
-new file mode 100644
-index 000000000000..c459bab0575c
--- /dev/null
+++ b/drivers/clk/clk-rp1-sdio.c
@@ -0,0 +1,599 @@
+MODULE_AUTHOR("Liam Fraser <liam@raspberrypi.com>");
+MODULE_DESCRIPTION("RP1 SDIO clock driver");
+MODULE_LICENSE("GPL");
---
-2.54.0
-
drivers/i2c/busses/i2c-designware-master.c | 17 +++++++++++++++--
2 files changed, 17 insertions(+), 2 deletions(-)
-diff --git a/drivers/i2c/busses/i2c-designware-core.h b/drivers/i2c/busses/i2c-designware-core.h
-index 436555543c79..1221ea290871 100644
--- a/drivers/i2c/busses/i2c-designware-core.h
+++ b/drivers/i2c/busses/i2c-designware-core.h
@@ -124,7 +124,9 @@
#define DW_IC_COMP_PARAM_1_SPEED_MODE_HIGH (BIT(2) | BIT(3))
#define DW_IC_COMP_PARAM_1_SPEED_MODE_MASK GENMASK(3, 2)
-diff --git a/drivers/i2c/busses/i2c-designware-master.c b/drivers/i2c/busses/i2c-designware-master.c
-index 45bfca05bb30..46e33b1f5f28 100644
--- a/drivers/i2c/busses/i2c-designware-master.c
+++ b/drivers/i2c/busses/i2c-designware-master.c
-@@ -272,6 +272,10 @@ static void i2c_dw_xfer_init(struct dw_i2c_dev *dev)
+@@ -272,6 +272,10 @@ static void i2c_dw_xfer_init(struct dw_i
ic_tar = DW_IC_TAR_10BITADDR_MASTER;
}
while (buf_len > 0 && tx_limit > 0 && rx_limit > 0) {
u32 cmd = 0;
-@@ -919,14 +931,15 @@ static const struct i2c_algorithm i2c_dw_algo = {
+@@ -919,14 +931,15 @@ static const struct i2c_algorithm i2c_dw
};
static const struct i2c_adapter_quirks i2c_dw_quirks = {
dev->master_cfg = DW_IC_CON_MASTER | DW_IC_CON_SLAVE_DISABLE |
DW_IC_CON_RESTART_EN;
---
-2.54.0
-
.../dma/dw-axi-dmac/dw-axi-dmac-platform.c | 135 +++++++++++++++---
1 file changed, 114 insertions(+), 21 deletions(-)
-diff --git a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
-index b23536645ff7..79bd6525c371 100644
--- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
+++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
@@ -12,6 +12,7 @@
#include <linux/dma-mapping.h>
#include <linux/err.h>
#include <linux/interrupt.h>
-@@ -95,6 +96,17 @@ axi_chan_iowrite64(struct axi_dma_chan *chan, u32 reg, u64 val)
+@@ -95,6 +96,17 @@ axi_chan_iowrite64(struct axi_dma_chan *
iowrite32(upper_32_bits(val), chan->chan_regs + reg + 4);
}
static inline void axi_chan_config_write(struct axi_dma_chan *chan,
struct axi_dma_chan_config *config)
{
-@@ -266,7 +278,18 @@ static void axi_dma_hw_init(struct axi_dma_chip *chip)
+@@ -266,7 +278,18 @@ static void axi_dma_hw_init(struct axi_d
{
int ret;
u32 i;
--
+ int retries = 1000;
-+
+
+ axi_dma_iowrite32(chip, DMAC_RESET, 1);
+ while (axi_dma_ioread32(chip, DMAC_RESET)) {
+ retries--;
for (i = 0; i < chip->dw->hdata->nr_channels; i++) {
axi_chan_irq_disable(&chip->dw->chan[i], DWAXIDMAC_IRQ_ALL);
axi_chan_disable(&chip->dw->chan[i]);
-@@ -351,6 +374,48 @@ static void vchan_desc_put(struct virt_dma_desc *vdesc)
+@@ -351,6 +374,48 @@ static void vchan_desc_put(struct virt_d
axi_desc_put(vd_to_axi_desc(vdesc));
}
static enum dma_status
dma_chan_tx_status(struct dma_chan *dchan, dma_cookie_t cookie,
struct dma_tx_state *txstate)
-@@ -360,10 +425,7 @@ dma_chan_tx_status(struct dma_chan *dchan, dma_cookie_t cookie,
+@@ -360,10 +425,7 @@ dma_chan_tx_status(struct dma_chan *dcha
enum dma_status status;
u32 completed_length;
unsigned long flags;
status = dma_cookie_status(dchan, cookie, txstate);
if (status == DMA_COMPLETE || !txstate)
-@@ -372,16 +434,31 @@ dma_chan_tx_status(struct dma_chan *dchan, dma_cookie_t cookie,
+@@ -372,16 +434,31 @@ dma_chan_tx_status(struct dma_chan *dcha
spin_lock_irqsave(&chan->vc.lock, flags);
vdesc = vchan_find_desc(&chan->vc, cookie);
return status;
}
-@@ -435,8 +512,6 @@ static void axi_chan_block_xfer_start(struct axi_dma_chan *chan,
+@@ -435,8 +512,6 @@ static void axi_chan_block_xfer_start(st
return;
}
config.dst_multblk_type = DWAXIDMAC_MBLK_TYPE_LL;
config.src_multblk_type = DWAXIDMAC_MBLK_TYPE_LL;
config.tt_fc = DWAXIDMAC_TT_FC_MEM_TO_MEM_DMAC;
-@@ -569,7 +644,7 @@ static void dw_axi_dma_set_hw_channel(struct axi_dma_chan *chan, bool set)
+@@ -569,7 +644,7 @@ static void dw_axi_dma_set_hw_channel(st
unsigned long reg_value, val;
if (!chip->apb_regs) {
return;
}
-@@ -673,18 +748,25 @@ static int dw_axi_dma_set_hw_desc(struct axi_dma_chan *chan,
+@@ -671,18 +746,25 @@ static int dw_axi_dma_set_hw_desc(struct
switch (chan->direction) {
case DMA_MEM_TO_DEV:
reg_width = __ffs(chan->config.dst_addr_width);
DWAXIDMAC_CH_CTL_L_INC << CH_CTL_L_DST_INC_POS |
DWAXIDMAC_CH_CTL_L_NOINC << CH_CTL_L_SRC_INC_POS;
block_ts = len >> reg_width;
-@@ -720,9 +802,6 @@ static int dw_axi_dma_set_hw_desc(struct axi_dma_chan *chan,
+@@ -718,9 +800,6 @@ static int dw_axi_dma_set_hw_desc(struct
}
hw_desc->lli->block_ts_lo = cpu_to_le32(block_ts - 1);
hw_desc->lli->ctl_lo = cpu_to_le32(ctllo);
set_desc_src_master(hw_desc);
-@@ -817,6 +896,8 @@ dw_axi_dma_chan_prep_cyclic(struct dma_chan *dchan, dma_addr_t dma_addr,
+@@ -815,6 +894,8 @@ dw_axi_dma_chan_prep_cyclic(struct dma_c
src_addr += segment_len;
}
llp = desc->hw_desc[0].llp;
/* Managed transfer list */
-@@ -896,6 +977,8 @@ dw_axi_dma_chan_prep_slave_sg(struct dma_chan *dchan, struct scatterlist *sgl,
+@@ -894,6 +975,8 @@ dw_axi_dma_chan_prep_slave_sg(struct dma
} while (len >= segment_len);
}
/* Set end-of-link to the last link descriptor of list */
set_desc_last(&desc->hw_desc[num_sgs - 1]);
-@@ -1003,6 +1086,8 @@ dma_chan_prep_dma_memcpy(struct dma_chan *dchan, dma_addr_t dst_adr,
+@@ -1001,6 +1084,8 @@ dma_chan_prep_dma_memcpy(struct dma_chan
num++;
}
/* Set end-of-link to the last link descriptor of list */
set_desc_last(&desc->hw_desc[num - 1]);
/* Managed transfer list */
-@@ -1051,7 +1136,7 @@ static void axi_chan_dump_lli(struct axi_dma_chan *chan,
+@@ -1049,7 +1134,7 @@ static void axi_chan_dump_lli(struct axi
static void axi_chan_list_dump_lli(struct axi_dma_chan *chan,
struct axi_dma_desc *desc_head)
{
int i;
for (i = 0; i < count; i++)
-@@ -1094,11 +1179,11 @@ static noinline void axi_chan_handle_err(struct axi_dma_chan *chan, u32 status)
+@@ -1092,11 +1177,11 @@ out:
static void axi_chan_block_xfer_complete(struct axi_dma_chan *chan)
{
u64 llp;
int i;
-@@ -1120,6 +1205,7 @@ static void axi_chan_block_xfer_complete(struct axi_dma_chan *chan)
+@@ -1118,6 +1203,7 @@ static void axi_chan_block_xfer_complete
if (chan->cyclic) {
desc = vd_to_axi_desc(vd);
if (desc) {
llp = lo_hi_readq(chan->chan_regs + CH_LLP);
for (i = 0; i < count; i++) {
hw_desc = &desc->hw_desc[i];
-@@ -1140,6 +1226,9 @@ static void axi_chan_block_xfer_complete(struct axi_dma_chan *chan)
+@@ -1138,6 +1224,9 @@ static void axi_chan_block_xfer_complete
/* Remove the completed descriptor from issued list before completing */
list_del(&vd->node);
vchan_cookie_complete(vd);
}
out:
-@@ -1397,6 +1486,10 @@ static int parse_device_properties(struct axi_dma_chip *chip)
+@@ -1395,6 +1484,10 @@ static int parse_device_properties(struc
chip->dw->hdata->nr_masters = tmp;
ret = device_property_read_u32(dev, "snps,data-width", &tmp);
if (ret)
return ret;
---
-2.54.0
-
drivers/spi/spi-dw-mmio.c | 8 ++++++--
2 files changed, 15 insertions(+), 5 deletions(-)
-diff --git a/drivers/spi/spi-dw-core.c b/drivers/spi/spi-dw-core.c
-index b3b883cb9541..2840e8dc7673 100644
--- a/drivers/spi/spi-dw-core.c
+++ b/drivers/spi/spi-dw-core.c
-@@ -241,8 +241,11 @@ static irqreturn_t dw_spi_transfer_handler(struct dw_spi *dws)
+@@ -241,8 +241,11 @@ static irqreturn_t dw_spi_transfer_handl
*/
if (irq_status & DW_SPI_INT_TXEI) {
dw_writer(dws);
}
return IRQ_HANDLED;
-@@ -369,8 +372,11 @@ static void dw_spi_irq_setup(struct dw_spi *dws)
+@@ -369,8 +372,11 @@ static void dw_spi_irq_setup(struct dw_s
dws->transfer_handler = dw_spi_transfer_handler;
dw_spi_umask_intr(dws, imask);
}
-diff --git a/drivers/spi/spi-dw-mmio.c b/drivers/spi/spi-dw-mmio.c
-index 7a5197586919..8ab9bc488b4e 100644
--- a/drivers/spi/spi-dw-mmio.c
+++ b/drivers/spi/spi-dw-mmio.c
@@ -20,6 +20,7 @@
#include "spi-dw.h"
-@@ -341,8 +342,11 @@ static int dw_spi_mmio_probe(struct platform_device *pdev)
+@@ -341,8 +342,11 @@ static int dw_spi_mmio_probe(struct plat
dws->paddr = mem->start;
dws->irq = platform_get_irq(pdev, 0);
dwsmmio->clk = devm_clk_get_enabled(&pdev->dev, NULL);
if (IS_ERR(dwsmmio->clk))
---
-2.54.0
-
create mode 100644 Documentation/devicetree/bindings/pwm/pwm-rp1.yaml
create mode 100644 drivers/pwm/pwm-rp1.c
-diff --git a/Documentation/devicetree/bindings/pwm/pwm-rp1.yaml b/Documentation/devicetree/bindings/pwm/pwm-rp1.yaml
-new file mode 100644
-index 000000000000..db9d7085f1c3
--- /dev/null
+++ b/Documentation/devicetree/bindings/pwm/pwm-rp1.yaml
@@ -0,0 +1,38 @@
+ clocks = <&rp1_sys>;
+ #pwm-cells = <3>;
+ };
-diff --git a/drivers/pwm/Kconfig b/drivers/pwm/Kconfig
-index c2fd3f4b62d9..3a81b1eccbbc 100644
--- a/drivers/pwm/Kconfig
+++ b/drivers/pwm/Kconfig
@@ -607,6 +607,15 @@ config PWM_RENESAS_TPU
config PWM_ROCKCHIP
tristate "Rockchip PWM support"
depends on ARCH_ROCKCHIP || COMPILE_TEST
-diff --git a/drivers/pwm/Makefile b/drivers/pwm/Makefile
-index dfa8b4966ee1..3b3fb66c8b5c 100644
--- a/drivers/pwm/Makefile
+++ b/drivers/pwm/Makefile
-@@ -54,6 +54,7 @@ obj-$(CONFIG_PWM_RENESAS_RCAR) += pwm-rcar.o
+@@ -54,6 +54,7 @@ obj-$(CONFIG_PWM_RENESAS_RCAR) += pwm-rc
obj-$(CONFIG_PWM_RENESAS_RZG2L_GPT) += pwm-rzg2l-gpt.o
obj-$(CONFIG_PWM_RENESAS_RZ_MTU3) += pwm-rz-mtu3.o
obj-$(CONFIG_PWM_RENESAS_TPU) += pwm-renesas-tpu.o
obj-$(CONFIG_PWM_ROCKCHIP) += pwm-rockchip.o
obj-$(CONFIG_PWM_SAMSUNG) += pwm-samsung.o
obj-$(CONFIG_PWM_SIFIVE) += pwm-sifive.o
-diff --git a/drivers/pwm/pwm-rp1.c b/drivers/pwm/pwm-rp1.c
-new file mode 100644
-index 000000000000..fcf20ded80cf
--- /dev/null
+++ b/drivers/pwm/pwm-rp1.c
@@ -0,0 +1,186 @@
+MODULE_AUTHOR("Naushir Patuck <naush@raspberrypi.com");
+MODULE_DESCRIPTION("RP1 PWM driver");
+MODULE_LICENSE("GPL");
---
-2.54.0
-
create mode 100644 drivers/gpu/drm/rp1/rp1-dsi/rp1_dsi_dma.c
create mode 100644 drivers/gpu/drm/rp1/rp1-dsi/rp1_dsi_dsi.c
-diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
-index ed85d0ceee3b..5b1dee660a07 100644
--- a/drivers/gpu/drm/Kconfig
+++ b/drivers/gpu/drm/Kconfig
@@ -346,6 +346,8 @@ source "drivers/gpu/drm/v3d/Kconfig"
source "drivers/gpu/drm/loongson/Kconfig"
source "drivers/gpu/drm/etnaviv/Kconfig"
-diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
-index 742f0d590c5a..ed3850efc030 100644
--- a/drivers/gpu/drm/Makefile
+++ b/drivers/gpu/drm/Makefile
-@@ -252,3 +252,5 @@ quiet_cmd_hdrtest = HDRTEST $(patsubst %.hdrtest,%.h,$@)
+@@ -253,3 +253,5 @@ quiet_cmd_hdrtest = HDRTEST $(patsubst %
$(obj)/%.hdrtest: $(src)/%.h FORCE
$(call if_changed_dep,hdrtest)
+
+obj-y += rp1/
-diff --git a/drivers/gpu/drm/rp1/Kconfig b/drivers/gpu/drm/rp1/Kconfig
-new file mode 100644
-index 000000000000..d73c62e0ab64
--- /dev/null
+++ b/drivers/gpu/drm/rp1/Kconfig
@@ -0,0 +1,5 @@
+source "drivers/gpu/drm/rp1/rp1-dpi/Kconfig"
+
+source "drivers/gpu/drm/rp1/rp1-vec/Kconfig"
-diff --git a/drivers/gpu/drm/rp1/Makefile b/drivers/gpu/drm/rp1/Makefile
-new file mode 100644
-index 000000000000..0f915b158e96
--- /dev/null
+++ b/drivers/gpu/drm/rp1/Makefile
@@ -0,0 +1,4 @@
+obj-$(CONFIG_DRM_RP1_DPI) += rp1-dpi/
+obj-$(CONFIG_DRM_RP1_VEC) += rp1-vec/
+
-diff --git a/drivers/gpu/drm/rp1/rp1-dsi/Kconfig b/drivers/gpu/drm/rp1/rp1-dsi/Kconfig
-new file mode 100644
-index 000000000000..1c75e8f9399b
--- /dev/null
+++ b/drivers/gpu/drm/rp1/rp1-dsi/Kconfig
@@ -0,0 +1,12 @@
+ select GENERIC_PHY_MIPI_DPHY
+ help
+ Choose this option to enable DSI display on RP1
-diff --git a/drivers/gpu/drm/rp1/rp1-dsi/Makefile b/drivers/gpu/drm/rp1/rp1-dsi/Makefile
-new file mode 100644
-index 000000000000..1a9672c7bda0
--- /dev/null
+++ b/drivers/gpu/drm/rp1/rp1-dsi/Makefile
@@ -0,0 +1,5 @@
+drm-rp1-dsi-y := rp1_dsi.o rp1_dsi_dma.o rp1_dsi_dsi.o
+
+obj-$(CONFIG_DRM_RP1_DSI) += drm-rp1-dsi.o
-diff --git a/drivers/gpu/drm/rp1/rp1-dsi/rp1_dsi.c b/drivers/gpu/drm/rp1/rp1-dsi/rp1_dsi.c
-new file mode 100644
-index 000000000000..d452b0b1804e
--- /dev/null
+++ b/drivers/gpu/drm/rp1/rp1-dsi/rp1_dsi.c
@@ -0,0 +1,549 @@
+MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("MIPI DSI driver for Raspberry Pi RP1");
+MODULE_AUTHOR("Nick Hollinghurst");
-diff --git a/drivers/gpu/drm/rp1/rp1-dsi/rp1_dsi.h b/drivers/gpu/drm/rp1/rp1-dsi/rp1_dsi.h
-new file mode 100644
-index 000000000000..b4d8cf5b74b6
--- /dev/null
+++ b/drivers/gpu/drm/rp1/rp1-dsi/rp1_dsi.h
@@ -0,0 +1,99 @@
+
+#endif
+
-diff --git a/drivers/gpu/drm/rp1/rp1-dsi/rp1_dsi_dma.c b/drivers/gpu/drm/rp1/rp1-dsi/rp1_dsi_dma.c
-new file mode 100644
-index 000000000000..86fa351562b4
--- /dev/null
+++ b/drivers/gpu/drm/rp1/rp1-dsi/rp1_dsi_dma.c
@@ -0,0 +1,455 @@
+ }
+ return u ? IRQ_HANDLED : IRQ_NONE;
+}
-diff --git a/drivers/gpu/drm/rp1/rp1-dsi/rp1_dsi_dsi.c b/drivers/gpu/drm/rp1/rp1-dsi/rp1_dsi_dsi.c
-new file mode 100644
-index 000000000000..3ef6497086d2
--- /dev/null
+++ b/drivers/gpu/drm/rp1/rp1-dsi/rp1_dsi_dsi.c
@@ -0,0 +1,674 @@
+{
+ DSI_WRITE(DSI_MODE_CFG, mode);
+}
---
-2.54.0
-
create mode 100644 drivers/gpu/drm/rp1/rp1-dpi/rp1_dpi_hw.c
create mode 100644 drivers/gpu/drm/rp1/rp1-dpi/rp1_dpi_pio.c
-diff --git a/drivers/gpu/drm/rp1/rp1-dpi/Kconfig b/drivers/gpu/drm/rp1/rp1-dpi/Kconfig
-new file mode 100644
-index 000000000000..283ff54a353f
--- /dev/null
+++ b/drivers/gpu/drm/rp1/rp1-dpi/Kconfig
@@ -0,0 +1,14 @@
+ There is an optional dependency on RP1_PIO, as the PIO block
+ must be used to fix up interlaced sync. Interlaced DPI modes
+ will be unavailable when RP1_PIO is not selected.
-diff --git a/drivers/gpu/drm/rp1/rp1-dpi/Makefile b/drivers/gpu/drm/rp1/rp1-dpi/Makefile
-new file mode 100644
-index 000000000000..30d499c2959e
--- /dev/null
+++ b/drivers/gpu/drm/rp1/rp1-dpi/Makefile
@@ -0,0 +1,5 @@
+drm-rp1-dpi-y := rp1_dpi.o rp1_dpi_hw.o rp1_dpi_cfg.o rp1_dpi_pio.o
+
+obj-$(CONFIG_DRM_RP1_DPI) += drm-rp1-dpi.o
-diff --git a/drivers/gpu/drm/rp1/rp1-dpi/rp1_dpi.c b/drivers/gpu/drm/rp1/rp1-dpi/rp1_dpi.c
-new file mode 100644
-index 000000000000..16df314afd4e
--- /dev/null
+++ b/drivers/gpu/drm/rp1/rp1-dpi/rp1_dpi.c
@@ -0,0 +1,497 @@
+MODULE_AUTHOR("Nick Hollinghurst");
+MODULE_DESCRIPTION("DRM driver for DPI output on Raspberry Pi RP1");
+MODULE_LICENSE("GPL");
-diff --git a/drivers/gpu/drm/rp1/rp1-dpi/rp1_dpi.h b/drivers/gpu/drm/rp1/rp1-dpi/rp1_dpi.h
-new file mode 100644
-index 000000000000..693042575a90
--- /dev/null
+++ b/drivers/gpu/drm/rp1/rp1-dpi/rp1_dpi.h
@@ -0,0 +1,95 @@
+int rp1dpi_pio_start(struct rp1_dpi *dpi, const struct drm_display_mode *mode,
+ bool force_csync);
+void rp1dpi_pio_stop(struct rp1_dpi *dpi);
-diff --git a/drivers/gpu/drm/rp1/rp1-dpi/rp1_dpi_cfg.c b/drivers/gpu/drm/rp1/rp1-dpi/rp1_dpi_cfg.c
-new file mode 100644
-index 000000000000..6a384a31bb34
--- /dev/null
+++ b/drivers/gpu/drm/rp1/rp1-dpi/rp1_dpi_cfg.c
@@ -0,0 +1,192 @@
+ CFG_WRITE(VIDEO_OUT_CFG_VDAC_CFG, 0);
+ CFG_WRITE(VIDEO_OUT_CFG_MEM_PD, VIDEO_OUT_CFG_MEM_PD_BITS);
+}
-diff --git a/drivers/gpu/drm/rp1/rp1-dpi/rp1_dpi_hw.c b/drivers/gpu/drm/rp1/rp1-dpi/rp1_dpi_hw.c
-new file mode 100644
-index 000000000000..99d55e866e22
--- /dev/null
+++ b/drivers/gpu/drm/rp1/rp1-dpi/rp1_dpi_hw.c
@@ -0,0 +1,668 @@
+
+ return u ? IRQ_HANDLED : IRQ_NONE;
+}
-diff --git a/drivers/gpu/drm/rp1/rp1-dpi/rp1_dpi_pio.c b/drivers/gpu/drm/rp1/rp1-dpi/rp1_dpi_pio.c
-new file mode 100644
-index 000000000000..9533d60d7721
--- /dev/null
+++ b/drivers/gpu/drm/rp1/rp1-dpi/rp1_dpi_pio.c
@@ -0,0 +1,614 @@
+}
+
+#endif
---
-2.54.0
-
create mode 100644 drivers/gpu/drm/rp1/rp1-vec/rp1_vec_hw.c
create mode 100644 drivers/gpu/drm/rp1/rp1-vec/vec_regs.h
-diff --git a/drivers/gpu/drm/rp1/rp1-vec/Kconfig b/drivers/gpu/drm/rp1/rp1-vec/Kconfig
-new file mode 100644
-index 000000000000..60b78bdd0523
--- /dev/null
+++ b/drivers/gpu/drm/rp1/rp1-vec/Kconfig
@@ -0,0 +1,9 @@
+ select DRM_KMS_HELPER
+ help
+ Choose this option to enable Video Out on RP1
-diff --git a/drivers/gpu/drm/rp1/rp1-vec/Makefile b/drivers/gpu/drm/rp1/rp1-vec/Makefile
-new file mode 100644
-index 000000000000..7e941cad342e
--- /dev/null
+++ b/drivers/gpu/drm/rp1/rp1-vec/Makefile
@@ -0,0 +1,5 @@
+drm-rp1-vec-y := rp1_vec.o rp1_vec_hw.o rp1_vec_cfg.o
+
+obj-$(CONFIG_DRM_RP1_VEC) += drm-rp1-vec.o
-diff --git a/drivers/gpu/drm/rp1/rp1-vec/rp1_vec.c b/drivers/gpu/drm/rp1/rp1-vec/rp1_vec.c
-new file mode 100644
-index 000000000000..d2e5cd57e936
--- /dev/null
+++ b/drivers/gpu/drm/rp1/rp1-vec/rp1_vec.c
@@ -0,0 +1,606 @@
+MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("DRM driver for Composite Video on Raspberry Pi RP1");
+MODULE_AUTHOR("Nick Hollinghurst");
-diff --git a/drivers/gpu/drm/rp1/rp1-vec/rp1_vec.h b/drivers/gpu/drm/rp1/rp1-vec/rp1_vec.h
-new file mode 100644
-index 000000000000..c6c29723f85a
--- /dev/null
+++ b/drivers/gpu/drm/rp1/rp1-vec/rp1_vec.h
@@ -0,0 +1,78 @@
+
+void rp1vec_vidout_setup(struct rp1_vec *vec);
+void rp1vec_vidout_poweroff(struct rp1_vec *vec);
-diff --git a/drivers/gpu/drm/rp1/rp1-vec/rp1_vec_cfg.c b/drivers/gpu/drm/rp1/rp1-vec/rp1_vec_cfg.c
-new file mode 100644
-index 000000000000..f3c8e273e083
--- /dev/null
+++ b/drivers/gpu/drm/rp1/rp1-vec/rp1_vec_cfg.c
@@ -0,0 +1,191 @@
+ CFG_WRITE(VIDEO_OUT_CFG_VDAC_CFG, 0);
+ CFG_WRITE(VIDEO_OUT_CFG_MEM_PD, VIDEO_OUT_CFG_MEM_PD_BITS);
+}
-diff --git a/drivers/gpu/drm/rp1/rp1-vec/rp1_vec_hw.c b/drivers/gpu/drm/rp1/rp1-vec/rp1_vec_hw.c
-new file mode 100644
-index 000000000000..c69dc031777d
--- /dev/null
+++ b/drivers/gpu/drm/rp1/rp1-vec/rp1_vec_hw.c
@@ -0,0 +1,634 @@
+
+ return u ? IRQ_HANDLED : IRQ_NONE;
+}
-diff --git a/drivers/gpu/drm/rp1/rp1-vec/vec_regs.h b/drivers/gpu/drm/rp1/rp1-vec/vec_regs.h
-new file mode 100644
-index 000000000000..03632f2e8d4b
--- /dev/null
+++ b/drivers/gpu/drm/rp1/rp1-vec/vec_regs.h
@@ -0,0 +1,1420 @@
+#define VEC_DAC_EC_PAL_EN_ACCESS "RW"
+// =============================================================================
+#endif // VEC_REGS_DEFINED
-diff --git a/drivers/gpu/drm/vc4/vc4_vec.c b/drivers/gpu/drm/vc4/vc4_vec.c
-index 06d702e879b0..67458944a2e7 100644
--- a/drivers/gpu/drm/vc4/vc4_vec.c
+++ b/drivers/gpu/drm/vc4/vc4_vec.c
-@@ -272,6 +272,18 @@ static const struct debugfs_reg32 vec_regs[] = {
+@@ -272,6 +272,18 @@ static const struct debugfs_reg32 vec_re
VC4_REG32(VEC_DAC_MISC),
};
static const struct vc4_vec_tv_mode vc4_vec_tv_modes[] = {
{
.mode = DRM_MODE_TV_MODE_NTSC,
-@@ -496,9 +508,31 @@ static const struct drm_connector_funcs vc4_vec_connector_funcs = {
+@@ -496,9 +508,31 @@ static const struct drm_connector_funcs
.atomic_set_property = vc4_vec_connector_set_property,
};
};
static int vc4_vec_connector_init(struct drm_device *dev, struct vc4_vec *vec)
---
-2.54.0
-
3 files changed, 149 insertions(+)
create mode 100644 drivers/nvmem/raspberrypi-otp.c
-diff --git a/drivers/nvmem/Kconfig b/drivers/nvmem/Kconfig
-index 11b098705ec6..abde213481b6 100644
--- a/drivers/nvmem/Kconfig
+++ b/drivers/nvmem/Kconfig
-@@ -63,6 +63,18 @@ config NVMEM_APPLE_SPMI
- This driver can also be built as a module. If so, the module
- will be called apple-nvmem-spmi.
+@@ -75,6 +75,18 @@ config NVMEM_BLOCK
+ typically used with eMMC to store MAC addresses or Wi-Fi
+ calibration data on embedded devices.
+config NVMEM_RASPBERRYPI_OTP
+ tristate "Raspberry Pi OTP support"
config NVMEM_BCM_OCOTP
tristate "Broadcom On-Chip OTP Controller support"
depends on ARCH_BCM_IPROC || COMPILE_TEST
-diff --git a/drivers/nvmem/Makefile b/drivers/nvmem/Makefile
-index 70a4464dcb1e..7e7ed3505d98 100644
--- a/drivers/nvmem/Makefile
+++ b/drivers/nvmem/Makefile
-@@ -16,6 +16,8 @@ obj-$(CONFIG_NVMEM_APPLE_EFUSES) += nvmem-apple-efuses.o
+@@ -16,6 +16,8 @@ obj-$(CONFIG_NVMEM_APPLE_EFUSES) += nvme
nvmem-apple-efuses-y := apple-efuses.o
obj-$(CONFIG_NVMEM_APPLE_SPMI) += apple_nvmem_spmi.o
apple_nvmem_spmi-y := apple-spmi-nvmem.o
+nvmem-raspberrypi-otp-y := raspberrypi-otp.o
obj-$(CONFIG_NVMEM_BCM_OCOTP) += nvmem-bcm-ocotp.o
nvmem-bcm-ocotp-y := bcm-ocotp.o
- obj-$(CONFIG_NVMEM_BRCM_NVRAM) += nvmem_brcm_nvram.o
-diff --git a/drivers/nvmem/raspberrypi-otp.c b/drivers/nvmem/raspberrypi-otp.c
-new file mode 100644
-index 000000000000..a7c735e9e964
+ obj-$(CONFIG_NVMEM_BLOCK) += nvmem-block.o
--- /dev/null
+++ b/drivers/nvmem/raspberrypi-otp.c
@@ -0,0 +1,135 @@
+
+MODULE_AUTHOR("Dom Cobley <popcornmix@gmail.com>");
+MODULE_LICENSE("GPL");
---
-2.54.0
-
.../devicetree/bindings/net/cdns,macb.yaml | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
-diff --git a/Documentation/devicetree/bindings/net/cdns,macb.yaml b/Documentation/devicetree/bindings/net/cdns,macb.yaml
-index 1029786a855c..62c1f8cb7300 100644
--- a/Documentation/devicetree/bindings/net/cdns,macb.yaml
+++ b/Documentation/devicetree/bindings/net/cdns,macb.yaml
@@ -145,6 +145,22 @@ properties:
patternProperties:
"^ethernet-phy@[0-9a-f]$":
type: object
---
-2.54.0
-
3 files changed, 313 insertions(+)
create mode 100644 drivers/hwmon/rp1-adc.c
-diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig
-index 2a71b6e834b0..ef1c52c1b290 100644
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -2660,6 +2660,13 @@ config SENSORS_INTEL_M10_BMC_HWMON
if ACPI
comment "ACPI drivers"
-diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile
-index 73b2abdcc6dd..7f4b2186c74b 100644
--- a/drivers/hwmon/Makefile
+++ b/drivers/hwmon/Makefile
-@@ -198,6 +198,7 @@ obj-$(CONFIG_SENSORS_PT5161L) += pt5161l.o
+@@ -198,6 +198,7 @@ obj-$(CONFIG_SENSORS_PT5161L) += pt5161l
obj-$(CONFIG_SENSORS_PWM_FAN) += pwm-fan.o
obj-$(CONFIG_SENSORS_QNAP_MCU_HWMON) += qnap-mcu-hwmon.o
obj-$(CONFIG_SENSORS_RASPBERRYPI_HWMON) += raspberrypi-hwmon.o
obj-$(CONFIG_SENSORS_SA67MCU) += sa67mcu-hwmon.o
obj-$(CONFIG_SENSORS_SBTSI) += sbtsi_temp.o
obj-$(CONFIG_SENSORS_SBRMI) += sbrmi.o
-diff --git a/drivers/hwmon/rp1-adc.c b/drivers/hwmon/rp1-adc.c
-new file mode 100644
-index 000000000000..3201a3cfa7a9
--- /dev/null
+++ b/drivers/hwmon/rp1-adc.c
@@ -0,0 +1,305 @@
+MODULE_DESCRIPTION("RP1 ADC driver");
+MODULE_AUTHOR("Phil Elwell <phil@raspberrypi.com>");
+MODULE_LICENSE("GPL");
---
-2.54.0
-
drivers/mfd/bcm2835-pm.c | 28 +++++++++++++++++++---------
1 file changed, 19 insertions(+), 9 deletions(-)
-diff --git a/drivers/mfd/bcm2835-pm.c b/drivers/mfd/bcm2835-pm.c
-index 3cb2b9423121..8b31775da7b6 100644
--- a/drivers/mfd/bcm2835-pm.c
+++ b/drivers/mfd/bcm2835-pm.c
-@@ -69,12 +69,30 @@ static int bcm2835_pm_get_pdata(struct platform_device *pdev,
+@@ -69,12 +69,30 @@ static int bcm2835_pm_get_pdata(struct p
return 0;
}
pm = devm_kzalloc(dev, sizeof(*pm), GFP_KERNEL);
if (!pm)
return -ENOMEM;
-@@ -97,21 +115,13 @@ static int bcm2835_pm_probe(struct platform_device *pdev)
+@@ -97,22 +115,13 @@ static int bcm2835_pm_probe(struct platf
* bcm2835-pm binding as the key for whether we can reference
* the full PM register range and support power domains.
*/
- { .compatible = "brcm,bcm2835-pm-wdt", },
- { .compatible = "brcm,bcm2835-pm", },
- { .compatible = "brcm,bcm2711-pm", },
+- { .compatible = "brcm,bcm2712-pm", },
- {},
-};
-MODULE_DEVICE_TABLE(of, bcm2835_pm_of_match);
static struct platform_driver bcm2835_pm_driver = {
.probe = bcm2835_pm_probe,
.driver = {
---
-2.54.0
-
drivers/pmdomain/bcm/bcm2835-power.c | 29 ++++++++++++++++++----------
1 file changed, 19 insertions(+), 10 deletions(-)
-diff --git a/drivers/pmdomain/bcm/bcm2835-power.c b/drivers/pmdomain/bcm/bcm2835-power.c
-index f2472f1e1752..6c0ae6b62027 100644
--- a/drivers/pmdomain/bcm/bcm2835-power.c
+++ b/drivers/pmdomain/bcm/bcm2835-power.c
@@ -80,6 +80,7 @@
#define PM_ENAB BIT(12)
#define PM_ISPRSTN BIT(8)
#define PM_H264RSTN BIT(7)
-@@ -377,6 +378,9 @@ static int bcm2835_power_pd_power_on(struct generic_pm_domain *domain)
+@@ -377,6 +378,9 @@ static int bcm2835_power_pd_power_on(str
return bcm2835_power_power_on(pd, PM_GRAFX);
case BCM2835_POWER_DOMAIN_GRAFX_V3D:
return bcm2835_asb_power_on(pd, PM_GRAFX,
ASB_V3D_M_CTRL, ASB_V3D_S_CTRL,
PM_V3DRSTN);
-@@ -443,6 +447,9 @@ static int bcm2835_power_pd_power_off(struct generic_pm_domain *domain)
+@@ -443,6 +447,9 @@ static int bcm2835_power_pd_power_off(st
return bcm2835_power_power_off(pd, PM_GRAFX);
case BCM2835_POWER_DOMAIN_GRAFX_V3D:
return bcm2835_asb_power_off(pd, PM_GRAFX,
ASB_V3D_M_CTRL, ASB_V3D_S_CTRL,
PM_V3DRSTN);
-@@ -631,19 +638,21 @@ static int bcm2835_power_probe(struct platform_device *pdev)
+@@ -631,19 +638,21 @@ static int bcm2835_power_probe(struct pl
power->asb = pm->asb;
power->rpivid_asb = pm->rpivid_asb;
}
power->pd_xlate.domains = devm_kcalloc(dev,
---
-2.54.0
-
drivers/spi/spi-gpio.c | 72 +++++++++++++++++++++++++++++-------------
1 file changed, 50 insertions(+), 22 deletions(-)
-diff --git a/drivers/spi/spi-gpio.c b/drivers/spi/spi-gpio.c
-index a85d9b1a3355..a6f512d35854 100644
--- a/drivers/spi/spi-gpio.c
+++ b/drivers/spi/spi-gpio.c
@@ -34,8 +34,9 @@ struct spi_gpio {
};
/*----------------------------------------------------------------------*/
-@@ -204,12 +205,18 @@ static void spi_gpio_chipselect(struct spi_device *spi, int is_active)
+@@ -204,12 +205,18 @@ static void spi_gpio_chipselect(struct s
gpiod_set_value_cansleep(spi_gpio->sck, spi->mode & SPI_CPOL);
}
}
if (spi_gpio->sck_idle_input && !is_active)
-@@ -233,11 +240,14 @@ static int spi_gpio_setup(struct spi_device *spi)
+@@ -233,11 +240,14 @@ static int spi_gpio_setup(struct spi_dev
/*
* The CS GPIOs have already been
* initialized from the descriptor lookup.
if (ret)
return ret;
}
-@@ -314,31 +324,31 @@ static int spi_gpio_request(struct device *dev, struct spi_gpio *spi_gpio)
+@@ -314,31 +324,31 @@ static int spi_gpio_request(struct devic
return PTR_ERR_OR_ZERO(spi_gpio->sck);
}
if (IS_ERR(spi_gpio->cs_gpios[i]))
return PTR_ERR(spi_gpio->cs_gpios[i]);
}
-@@ -346,6 +356,24 @@ static int spi_gpio_probe_pdata(struct platform_device *pdev,
+@@ -346,6 +356,24 @@ static int spi_gpio_probe_pdata(struct p
return 0;
}
static int spi_gpio_probe(struct platform_device *pdev)
{
int status;
---
-2.54.0
-
drivers/spi/spi-gpio.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
-diff --git a/drivers/spi/spi-gpio.c b/drivers/spi/spi-gpio.c
-index a6f512d35854..4a0497f0ba0a 100644
--- a/drivers/spi/spi-gpio.c
+++ b/drivers/spi/spi-gpio.c
@@ -11,6 +11,7 @@
#include <linux/spi/spi.h>
#include <linux/spi/spi_bitbang.h>
-@@ -82,12 +83,18 @@ static inline int getmiso(const struct spi_device *spi)
+@@ -82,12 +83,18 @@ static inline int getmiso(const struct s
}
/*
#include "spi-bitbang-txrx.h"
---
-2.54.0
-
Documentation/devicetree/bindings/gpu/brcm,bcm-v3d.yaml | 1 +
1 file changed, 1 insertion(+)
-diff --git a/Documentation/devicetree/bindings/gpu/brcm,bcm-v3d.yaml b/Documentation/devicetree/bindings/gpu/brcm,bcm-v3d.yaml
-index 43c6d2d72456..8740649e215e 100644
--- a/Documentation/devicetree/bindings/gpu/brcm,bcm-v3d.yaml
+++ b/Documentation/devicetree/bindings/gpu/brcm,bcm-v3d.yaml
@@ -16,6 +16,7 @@ properties:
- brcm,2711-v3d
- brcm,2712-v3d
- brcm,7268-v3d
---
-2.54.0
-
drivers/dma/bcm2835-dma.c | 7 +++++++
1 file changed, 7 insertions(+)
-diff --git a/drivers/dma/bcm2835-dma.c b/drivers/dma/bcm2835-dma.c
-index dcc77ed986bb..67a1f6fbd33c 100644
--- a/drivers/dma/bcm2835-dma.c
+++ b/drivers/dma/bcm2835-dma.c
-@@ -330,6 +330,12 @@ static const struct bcm2835_dma_cfg_data bcm2711_dma_cfg = {
+@@ -330,6 +330,12 @@ static const struct bcm2835_dma_cfg_data
.dma_mask = DMA_BIT_MASK(36),
};
static inline size_t bcm2835_dma_max_frame_length(struct bcm2835_chan *c)
{
/* lite and normal channels have different max frame length */
-@@ -1214,6 +1220,7 @@ static void bcm2835_dma_free(struct bcm2835_dmadev *od)
+@@ -1214,6 +1220,7 @@ static void bcm2835_dma_free(struct bcm2
static const struct of_device_id bcm2835_dma_of_match[] = {
{ .compatible = "brcm,bcm2835-dma", .data = &bcm2835_dma_cfg },
{ .compatible = "brcm,bcm2711-dma", .data = &bcm2711_dma_cfg },
{},
};
MODULE_DEVICE_TABLE(of, bcm2835_dma_of_match);
---
-2.54.0
-
drivers/dma/bcm2835-dma.c | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
-diff --git a/drivers/dma/bcm2835-dma.c b/drivers/dma/bcm2835-dma.c
-index 67a1f6fbd33c..6cea67c5bbae 100644
--- a/drivers/dma/bcm2835-dma.c
+++ b/drivers/dma/bcm2835-dma.c
@@ -101,6 +101,7 @@ struct bcm2835_chan {
};
struct bcm2835_desc {
-@@ -549,7 +550,11 @@ static struct bcm2835_desc *bcm2835_dma_create_cb_chain(
+@@ -549,7 +550,11 @@ static struct bcm2835_desc *bcm2835_dma_
control_block->info = info;
control_block->src = src;
control_block->dst = dst;
control_block->next = 0;
}
-@@ -574,7 +579,8 @@ static struct bcm2835_desc *bcm2835_dma_create_cb_chain(
+@@ -574,7 +579,8 @@ static struct bcm2835_desc *bcm2835_dma_
d->cb_list[frame - 1].cb)->next_cb =
to_bcm2711_cbaddr(cb_entry->paddr);
if (frame && !c->is_40bit_channel)
/* update src and dst and length */
if (src && (info & BCM2835_DMA_S_INC)) {
-@@ -759,7 +765,10 @@ static void bcm2835_dma_start_desc(struct bcm2835_chan *c)
+@@ -759,7 +765,10 @@ static void bcm2835_dma_start_desc(struc
writel(BCM2711_DMA40_ACTIVE | BCM2711_DMA40_PROT | BCM2711_DMA40_CS_FLAGS(c->dreq),
c->chan_base + BCM2711_DMA40_CS);
} else {
writel(BCM2835_DMA_ACTIVE | BCM2835_DMA_CS_FLAGS(c->dreq),
c->chan_base + BCM2835_DMA_CS);
}
-@@ -1132,7 +1141,8 @@ static struct dma_async_tx_descriptor *bcm2835_dma_prep_dma_cyclic(
+@@ -1132,7 +1141,8 @@ static struct dma_async_tx_descriptor *b
d->cb_list[frames - 1].cb)->next_cb =
to_bcm2711_cbaddr(d->cb_list[0].paddr);
else
return vchan_tx_prep(&c->vc, &d->vd, flags);
}
-@@ -1199,6 +1209,8 @@ static int bcm2835_dma_chan_init(struct bcm2835_dmadev *d, int chan_id,
+@@ -1199,6 +1209,8 @@ static int bcm2835_dma_chan_init(struct
else if (readl(c->chan_base + BCM2835_DMA_DEBUG) &
BCM2835_DMA_DEBUG_LITE)
c->is_lite_channel = true;
return 0;
}
---
-2.54.0
-
drivers/dma/bcm2835-dma.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
-diff --git a/drivers/dma/bcm2835-dma.c b/drivers/dma/bcm2835-dma.c
-index 6cea67c5bbae..45169efe6a7d 100644
--- a/drivers/dma/bcm2835-dma.c
+++ b/drivers/dma/bcm2835-dma.c
-@@ -390,7 +390,7 @@ static inline uint32_t to_bcm2711_dsti(uint32_t info)
+@@ -390,7 +390,7 @@ static inline uint32_t to_bcm2711_dsti(u
BCM2711_DMA40_BURST_LEN(BCM2835_DMA_GET_BURST_LENGTH(info));
}
{
BUG_ON(addr & 0x1f);
return (addr >> 5);
-@@ -577,10 +577,10 @@ static struct bcm2835_desc *bcm2835_dma_create_cb_chain(
+@@ -577,10 +577,10 @@ static struct bcm2835_desc *bcm2835_dma_
if (frame && c->is_40bit_channel)
((struct bcm2711_dma40_scb *)
d->cb_list[frame - 1].cb)->next_cb =
/* update src and dst and length */
if (src && (info & BCM2835_DMA_S_INC)) {
-@@ -760,14 +760,14 @@ static void bcm2835_dma_start_desc(struct bcm2835_chan *c)
+@@ -760,14 +760,14 @@ static void bcm2835_dma_start_desc(struc
c->desc = d = to_bcm2835_dma_desc(&vd->tx);
if (c->is_40bit_channel) {
c->chan_base + BCM2835_DMA_ADDR);
writel(BCM2835_DMA_ACTIVE | BCM2835_DMA_CS_FLAGS(c->dreq),
c->chan_base + BCM2835_DMA_CS);
-@@ -1139,10 +1139,10 @@ static struct dma_async_tx_descriptor *bcm2835_dma_prep_dma_cyclic(
+@@ -1139,10 +1139,10 @@ static struct dma_async_tx_descriptor *b
if (c->is_40bit_channel)
((struct bcm2711_dma40_scb *)
d->cb_list[frames - 1].cb)->next_cb =
return vchan_tx_prep(&c->vc, &d->vd, flags);
}
---
-2.54.0
-
create mode 100644 drivers/iommu/bcm2712-iommu.c
create mode 100644 drivers/iommu/bcm2712-iommu.h
-diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig
-index 70d29b14d851..d7c8d0b686d3 100644
--- a/drivers/iommu/Kconfig
+++ b/drivers/iommu/Kconfig
@@ -383,4 +383,11 @@ config SPRD_IOMMU
+ IOMMU driver for BCM2712
+
endif # IOMMU_SUPPORT
-diff --git a/drivers/iommu/Makefile b/drivers/iommu/Makefile
-index 355294fa9033..31452b6c2d2f 100644
--- a/drivers/iommu/Makefile
+++ b/drivers/iommu/Makefile
@@ -34,3 +34,4 @@ obj-$(CONFIG_IOMMU_SVA) += iommu-sva.o
obj-$(CONFIG_SPRD_IOMMU) += sprd-iommu.o
obj-$(CONFIG_APPLE_DART) += apple-dart.o
+obj-$(CONFIG_BCM2712_IOMMU) += bcm2712-iommu.o bcm2712-iommu-cache.o
-diff --git a/drivers/iommu/bcm2712-iommu-cache.c b/drivers/iommu/bcm2712-iommu-cache.c
-new file mode 100644
-index 000000000000..fdea69f5370b
--- /dev/null
+++ b/drivers/iommu/bcm2712-iommu-cache.c
@@ -0,0 +1,77 @@
+};
+
+builtin_platform_driver(bcm2712_iommu_cache_driver);
-diff --git a/drivers/iommu/bcm2712-iommu.c b/drivers/iommu/bcm2712-iommu.c
-new file mode 100644
-index 000000000000..4721a830d2ae
--- /dev/null
+++ b/drivers/iommu/bcm2712-iommu.c
@@ -0,0 +1,763 @@
+};
+
+builtin_platform_driver(bcm2712_iommu_driver);
-diff --git a/drivers/iommu/bcm2712-iommu.h b/drivers/iommu/bcm2712-iommu.h
-new file mode 100644
-index 000000000000..0597b4f0da87
--- /dev/null
+++ b/drivers/iommu/bcm2712-iommu.h
@@ -0,0 +1,47 @@
+};
+
+#endif
---
-2.54.0
-
drivers/irqchip/irq-brcmstb-l2.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
-diff --git a/drivers/irqchip/irq-brcmstb-l2.c b/drivers/irqchip/irq-brcmstb-l2.c
-index bb7078d6524f..38de9d0c724b 100644
--- a/drivers/irqchip/irq-brcmstb-l2.c
+++ b/drivers/irqchip/irq-brcmstb-l2.c
-@@ -51,6 +51,16 @@ static const struct brcmstb_intc_init_params l2_lvl_intc_init = {
+@@ -51,6 +51,16 @@ static const struct brcmstb_intc_init_pa
.cpu_mask_clear = 0x0C
};
/* L2 intc private data structure */
struct brcmstb_l2_intc_data {
struct irq_domain *domain;
-@@ -266,11 +276,17 @@ static int brcmstb_l2_lvl_intc_probe(struct platform_device *pdev, struct device
+@@ -266,11 +276,17 @@ static int brcmstb_l2_lvl_intc_probe(str
return brcmstb_l2_intc_probe(pdev, parent, &l2_lvl_intc_init);
}
IRQCHIP_PLATFORM_DRIVER_END(brcmstb_l2)
MODULE_DESCRIPTION("Broadcom STB generic L2 interrupt controller");
MODULE_LICENSE("GPL v2");
---
-2.54.0
-
3 files changed, 289 insertions(+)
create mode 100644 drivers/rtc/rtc-rpi.c
-diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
-index 2933c41c77c8..f28b1f4bcd85 100644
--- a/drivers/rtc/Kconfig
+++ b/drivers/rtc/Kconfig
@@ -233,6 +233,17 @@ config RTC_DRV_AC100
config RTC_DRV_BRCMSTB
tristate "Broadcom STB wake-timer"
depends on ARCH_BRCMSTB || BMIPS_GENERIC || COMPILE_TEST
-diff --git a/drivers/rtc/Makefile b/drivers/rtc/Makefile
-index 8221bda6e6dc..6fec562d05d6 100644
--- a/drivers/rtc/Makefile
+++ b/drivers/rtc/Makefile
-@@ -146,6 +146,7 @@ obj-$(CONFIG_RTC_DRV_RC5T583) += rtc-rc5t583.o
+@@ -146,6 +146,7 @@ obj-$(CONFIG_RTC_DRV_RC5T583) += rtc-rc5
obj-$(CONFIG_RTC_DRV_RC5T619) += rtc-rc5t619.o
obj-$(CONFIG_RTC_DRV_RK808) += rtc-rk808.o
obj-$(CONFIG_RTC_DRV_RP5C01) += rtc-rp5c01.o
obj-$(CONFIG_RTC_DRV_RS5C313) += rtc-rs5c313.o
obj-$(CONFIG_RTC_DRV_RS5C348) += rtc-rs5c348.o
obj-$(CONFIG_RTC_DRV_RS5C372) += rtc-rs5c372.o
-diff --git a/drivers/rtc/rtc-rpi.c b/drivers/rtc/rtc-rpi.c
-new file mode 100644
-index 000000000000..006012333e78
--- /dev/null
+++ b/drivers/rtc/rtc-rpi.c
@@ -0,0 +1,277 @@
+
+MODULE_DESCRIPTION("Raspberry Pi RTC driver");
+MODULE_LICENSE("GPL");
---
-2.54.0
-
1 file changed, 22 insertions(+)
create mode 100644 Documentation/devicetree/bindings/rtc/rtc-rpi.txt
-diff --git a/Documentation/devicetree/bindings/rtc/rtc-rpi.txt b/Documentation/devicetree/bindings/rtc/rtc-rpi.txt
-new file mode 100644
-index 000000000000..ed0d0d0a8464
--- /dev/null
+++ b/Documentation/devicetree/bindings/rtc/rtc-rpi.txt
@@ -0,0 +1,22 @@
+ firmware = <&firmware>;
+ trickle-charge-microvolt = <3000000>;
+ };
---
-2.54.0
-
drivers/media/i2c/ov9282.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
-diff --git a/drivers/media/i2c/ov9282.c b/drivers/media/i2c/ov9282.c
-index a9f6176e9729..84963142d3ad 100644
--- a/drivers/media/i2c/ov9282.c
+++ b/drivers/media/i2c/ov9282.c
-@@ -1078,12 +1078,16 @@ static int ov9282_set_stream(struct v4l2_subdev *sd, int enable)
+@@ -1078,12 +1078,16 @@ error_unlock:
static int ov9282_detect(struct ov9282 *ov9282)
{
int ret;
if (val != OV9282_ID) {
dev_err(ov9282->dev, "chip id mismatch: %x!=%x",
OV9282_ID, val);
---
-2.54.0
-
drivers/media/i2c/ov9282.c | 85 ++++++++++++++++++++++++++++++++++----
1 file changed, 78 insertions(+), 7 deletions(-)
-diff --git a/drivers/media/i2c/ov9282.c b/drivers/media/i2c/ov9282.c
-index 84963142d3ad..5166466d0d67 100644
--- a/drivers/media/i2c/ov9282.c
+++ b/drivers/media/i2c/ov9282.c
@@ -74,6 +74,14 @@
};
static const s64 link_freq[] = {
-@@ -956,6 +965,52 @@ static int ov9282_get_selection(struct v4l2_subdev *sd,
- return -EINVAL;
+@@ -957,6 +966,52 @@ static int ov9282_get_selection(struct v
}
-+/**
+ /**
+ * ov9282_apply_trigger_config() - Configure sensor for FSIN external trigger mode
+ * @ov9282: pointer to ov9282 device
+ *
+ return 0;
+}
+
- /**
++/**
* ov9282_start_streaming() - Start sensor stream
* @ov9282: pointer to ov9282 device
-@@ -1007,15 +1062,26 @@ static int ov9282_start_streaming(struct ov9282 *ov9282)
+ *
+@@ -1007,15 +1062,26 @@ static int ov9282_start_streaming(struct
return ret;
}
}
/**
-@@ -1400,6 +1466,7 @@ static int ov9282_probe(struct i2c_client *client)
+@@ -1400,6 +1466,7 @@ static int ov9282_probe(struct i2c_clien
{
struct ov9282 *ov9282;
int ret;
ov9282 = devm_kzalloc(&client->dev, sizeof(*ov9282), GFP_KERNEL);
if (!ov9282)
-@@ -1439,6 +1506,10 @@ static int ov9282_probe(struct i2c_client *client)
+@@ -1439,6 +1506,10 @@ static int ov9282_probe(struct i2c_clien
ov9282->code = MEDIA_BUS_FMT_Y10_1X10;
ov9282->vblank = ov9282->cur_mode->vblank;
ret = ov9282_init_controls(ov9282);
if (ret) {
dev_err(ov9282->dev, "failed to init controls: %d", ret);
---
-2.54.0
-
include/linux/fb.h | 2 ++
2 files changed, 15 insertions(+), 3 deletions(-)
-diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c
-index eff757ebbed1..53a04850f7d7 100644
--- a/drivers/video/fbdev/core/fbmem.c
+++ b/drivers/video/fbdev/core/fbmem.c
@@ -33,6 +33,7 @@ struct class *fb_class;
#define for_each_registered_fb(i) \
for (i = 0; i < FB_MAX; i++) \
if (!registered_fb[i]) {} else
-@@ -445,9 +446,12 @@ static int do_register_framebuffer(struct fb_info *fb_info)
+@@ -445,9 +446,12 @@ static int do_register_framebuffer(struc
if (num_registered_fb == FB_MAX)
return -ENXIO;
if (i >= FB_MAX)
return -ENXIO;
-@@ -561,6 +565,12 @@ static void do_unregister_framebuffer(struct fb_info *fb_info)
+@@ -561,6 +565,12 @@ static void do_unregister_framebuffer(st
put_fb_info(fb_info);
}
/**
* register_framebuffer - registers a frame buffer device
* @fb_info: frame buffer info structure
-diff --git a/include/linux/fb.h b/include/linux/fb.h
-index c3302d513546..e2d5cbd91876 100644
--- a/include/linux/fb.h
+++ b/include/linux/fb.h
-@@ -515,6 +515,7 @@ struct fb_info {
+@@ -517,6 +517,7 @@ struct fb_info {
bool skip_vt_switch; /* no VT switch on suspend/resume required */
bool skip_panic; /* Do not write to the fb after a panic */
};
/* This will go away
-@@ -604,6 +605,7 @@ extern ssize_t fb_sys_write(struct fb_info *info, const char __user *buf,
+@@ -606,6 +607,7 @@ extern ssize_t fb_sys_write(struct fb_in
.fb_imageblit = sys_imageblit
/* fbmem.c */
extern int register_framebuffer(struct fb_info *fb_info);
extern void unregister_framebuffer(struct fb_info *fb_info);
extern int devm_register_framebuffer(struct device *dev, struct fb_info *fb_info);
---
-2.54.0
-
drivers/gpu/drm/drm_fb_helper.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
-diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
-index 0b3ee008523d..2f4bae05a195 100644
--- a/drivers/gpu/drm/drm_fb_helper.c
+++ b/drivers/gpu/drm/drm_fb_helper.c
-@@ -1807,7 +1807,7 @@ __drm_fb_helper_initial_config_and_unlock(struct drm_fb_helper *fb_helper)
+@@ -1807,7 +1807,7 @@ __drm_fb_helper_initial_config_and_unloc
struct drm_device *dev = fb_helper->dev;
struct fb_info *info;
unsigned int width, height;
width = dev->mode_config.max_width;
height = dev->mode_config.max_height;
-@@ -1835,6 +1835,15 @@ __drm_fb_helper_initial_config_and_unlock(struct drm_fb_helper *fb_helper)
+@@ -1835,6 +1835,15 @@ __drm_fb_helper_initial_config_and_unloc
* register the fbdev emulation instance in kernel_fb_helper_list. */
mutex_unlock(&fb_helper->lock);
ret = register_framebuffer(info);
if (ret < 0)
return ret;
---
-2.54.0
-
drivers/mmc/host/sdhci.h | 3 +++
2 files changed, 14 insertions(+)
-diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
-index 46f83056ecf0..36ecd897bcb0 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
-@@ -1736,6 +1736,12 @@ static bool sdhci_send_command(struct sdhci_host *host, struct mmc_command *cmd)
+@@ -1736,6 +1736,12 @@ static bool sdhci_send_command(struct sd
if (host->use_external_dma)
sdhci_external_dma_pre_transfer(host, cmd);
sdhci_writew(host, SDHCI_MAKE_CMD(cmd->opcode, flags), SDHCI_COMMAND);
return true;
-@@ -3342,6 +3348,11 @@ static void sdhci_cmd_irq(struct sdhci_host *host, u32 intmask, u32 *intmask_p)
+@@ -3342,6 +3348,11 @@ static void sdhci_cmd_irq(struct sdhci_h
if (intmask & SDHCI_INT_TIMEOUT) {
host->cmd->error = -ETIMEDOUT;
sdhci_err_stats_inc(host, CMD_TIMEOUT);
} else {
host->cmd->error = -EILSEQ;
if (!mmc_op_tuning(host->cmd->opcode))
-diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h
-index 4894a75a1391..847b72ba7aec 100644
--- a/drivers/mmc/host/sdhci.h
+++ b/drivers/mmc/host/sdhci.h
@@ -542,6 +542,9 @@ struct sdhci_host {
int irq; /* Device IRQ */
void __iomem *ioaddr; /* Mapped address */
phys_addr_t mapbase; /* physical address base */
---
-2.54.0
-
.../devicetree/bindings/mmc/snps,dwcmshc-sdhci.yaml | 5 +++++
1 file changed, 5 insertions(+)
-diff --git a/Documentation/devicetree/bindings/mmc/snps,dwcmshc-sdhci.yaml b/Documentation/devicetree/bindings/mmc/snps,dwcmshc-sdhci.yaml
-index f882219a0a26..ee5afb43300d 100644
--- a/Documentation/devicetree/bindings/mmc/snps,dwcmshc-sdhci.yaml
+++ b/Documentation/devicetree/bindings/mmc/snps,dwcmshc-sdhci.yaml
@@ -23,6 +23,7 @@ properties:
- if:
properties:
---
-2.54.0
-
drivers/power/reset/gpio-poweroff.c | 11 ++++++++++-
2 files changed, 14 insertions(+), 1 deletion(-)
-diff --git a/Documentation/devicetree/bindings/power/reset/gpio-poweroff.yaml b/Documentation/devicetree/bindings/power/reset/gpio-poweroff.yaml
-index a4b437fce37c..61df8d05e0bf 100644
--- a/Documentation/devicetree/bindings/power/reset/gpio-poweroff.yaml
+++ b/Documentation/devicetree/bindings/power/reset/gpio-poweroff.yaml
@@ -50,6 +50,10 @@ properties:
required:
- compatible
- gpios
-diff --git a/drivers/power/reset/gpio-poweroff.c b/drivers/power/reset/gpio-poweroff.c
-index 3eaae352ffb9..8df622d4d681 100644
--- a/drivers/power/reset/gpio-poweroff.c
+++ b/drivers/power/reset/gpio-poweroff.c
-@@ -61,6 +61,7 @@ static int gpio_poweroff_probe(struct platform_device *pdev)
+@@ -61,6 +61,7 @@ static int gpio_poweroff_probe(struct pl
bool input = false;
enum gpiod_flags flags;
int priority = SYS_OFF_PRIO_DEFAULT;
int ret;
gpio_poweroff = devm_kzalloc(&pdev->dev, sizeof(*gpio_poweroff), GFP_KERNEL);
-@@ -92,10 +93,18 @@ static int gpio_poweroff_probe(struct platform_device *pdev)
+@@ -92,10 +93,18 @@ static int gpio_poweroff_probe(struct pl
if (IS_ERR(gpio_poweroff->reset_gpio))
return PTR_ERR(gpio_poweroff->reset_gpio);
return 0;
}
---
-2.54.0
-
drivers/power/reset/gpio-poweroff.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/power/reset/gpio-poweroff.c b/drivers/power/reset/gpio-poweroff.c
-index 8df622d4d681..a4c0c5c06fc5 100644
--- a/drivers/power/reset/gpio-poweroff.c
+++ b/drivers/power/reset/gpio-poweroff.c
-@@ -50,7 +50,7 @@ static int gpio_poweroff_do_poweroff(struct sys_off_data *data)
+@@ -50,7 +50,7 @@ static int gpio_poweroff_do_poweroff(str
* Warn the user that the attempt to poweroff via gpio-poweroff
* has gone wrong.
*/
return NOTIFY_DONE;
}
---
-2.54.0
-
drivers/w1/w1.c | 2 ++
1 file changed, 2 insertions(+)
-diff --git a/drivers/w1/w1.c b/drivers/w1/w1.c
-index 47e5a3f38ca3..d80cd832b501 100644
--- a/drivers/w1/w1.c
+++ b/drivers/w1/w1.c
-@@ -733,8 +733,10 @@ int w1_attach_slave_device(struct w1_master *dev, struct w1_reg_num *rn)
+@@ -733,8 +733,10 @@ int w1_attach_slave_device(struct w1_mas
atomic_set(&sl->refcnt, 1);
atomic_inc(&sl->master->refcnt);
dev->slave_count++;
/* slave modules need to be loaded in a context with unlocked mutex */
mutex_unlock(&dev->mutex);
---
-2.54.0
-
drivers/usb/host/xhci.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
-index f841680218b4..e3b4df10aaf4 100644
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
@@ -1412,7 +1412,7 @@ struct urb_priv {
/* Poll every 60 seconds */
#define POLL_TIMEOUT 60
/* Stop endpoint command timeout (secs) for URB cancellation watchdog timer */
---
-2.54.0
-
drivers/media/i2c/ov7251.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-diff --git a/drivers/media/i2c/ov7251.c b/drivers/media/i2c/ov7251.c
-index a9c4e04443d1..5dd4e022e657 100644
--- a/drivers/media/i2c/ov7251.c
+++ b/drivers/media/i2c/ov7251.c
-@@ -1065,7 +1065,7 @@ static int ov7251_s_ctrl(struct v4l2_ctrl *ctrl)
+@@ -1065,7 +1065,7 @@ static int ov7251_s_ctrl(struct v4l2_ctr
case V4L2_CID_EXPOSURE:
ret = ov7251_set_exposure(ov7251, ctrl->val);
break;
ret = ov7251_set_gain(ov7251, ctrl->val);
break;
case V4L2_CID_TEST_PATTERN:
-@@ -1616,7 +1616,7 @@ static int ov7251_init_ctrls(struct ov7251 *ov7251)
+@@ -1616,7 +1616,7 @@ static int ov7251_init_ctrls(struct ov72
ov7251->exposure = v4l2_ctrl_new_std(&ov7251->ctrls, &ov7251_ctrl_ops,
V4L2_CID_EXPOSURE, 1, 32, 1, 32);
ov7251->gain = v4l2_ctrl_new_std(&ov7251->ctrls, &ov7251_ctrl_ops,
v4l2_ctrl_new_std_menu_items(&ov7251->ctrls, &ov7251_ctrl_ops,
V4L2_CID_TEST_PATTERN,
ARRAY_SIZE(ov7251_test_pattern_menu) - 1,
---
-2.54.0
-
drivers/gpu/drm/bridge/Kconfig | 1 +
1 file changed, 1 insertion(+)
-diff --git a/drivers/gpu/drm/bridge/Kconfig b/drivers/gpu/drm/bridge/Kconfig
-index a250afd8d662..d1051af07f1e 100644
--- a/drivers/gpu/drm/bridge/Kconfig
+++ b/drivers/gpu/drm/bridge/Kconfig
@@ -74,6 +74,7 @@ config DRM_CROS_EC_ANX7688
help
Driver for display connectors with support for DDC and hot-plug
detection. Most display controllers handle display connectors
---
-2.54.0
-
scripts/dtc/checks.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/scripts/dtc/checks.c b/scripts/dtc/checks.c
-index 7e3fed5005b3..a1c6f8cc467c 100644
--- a/scripts/dtc/checks.c
+++ b/scripts/dtc/checks.c
-@@ -724,7 +724,7 @@ static void check_alias_paths(struct check *c, struct dt_info *dti,
+@@ -724,7 +724,7 @@ static void check_alias_paths(struct che
continue;
}
if (strspn(prop->name, LOWERCASE DIGITS "-") != strlen(prop->name))
}
}
WARNING(alias_paths, check_alias_paths, NULL);
---
-2.54.0
-
2 files changed, 55 insertions(+)
create mode 100644 Documentation/devicetree/bindings/media/i2c/rohm,bu64754.yaml
-diff --git a/Documentation/devicetree/bindings/media/i2c/rohm,bu64754.yaml b/Documentation/devicetree/bindings/media/i2c/rohm,bu64754.yaml
-new file mode 100644
-index 000000000000..22da4a46bb0c
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/rohm,bu64754.yaml
@@ -0,0 +1,48 @@
+ };
+ };
+...
-diff --git a/MAINTAINERS b/MAINTAINERS
-index 8c53bc8da9f4..7ffa031d771d 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -22398,6 +22398,13 @@ L: linux-iio@vger.kernel.org
+@@ -22407,6 +22407,13 @@ L: linux-iio@vger.kernel.org
S: Supported
F: drivers/iio/light/rohm-bu27034.c
ROHM MULTIFUNCTION BD9571MWV-M PMIC DEVICE DRIVERS
M: Marek Vasut <marek.vasut+renesas@gmail.com>
L: linux-kernel@vger.kernel.org
---
-2.54.0
-
3 files changed, 329 insertions(+)
create mode 100644 drivers/media/i2c/bu64754.c
-diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig
-index e000055ad199..1d1916f3b425 100644
--- a/drivers/media/i2c/Kconfig
+++ b/drivers/media/i2c/Kconfig
@@ -900,6 +900,19 @@ config VIDEO_AK7375
config VIDEO_DW9714
tristate "DW9714 lens voice coil support"
depends on GPIOLIB
-diff --git a/drivers/media/i2c/Makefile b/drivers/media/i2c/Makefile
-index b21830757b00..a25af90da7fe 100644
--- a/drivers/media/i2c/Makefile
+++ b/drivers/media/i2c/Makefile
-@@ -26,6 +26,7 @@ obj-$(CONFIG_VIDEO_ARDUCAM_PIVARIETY) += arducam-pivariety.o
+@@ -26,6 +26,7 @@ obj-$(CONFIG_VIDEO_ARDUCAM_PIVARIETY) +=
obj-$(CONFIG_VIDEO_BT819) += bt819.o
obj-$(CONFIG_VIDEO_BT856) += bt856.o
obj-$(CONFIG_VIDEO_BT866) += bt866.o
obj-$(CONFIG_VIDEO_CCS) += ccs/
obj-$(CONFIG_VIDEO_CCS_PLL) += ccs-pll.o
obj-$(CONFIG_VIDEO_CS3308) += cs3308.o
-diff --git a/drivers/media/i2c/bu64754.c b/drivers/media/i2c/bu64754.c
-new file mode 100644
-index 000000000000..530b31e9876a
--- /dev/null
+++ b/drivers/media/i2c/bu64754.c
@@ -0,0 +1,315 @@
+MODULE_DESCRIPTION("BU64754 VCM driver");
+MODULE_LICENSE("GPL");
+
---
-2.54.0
-
drivers/firmware/psci/psci.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
-diff --git a/drivers/firmware/psci/psci.c b/drivers/firmware/psci/psci.c
-index 38ca190d4a22..386a9647e8c0 100644
--- a/drivers/firmware/psci/psci.c
+++ b/drivers/firmware/psci/psci.c
-@@ -316,7 +316,14 @@ static int psci_sys_reset(struct notifier_block *nb, unsigned long action,
+@@ -316,7 +316,14 @@ static int psci_sys_reset(struct notifie
* reset_type[30:0] = 0 (SYSTEM_WARM_RESET)
* cookie = 0 (ignored by the implementation)
*/
} else {
invoke_psci_fn(PSCI_0_2_FN_SYSTEM_RESET, 0, 0, 0);
}
---
-2.54.0
-
drivers/media/i2c/adv7180.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
-diff --git a/drivers/media/i2c/adv7180.c b/drivers/media/i2c/adv7180.c
-index e2bafe475242..32d20b2cd26b 100644
--- a/drivers/media/i2c/adv7180.c
+++ b/drivers/media/i2c/adv7180.c
-@@ -714,10 +714,15 @@ static int adv7180_enum_mbus_code(struct v4l2_subdev *sd,
+@@ -714,10 +714,15 @@ static int adv7180_enum_mbus_code(struct
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_mbus_code_enum *code)
{
return 0;
}
-@@ -727,7 +732,10 @@ static int adv7180_mbus_fmt(struct v4l2_subdev *sd,
+@@ -727,7 +732,10 @@ static int adv7180_mbus_fmt(struct v4l2_
{
struct adv7180_state *state = to_state(sd);
fmt->colorspace = V4L2_COLORSPACE_SMPTE170M;
fmt->width = 720;
fmt->height = state->curr_norm & V4L2_STD_525_60 ? 480 : 576;
---
-2.54.0
-
drivers/media/i2c/adv7180.c | 33 ++++++++++++++++++++++++++++++++-
1 file changed, 32 insertions(+), 1 deletion(-)
-diff --git a/drivers/media/i2c/adv7180.c b/drivers/media/i2c/adv7180.c
-index 32d20b2cd26b..668c51a382f5 100644
--- a/drivers/media/i2c/adv7180.c
+++ b/drivers/media/i2c/adv7180.c
@@ -189,6 +189,16 @@
};
#define to_adv7180_sd(_ctrl) (&container_of(_ctrl->handler, \
struct adv7180_state, \
-@@ -608,6 +619,9 @@ static int adv7180_s_ctrl(struct v4l2_ctrl *ctrl)
+@@ -608,6 +619,9 @@ static int adv7180_s_ctrl(struct v4l2_ct
lockdep_assert_held(&state->mutex);
val = ctrl->val;
switch (ctrl->id) {
case V4L2_CID_BRIGHTNESS:
-@@ -668,7 +682,7 @@ static const struct v4l2_ctrl_config adv7180_ctrl_fast_switch = {
+@@ -668,7 +682,7 @@ static const struct v4l2_ctrl_config adv
static int adv7180_init_controls(struct adv7180_state *state)
{
state->ctrl_hdl.lock = &state->mutex;
v4l2_ctrl_new_std(&state->ctrl_hdl, &adv7180_ctrl_ops,
-@@ -695,6 +709,17 @@ static int adv7180_init_controls(struct adv7180_state *state)
+@@ -695,6 +709,17 @@ static int adv7180_init_controls(struct
test_pattern_menu);
}
state->sd.ctrl_handler = &state->ctrl_hdl;
if (state->ctrl_hdl.error) {
int err = state->ctrl_hdl.error;
-@@ -822,6 +847,12 @@ static int adv7180_set_pad_format(struct v4l2_subdev *sd,
+@@ -822,6 +847,12 @@ static int adv7180_set_pad_format(struct
if (format->which == V4L2_SUBDEV_FORMAT_ACTIVE) {
state->field = format->format.field;
} else {
framefmt = v4l2_subdev_state_get_format(sd_state, 0);
*framefmt = format->format;
---
-2.54.0
-
drivers/spi/spi-bcm2835.c | 5 +++++
1 file changed, 5 insertions(+)
-diff --git a/drivers/spi/spi-bcm2835.c b/drivers/spi/spi-bcm2835.c
-index d034068220db..d27b68a66e8d 100644
--- a/drivers/spi/spi-bcm2835.c
+++ b/drivers/spi/spi-bcm2835.c
-@@ -1232,6 +1232,7 @@ static int bcm2835_spi_setup(struct spi_device *spi)
+@@ -1232,6 +1232,7 @@ static int bcm2835_spi_setup(struct spi_
"brcm,bcm7211-gpio",
};
int ret, i;
u32 cs;
if (!target) {
-@@ -1304,6 +1305,10 @@ static int bcm2835_spi_setup(struct spi_device *spi)
+@@ -1304,6 +1305,10 @@ static int bcm2835_spi_setup(struct spi_
if (i == ARRAY_SIZE(pinctrl_compats))
return 0;
/*
* TODO: The code below is a slightly better alternative to the utter
* abuse of the GPIO API that I found here before. It creates a
---
-2.54.0
-
.../devicetree/bindings/usb/snps,dwc3-common.yaml | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
-diff --git a/Documentation/devicetree/bindings/usb/snps,dwc3-common.yaml b/Documentation/devicetree/bindings/usb/snps,dwc3-common.yaml
-index 6c0b8b653824..5be91c5e537d 100644
--- a/Documentation/devicetree/bindings/usb/snps,dwc3-common.yaml
+++ b/Documentation/devicetree/bindings/usb/snps,dwc3-common.yaml
@@ -187,12 +187,17 @@ properties:
type: boolean
snps,dis_metastability_quirk:
---
-2.54.0
-
drivers/usb/dwc3/core.h | 12 ++++++++----
2 files changed, 13 insertions(+), 4 deletions(-)
-diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
-index dd131cbce2b6..d9fd655f00af 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
-@@ -1491,6 +1491,9 @@ static int dwc3_core_init(struct dwc3 *dwc)
+@@ -1491,6 +1491,9 @@ static int dwc3_core_init(struct dwc3 *d
if (dwc->parkmode_disable_hs_quirk)
reg |= DWC3_GUCTL1_PARKMODE_DISABLE_HS;
if (DWC3_VER_IS_WITHIN(DWC3, 290A, ANY)) {
if (dwc->maximum_speed == USB_SPEED_FULL ||
dwc->maximum_speed == USB_SPEED_HIGH)
-@@ -1870,6 +1873,8 @@ static void dwc3_get_properties(struct dwc3 *dwc)
+@@ -1870,6 +1873,8 @@ static void dwc3_get_properties(struct d
"snps,parkmode-disable-ss-quirk");
dwc->parkmode_disable_hs_quirk = device_property_read_bool(dev,
"snps,parkmode-disable-hs-quirk");
dwc->gfladj_refclk_lpm_sel = device_property_read_bool(dev,
"snps,gfladj-refclk-lpm-sel-quirk");
-diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
-index 6ac702395670..438799c1ba5d 100644
--- a/drivers/usb/dwc3/core.h
+++ b/drivers/usb/dwc3/core.h
@@ -284,6 +284,7 @@
#define DWC3_GUCTL1_RESUME_OPMODE_HS_HOST BIT(10)
/* Global Status Register */
-@@ -1153,10 +1154,12 @@ struct dwc3_glue_ops {
+@@ -1151,10 +1152,12 @@ struct dwc3_glue_ops {
* generation after resume from suspend.
* @ulpi_ext_vbus_drv: Set to confiure the upli chip to drives CPEN pin
* VBUS with an external supply.
* @gfladj_refclk_lpm_sel: set if we need to enable SOF/ITP counter
* running based on ref_clk
* @tx_de_emphasis_quirk: set if we enable Tx de-emphasis quirk
-@@ -1402,6 +1405,7 @@ struct dwc3 {
+@@ -1400,6 +1403,7 @@ struct dwc3 {
unsigned ulpi_ext_vbus_drv:1;
unsigned parkmode_disable_ss_quirk:1;
unsigned parkmode_disable_hs_quirk:1;
unsigned gfladj_refclk_lpm_sel:1;
unsigned tx_de_emphasis_quirk:1;
---
-2.54.0
-
drivers/i2c/busses/i2c-designware-master.c | 26 ++++++++++++++++++++++
1 file changed, 26 insertions(+)
-diff --git a/drivers/i2c/busses/i2c-designware-master.c b/drivers/i2c/busses/i2c-designware-master.c
-index 46e33b1f5f28..ea02c093d065 100644
--- a/drivers/i2c/busses/i2c-designware-master.c
+++ b/drivers/i2c/busses/i2c-designware-master.c
-@@ -41,6 +41,22 @@ static void i2c_dw_configure_fifo_master(struct dw_i2c_dev *dev)
+@@ -41,6 +41,22 @@ static void i2c_dw_configure_fifo_master
regmap_write(dev->map, DW_IC_CON, dev->master_cfg);
}
static int i2c_dw_set_timings_master(struct dw_i2c_dev *dev)
{
unsigned int comp_param1;
-@@ -48,6 +64,7 @@ static int i2c_dw_set_timings_master(struct dw_i2c_dev *dev)
+@@ -48,6 +64,7 @@ static int i2c_dw_set_timings_master(str
struct i2c_timings *t = &dev->timings;
const char *fp_str = "";
u32 ic_clk;
int ret;
ret = i2c_dw_acquire_lock(dev);
-@@ -63,6 +80,9 @@ static int i2c_dw_set_timings_master(struct dw_i2c_dev *dev)
+@@ -63,6 +80,9 @@ static int i2c_dw_set_timings_master(str
sda_falling_time = t->sda_fall_ns ?: 300; /* ns */
scl_falling_time = t->scl_fall_ns ?: 300; /* ns */
/* Calculate SCL timing parameters for standard mode if not set */
if (!dev->ss_hcnt || !dev->ss_lcnt) {
ic_clk = i2c_dw_clk_rate(dev);
-@@ -81,6 +101,8 @@ static int i2c_dw_set_timings_master(struct dw_i2c_dev *dev)
+@@ -81,6 +101,8 @@ static int i2c_dw_set_timings_master(str
scl_falling_time,
0); /* No offset */
}
dev_dbg(dev->dev, "Standard Mode HCNT:LCNT = %d:%d\n",
dev->ss_hcnt, dev->ss_lcnt);
-@@ -137,6 +159,8 @@ static int i2c_dw_set_timings_master(struct dw_i2c_dev *dev)
+@@ -137,6 +159,8 @@ static int i2c_dw_set_timings_master(str
scl_falling_time,
0); /* No offset */
}
dev_dbg(dev->dev, "Fast Mode%s HCNT:LCNT = %d:%d\n",
fp_str, dev->fs_hcnt, dev->fs_lcnt);
-@@ -187,6 +211,8 @@ static int i2c_dw_set_timings_master(struct dw_i2c_dev *dev)
+@@ -187,6 +211,8 @@ static int i2c_dw_set_timings_master(str
scl_falling_time,
0); /* No offset */
}
dev_dbg(dev->dev, "High Speed Mode HCNT:LCNT = %d:%d\n",
dev->hs_hcnt, dev->hs_lcnt);
}
---
-2.54.0
-
drivers/i2c/busses/i2c-designware-master.c | 37 ++++++++++++++--------
3 files changed, 52 insertions(+), 13 deletions(-)
-diff --git a/drivers/i2c/busses/i2c-designware-common.c b/drivers/i2c/busses/i2c-designware-common.c
-index 5b1e8f74c4ac..584429a1401d 100644
--- a/drivers/i2c/busses/i2c-designware-common.c
+++ b/drivers/i2c/busses/i2c-designware-common.c
-@@ -362,6 +362,9 @@ static void i2c_dw_adjust_bus_speed(struct dw_i2c_dev *dev)
+@@ -362,6 +362,9 @@ static void i2c_dw_adjust_bus_speed(stru
{
u32 acpi_speed = i2c_dw_acpi_round_bus_speed(dev->dev);
struct i2c_timings *t = &dev->timings;
/*
* Find bus speed from the "clock-frequency" device property, ACPI
-@@ -373,6 +376,30 @@ static void i2c_dw_adjust_bus_speed(struct dw_i2c_dev *dev)
+@@ -373,6 +376,30 @@ static void i2c_dw_adjust_bus_speed(stru
t->bus_freq_hz = max(t->bus_freq_hz, acpi_speed);
else
t->bus_freq_hz = I2C_MAX_FAST_MODE_FREQ;
}
int i2c_dw_fw_parse_and_configure(struct dw_i2c_dev *dev)
-diff --git a/drivers/i2c/busses/i2c-designware-core.h b/drivers/i2c/busses/i2c-designware-core.h
-index 1221ea290871..67000b51a2fc 100644
--- a/drivers/i2c/busses/i2c-designware-core.h
+++ b/drivers/i2c/busses/i2c-designware-core.h
@@ -298,6 +298,7 @@ struct dw_i2c_dev {
int (*acquire_lock)(void);
void (*release_lock)(void);
int semaphore_idx;
-diff --git a/drivers/i2c/busses/i2c-designware-master.c b/drivers/i2c/busses/i2c-designware-master.c
-index ea02c093d065..a4b4bacdb2a6 100644
--- a/drivers/i2c/busses/i2c-designware-master.c
+++ b/drivers/i2c/busses/i2c-designware-master.c
-@@ -41,20 +41,32 @@ static void i2c_dw_configure_fifo_master(struct dw_i2c_dev *dev)
+@@ -41,20 +41,32 @@ static void i2c_dw_configure_fifo_master
regmap_write(dev->map, DW_IC_CON, dev->master_cfg);
}
-static u16 clock_calc(struct dw_i2c_dev *dev, bool want_high)
+static u32 linear_interpolate(u32 x, u32 x1, u32 x2, u32 y1, u32 y2)
- {
-- struct i2c_timings *t = &dev->timings;
-- u32 wanted_speed = t->bus_freq_hz;
-- u32 clk_khz = i2c_dw_clk_rate(dev);
-- u32 extra_ns = want_high ? t->scl_fall_ns : t->scl_rise_ns;
-- u32 extra_cycles = (u32)((u64)clk_khz * extra_ns / 1000000);
-- u32 period = ((u64)clk_khz * 1000 + wanted_speed - 1) / wanted_speed;
-- u32 cycles = (period + want_high)/2 - extra_cycles;
++{
+ return ((x - x1) * y2 + (x2 - x) * y1) / (x2 - x1);
+}
-
-- if (cycles > 0xffff)
-- cycles = 0xffff;
++
+static u16 u16_clamp(u32 v)
+{
+ return (u16)min(v, 0xffff);
+}
-
-- return (u16)cycles;
++
+static void clock_calc(struct dw_i2c_dev *dev, u32 *hcnt, u32 *lcnt)
-+{
-+ struct i2c_timings *t = &dev->timings;
+ {
+ struct i2c_timings *t = &dev->timings;
+- u32 wanted_speed = t->bus_freq_hz;
+ u32 wanted_khz = (dev->wanted_bus_speed ?: t->bus_freq_hz)/1000;
-+ u32 clk_khz = i2c_dw_clk_rate(dev);
+ u32 clk_khz = i2c_dw_clk_rate(dev);
+- u32 extra_ns = want_high ? t->scl_fall_ns : t->scl_rise_ns;
+- u32 extra_cycles = (u32)((u64)clk_khz * extra_ns / 1000000);
+- u32 period = ((u64)clk_khz * 1000 + wanted_speed - 1) / wanted_speed;
+- u32 cycles = (period + want_high)/2 - extra_cycles;
+-
+- if (cycles > 0xffff)
+- cycles = 0xffff;
+ u32 min_high_ns = (wanted_khz <= 100) ? 4000 :
+ (wanted_khz <= 400) ?
+ linear_interpolate(wanted_khz, 100, 400, 4000, 600) :
+ u32 extra_high_cycles = (u32)((u64)clk_khz * t->scl_fall_ns / 1000000);
+ u32 extra_low_cycles = (u32)((u64)clk_khz * t->scl_rise_ns / 1000000);
+ u32 period = ((u64)clk_khz + wanted_khz - 1) / wanted_khz;
-+
+
+- return (u16)cycles;
+ *hcnt = u16_clamp(high_cycles - extra_high_cycles);
+ *lcnt = u16_clamp(period - high_cycles - extra_low_cycles);
}
static int i2c_dw_set_timings_master(struct dw_i2c_dev *dev)
-@@ -80,8 +92,7 @@ static int i2c_dw_set_timings_master(struct dw_i2c_dev *dev)
+@@ -80,8 +92,7 @@ static int i2c_dw_set_timings_master(str
sda_falling_time = t->sda_fall_ns ?: 300; /* ns */
scl_falling_time = t->scl_fall_ns ?: 300; /* ns */
/* Calculate SCL timing parameters for standard mode if not set */
if (!dev->ss_hcnt || !dev->ss_lcnt) {
---
-2.54.0
-
drivers/tty/serial/sc16is7xx.c | 2 ++
1 file changed, 2 insertions(+)
-diff --git a/drivers/tty/serial/sc16is7xx.c b/drivers/tty/serial/sc16is7xx.c
-index defbe370eac8..f6ccb1dd216b 100644
--- a/drivers/tty/serial/sc16is7xx.c
+++ b/drivers/tty/serial/sc16is7xx.c
-@@ -817,6 +817,8 @@ static bool sc16is7xx_port_irq(struct sc16is7xx_port *s, int portno)
+@@ -817,6 +817,8 @@ static bool sc16is7xx_port_irq(struct sc
if (rxlen)
sc16is7xx_handle_rx(port, rxlen, iir);
break;
/* CTSRTS interrupt comes only when CTS goes inactive */
case SC16IS7XX_IIR_CTSRTS_SRC:
---
-2.54.0
-
arch/arm64/Kconfig | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
-diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
-index 6663ffd23f25..61007663ab3f 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -139,7 +139,8 @@ config ARM64
select DMA_DIRECT_REMAP
select EDAC_SUPPORT
select FRAME_POINTER
---
-2.54.0
-
drivers/bluetooth/btbcm.c | 1 +
1 file changed, 1 insertion(+)
-diff --git a/drivers/bluetooth/btbcm.c b/drivers/bluetooth/btbcm.c
-index 1e3b78dc0fa0..55092236abb9 100644
--- a/drivers/bluetooth/btbcm.c
+++ b/drivers/bluetooth/btbcm.c
-@@ -521,6 +521,7 @@ static const struct bcm_subver_table bcm_uart_subver_table[] = {
+@@ -521,6 +521,7 @@ static const struct bcm_subver_table bcm
{ 0x4106, "BCM4335A0" }, /* 002.001.006 */
{ 0x410c, "BCM43430B0" }, /* 002.001.012 */
{ 0x2119, "BCM4373A0" }, /* 001.001.025 */
{ }
};
---
-2.54.0
-
drivers/i2c/i2c-mux.c | 5 +++++
1 file changed, 5 insertions(+)
-diff --git a/drivers/i2c/i2c-mux.c b/drivers/i2c/i2c-mux.c
-index d59644e50f14..2f0ea4f43bf5 100644
--- a/drivers/i2c/i2c-mux.c
+++ b/drivers/i2c/i2c-mux.c
-@@ -330,8 +330,13 @@ int i2c_mux_add_adapter(struct i2c_mux_core *muxc,
+@@ -330,8 +330,13 @@ int i2c_mux_add_adapter(struct i2c_mux_c
if (muxc->dev->of_node) {
struct device_node *dev_node = muxc->dev->of_node;
struct device_node *mux_node, *child = NULL;
if (muxc->arbitrator)
mux_node = of_get_child_by_name(dev_node, "i2c-arb");
else if (muxc->gate)
---
-2.54.0
-
.../broadcom/brcm80211/include/chipcommon.h | 2 +
10 files changed, 447 insertions(+), 16 deletions(-)
-diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
-index fe31051a9e11..8c3613ff23f5 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
-@@ -298,7 +298,7 @@ void brcmf_rx_event(struct device *dev, struct sk_buff *rxp);
+@@ -298,7 +298,7 @@ void brcmf_rx_event(struct device *dev,
int brcmf_alloc(struct device *dev, struct brcmf_mp_device *settings);
/* Indication from bus module regarding presence/insertion of dongle. */
/* Indication from bus module regarding removal/absence of dongle */
void brcmf_detach(struct device *dev);
void brcmf_free(struct device *dev);
-diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
-index 688f16c51319..456982e63303 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
@@ -20,6 +20,8 @@
MODULE_AUTHOR("Broadcom Corporation");
MODULE_DESCRIPTION("Broadcom 802.11 wireless LAN fullmac driver.");
-@@ -274,6 +276,8 @@ int brcmf_c_preinit_dcmds(struct brcmf_if *ifp)
+@@ -274,6 +276,8 @@ int brcmf_c_preinit_dcmds(struct brcmf_i
char *clmver;
char *ptr;
s32 err;
if (is_valid_ether_addr(ifp->mac_addr)) {
/* set mac address */
-@@ -433,6 +437,41 @@ int brcmf_c_preinit_dcmds(struct brcmf_if *ifp)
+@@ -433,6 +437,41 @@ int brcmf_c_preinit_dcmds(struct brcmf_i
goto done;
}
/* Setup default scan channel time */
err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_SCAN_CHANNEL_TIME,
BRCMF_DEFAULT_SCAN_CHANNEL_TIME);
-diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
-index 862a0336a0b5..89907f76cb19 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
-@@ -1327,7 +1327,7 @@ int brcmf_alloc(struct device *dev, struct brcmf_mp_device *settings)
+@@ -1327,7 +1327,7 @@ int brcmf_alloc(struct device *dev, stru
return 0;
}
}
return 0;
-diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
-index ca49700cca50..f3804d6f8768 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
@@ -29,6 +29,7 @@
/* set default print format */
#undef pr_fmt
-diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.h
-index e327dd58d29c..d8c9d6bee809 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.h
@@ -98,7 +98,8 @@ struct brcmf_cfg80211_info;
typedef int (*brcmf_fweh_handler_t)(struct brcmf_if *ifp,
const struct brcmf_event_msg *evtmsg,
void *data);
-diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
-index 6327f4eca500..88c76e18ea4e 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
-@@ -2214,7 +2214,7 @@ static void brcmf_pcie_setup(struct device *dev, int ret,
+@@ -2214,7 +2214,7 @@ static void brcmf_pcie_setup(struct devi
init_waitqueue_head(&devinfo->mbdata_resp_wait);
if (ret)
goto fail;
-diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
-index b3c4ac025e91..120c48c3dc79 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -35,9 +35,12 @@
#ifdef DEBUG
/* Device console log buffer state */
-@@ -1106,7 +1118,7 @@ static void brcmf_sdio_get_console_addr(struct brcmf_sdio *bus)
+@@ -1106,7 +1118,7 @@ static void brcmf_sdio_get_console_addr(
}
#endif /* DEBUG */
{
struct brcmf_sdio_dev *sdiod = bus->sdiodev;
struct brcmf_core *core = bus->sdio_core;
-@@ -1195,6 +1207,9 @@ static u32 brcmf_sdio_hostmail(struct brcmf_sdio *bus)
+@@ -1195,6 +1207,9 @@ static u32 brcmf_sdio_hostmail(struct br
HMB_DATA_FCDATA_MASK | HMB_DATA_VERSION_MASK))
brcmf_err("Unknown mailbox data content: 0x%02x\n",
hmb_data);
return intstatus;
}
-@@ -2581,6 +2596,182 @@ static int brcmf_sdio_intr_rstatus(struct brcmf_sdio *bus)
+@@ -2582,6 +2597,182 @@ static int brcmf_sdio_intr_rstatus(struc
return ret;
}
static void brcmf_sdio_dpc(struct brcmf_sdio *bus)
{
struct brcmf_sdio_dev *sdiod = bus->sdiodev;
-@@ -2652,8 +2843,11 @@ static void brcmf_sdio_dpc(struct brcmf_sdio *bus)
+@@ -2653,8 +2844,11 @@ static void brcmf_sdio_dpc(struct brcmf_
/* Handle host mailbox indication */
if (intstatus & I_HMB_HOST_INT) {
}
sdio_release_host(bus->sdiodev->func1);
-@@ -2698,7 +2892,7 @@ static void brcmf_sdio_dpc(struct brcmf_sdio *bus)
+@@ -2699,7 +2893,7 @@ static void brcmf_sdio_dpc(struct brcmf_
brcmf_sdio_clrintr(bus);
if (bus->ctrl_frame_stat && (bus->clkstate == CLK_AVAIL) &&
sdio_claim_host(bus->sdiodev->func1);
if (bus->ctrl_frame_stat) {
err = brcmf_sdio_tx_ctrlframe(bus, bus->ctrl_frame_buf,
-@@ -3569,6 +3763,10 @@ static int brcmf_sdio_bus_preinit(struct device *dev)
+@@ -3570,6 +3764,10 @@ static int brcmf_sdio_bus_preinit(struct
if (err < 0)
goto done;
bus->tx_hdrlen = SDPCM_HWHDR_LEN + SDPCM_SWHDR_LEN;
if (sdiodev->sg_support) {
bus->txglom = false;
-@@ -4219,7 +4417,7 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err,
+@@ -4220,7 +4418,7 @@ static void brcmf_sdio_firmware_callback
u8 saveclk, bpreq;
u8 devctl;
if (err)
goto fail;
-@@ -4397,12 +4595,25 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err,
+@@ -4398,12 +4596,25 @@ static void brcmf_sdio_firmware_callback
}
/* Attach to the common layer, reserve hdr space */
/* ready */
return;
-@@ -4650,3 +4861,40 @@ int brcmf_sdio_sleep(struct brcmf_sdio *bus, bool sleep)
+@@ -4652,3 +4863,40 @@ int brcmf_sdio_sleep(struct brcmf_sdio *
return ret;
}
+
+ return err;
+}
-diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h
-index 80180d5c6c87..ed35b56ee427 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h
@@ -165,6 +165,35 @@ struct brcmf_sdreg {
};
/* sdio core registers */
-@@ -367,4 +398,83 @@ void brcmf_sdio_wowl_config(struct device *dev, bool enabled);
+@@ -367,4 +398,83 @@ void brcmf_sdio_wowl_config(struct devic
int brcmf_sdio_sleep(struct brcmf_sdio *bus, bool sleep);
void brcmf_sdio_trigger_dpc(struct brcmf_sdio *bus);
+ brcmf_sdiod_readl(sdh, addr, ret)
+
#endif /* BRCMFMAC_SDIO_H */
-diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
-index f0129d10d2b9..4b28883f9827 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
-@@ -1208,7 +1208,7 @@ static void brcmf_usb_probe_phase2(struct device *dev, int ret,
+@@ -1208,7 +1208,7 @@ static void brcmf_usb_probe_phase2(struc
goto error;
/* Attach to the common driver interface */
if (ret)
goto error;
-@@ -1288,7 +1288,7 @@ static int brcmf_usb_probe_cb(struct brcmf_usbdev_info *devinfo,
+@@ -1288,7 +1288,7 @@ static int brcmf_usb_probe_cb(struct brc
ret = brcmf_alloc(devinfo->dev, devinfo->settings);
if (ret)
goto fail;
if (ret)
goto fail;
/* we are done */
-diff --git a/drivers/net/wireless/broadcom/brcm80211/include/chipcommon.h b/drivers/net/wireless/broadcom/brcm80211/include/chipcommon.h
-index 0340bba96868..090a75bcd728 100644
--- a/drivers/net/wireless/broadcom/brcm80211/include/chipcommon.h
+++ b/drivers/net/wireless/broadcom/brcm80211/include/chipcommon.h
@@ -308,4 +308,6 @@ struct chipcregs {
+#define DEFAULT_43012_MIN_RES_MASK 0x0f8bfe77
+
#endif /* _SBCHIPC_H */
---
-2.54.0
-
.../broadcom/brcm80211/brcmfmac/p2p.c | 5 ++
2 files changed, 42 insertions(+), 30 deletions(-)
-diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
-index 680f03adff92..107e83839131 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
-@@ -2484,43 +2484,50 @@ brcmf_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev,
+@@ -2484,43 +2484,50 @@ brcmf_cfg80211_connect(struct wiphy *wip
goto done;
}
/* Join with specific BSSID and cached SSID
* If SSID is zero join based on BSSID only
*/
-diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c
-index e1752a513c73..20e5bde2397e 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c
-@@ -1281,6 +1281,10 @@ static s32 brcmf_p2p_abort_action_frame(struct brcmf_cfg80211_info *cfg)
+@@ -1281,6 +1281,10 @@ static s32 brcmf_p2p_abort_action_frame(
brcmf_dbg(TRACE, "Enter\n");
vif = p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif;
err = brcmf_fil_bsscfg_data_set(vif->ifp, "actframe_abort", &int_val,
sizeof(s32));
if (err)
-@@ -1817,6 +1821,7 @@ bool brcmf_p2p_send_action_frame(struct brcmf_if *ifp,
+@@ -1817,6 +1821,7 @@ bool brcmf_p2p_send_action_frame(struct
/* validate channel and p2p ies */
if (config_af_params.search_channel &&
IS_P2P_SOCIAL_CHANNEL(le32_to_cpu(af_params->channel)) &&
p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif->saved_ie.probe_req_ie_len) {
afx_hdl = &p2p->afx_hdl;
afx_hdl->peer_listen_chan = le32_to_cpu(af_params->channel);
---
-2.54.0
-
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
-index 107e83839131..e2caf34bb147 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
-@@ -2495,7 +2495,7 @@ brcmf_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev,
+@@ -2495,7 +2495,7 @@ brcmf_cfg80211_connect(struct wiphy *wip
brcmf_dbg(INFO, "using PSK offload\n");
profile->use_fwsup = BRCMF_PROFILE_FWSUP_PSK;
}
profile->use_fwsup = BRCMF_PROFILE_FWSUP_NONE;
}
---
-2.54.0
-
include/linux/mmc/sd.h | 12 ++++++++++
6 files changed, 116 insertions(+), 13 deletions(-)
-diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
-index f6262101198a..de21f882670d 100644
--- a/drivers/mmc/core/block.c
+++ b/drivers/mmc/core/block.c
-@@ -896,7 +896,10 @@ static int mmc_blk_part_switch_pre(struct mmc_card *card,
+@@ -896,7 +896,10 @@ static int mmc_blk_part_switch_pre(struc
if ((part_type & mask) == rpmb) {
if (card->ext_csd.cmdq_en) {
if (ret)
return ret;
}
-@@ -915,8 +918,12 @@ static int mmc_blk_part_switch_post(struct mmc_card *card,
+@@ -915,8 +918,12 @@ static int mmc_blk_part_switch_post(stru
if ((part_type & mask) == rpmb) {
mmc_retune_unpause(card->host);
}
return ret;
-@@ -1127,7 +1134,10 @@ static void mmc_blk_issue_drv_op(struct mmc_queue *mq, struct request *req)
+@@ -1127,7 +1134,10 @@ static void mmc_blk_issue_drv_op(struct
switch (mq_rq->drv_op) {
case MMC_DRV_OP_IOCTL:
if (card->ext_csd.cmdq_en) {
if (ret)
break;
}
-@@ -1145,8 +1155,12 @@ static void mmc_blk_issue_drv_op(struct mmc_queue *mq, struct request *req)
+@@ -1145,8 +1155,12 @@ static void mmc_blk_issue_drv_op(struct
/* Always switch back to main area after RPMB access */
if (rpmb_ioctl)
mmc_blk_part_switch(card, 0);
break;
case MMC_DRV_OP_BOOT_WP:
ret = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL, EXT_CSD_BOOT_WP,
-diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
-index 0c51f3df9537..5d8d3e72dcee 100644
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
-@@ -563,7 +563,11 @@ int mmc_cqe_recovery(struct mmc_host *host)
+@@ -563,7 +563,11 @@ int mmc_cqe_recovery(struct mmc_host *ho
mmc_poll_for_busy(host->card, MMC_CQE_RECOVERY_TIMEOUT, true, MMC_BUSY_IO);
memset(&cmd, 0, sizeof(cmd));
cmd.arg = 1; /* Discard entire queue */
cmd.flags = MMC_RSP_R1B_NO_CRC | MMC_CMD_AC; /* Ignore CRC */
cmd.busy_timeout = MMC_CQE_RECOVERY_TIMEOUT;
-diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
-index 67cd63004829..f40a638584e1 100644
--- a/drivers/mmc/core/sd.c
+++ b/drivers/mmc/core/sd.c
-@@ -1034,8 +1034,8 @@ static bool mmc_sd_card_using_v18(struct mmc_card *card)
+@@ -1034,8 +1034,8 @@ static bool mmc_sd_card_using_v18(struct
(SD_MODE_UHS_SDR50 | SD_MODE_UHS_SDR104 | SD_MODE_UHS_DDR50);
}
{
struct mmc_host *host = card->host;
struct mmc_request mrq = {};
-@@ -1193,8 +1193,14 @@ static int sd_parse_ext_reg_perf(struct mmc_card *card, u8 fno, u8 page,
+@@ -1193,8 +1193,14 @@ static int sd_parse_ext_reg_perf(struct
card->ext_perf.feature_support |= SD_EXT_PERF_CACHE;
/* Command queue support indicated via queue depth bits (0 to 4). */
card->ext_perf.fno = fno;
card->ext_perf.page = page;
-@@ -1584,13 +1590,41 @@ static int mmc_sd_init_card(struct mmc_host *host, u32 ocr,
+@@ -1584,13 +1590,41 @@ cont:
goto free_card;
}
}
}
-diff --git a/drivers/mmc/core/sd_ops.c b/drivers/mmc/core/sd_ops.c
-index cd86463dd306..cd0eba21a94e 100644
--- a/drivers/mmc/core/sd_ops.c
+++ b/drivers/mmc/core/sd_ops.c
-@@ -417,3 +417,40 @@ int mmc_app_sd_status(struct mmc_card *card, void *ssr)
+@@ -417,3 +417,40 @@ int mmc_app_sd_status(struct mmc_card *c
return 0;
}
+ return mmc_sd_cmdq_switch(card, false);
+}
+EXPORT_SYMBOL_GPL(mmc_sd_cmdq_disable);
-diff --git a/drivers/mmc/core/sd_ops.h b/drivers/mmc/core/sd_ops.h
-index 8fffc1b29757..43a9645dc4a6 100644
--- a/drivers/mmc/core/sd_ops.h
+++ b/drivers/mmc/core/sd_ops.h
-@@ -24,6 +24,8 @@ int mmc_app_sd_status(struct mmc_card *card, void *ssr);
+@@ -24,6 +24,8 @@ int mmc_app_sd_status(struct mmc_card *c
int mmc_app_cmd(struct mmc_host *host, struct mmc_card *card);
int mmc_send_ext_addr(struct mmc_host *host, u32 addr);
void mmc_uhs2_prepare_cmd(struct mmc_host *host, struct mmc_request *mrq);
#endif
-diff --git a/include/linux/mmc/sd.h b/include/linux/mmc/sd.h
-index af5fc70e09a2..c13b565c6f01 100644
--- a/include/linux/mmc/sd.h
+++ b/include/linux/mmc/sd.h
@@ -32,6 +32,9 @@
/* class 11 */
#define SD_READ_EXTR_SINGLE 48 /* adtc [31:0] R1 */
#define SD_WRITE_EXTR_SINGLE 49 /* adtc [31:0] R1 */
-@@ -64,6 +67,15 @@
- * [7:0] Check Pattern (0xAA)
+@@ -65,6 +68,15 @@
*/
-+/*
+ /*
+ * SD_CMDQ_TASK_MGMT argument format:
+ *
+ * [31:21] Reserved (0)
+ * [3:0] Operation - 0x1 = abort all tasks, 0x2 = abort Task ID
+ */
+
- /*
++/*
* SCR field definitions
*/
---
-2.54.0
-
+
include/linux/mmc/card.h | 1 +
3 files changed, 14 insertions(+), 23 deletions(-)
-diff --git a/drivers/mmc/core/bus.c b/drivers/mmc/core/bus.c
-index ec4f3462bf80..c7cadebe3ad0 100644
--- a/drivers/mmc/core/bus.c
+++ b/drivers/mmc/core/bus.c
-@@ -267,6 +267,8 @@ static void mmc_release_card(struct device *dev)
+@@ -267,6 +267,8 @@ static void mmc_release_card(struct devi
sdio_free_common_cis(card);
kfree(card->info);
kfree(card);
-diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
-index f40a638584e1..dbeb0c16b084 100644
--- a/drivers/mmc/core/sd.c
+++ b/drivers/mmc/core/sd.c
-@@ -1044,9 +1044,8 @@ int sd_write_ext_reg(struct mmc_card *card, u8 fno, u8 page, u16 offset,
+@@ -1044,9 +1044,8 @@ int sd_write_ext_reg(struct mmc_card *ca
struct scatterlist sg;
u8 *reg_buf;
mrq.cmd = &cmd;
mrq.data = &data;
-@@ -1078,8 +1077,6 @@ int sd_write_ext_reg(struct mmc_card *card, u8 fno, u8 page, u16 offset,
+@@ -1078,8 +1077,6 @@ int sd_write_ext_reg(struct mmc_card *ca
mmc_set_data_timeout(&data, card);
mmc_wait_for_req(host, &mrq);
/*
* Note that, the SD card is allowed to signal busy on DAT0 up to 1s
* after the CMD49. Although, let's leave this to be managed by the
-@@ -1120,9 +1117,7 @@ static int sd_parse_ext_reg_power(struct mmc_card *card, u8 fno, u8 page,
+@@ -1120,9 +1117,7 @@ static int sd_parse_ext_reg_power(struct
int err;
u8 *reg_buf;
/* Read the extension register for power management function. */
err = sd_read_ext_reg(card, fno, page, offset, 512, reg_buf);
-@@ -1152,7 +1147,6 @@ static int sd_parse_ext_reg_power(struct mmc_card *card, u8 fno, u8 page,
+@@ -1152,7 +1147,6 @@ static int sd_parse_ext_reg_power(struct
card->ext_power.offset = offset;
out:
return err;
}
-@@ -1162,9 +1156,7 @@ static int sd_parse_ext_reg_perf(struct mmc_card *card, u8 fno, u8 page,
+@@ -1162,9 +1156,7 @@ static int sd_parse_ext_reg_perf(struct
int err;
u8 *reg_buf;
err = sd_read_ext_reg(card, fno, page, offset, 512, reg_buf);
if (err) {
-@@ -1207,7 +1199,6 @@ static int sd_parse_ext_reg_perf(struct mmc_card *card, u8 fno, u8 page,
+@@ -1207,7 +1199,6 @@ static int sd_parse_ext_reg_perf(struct
card->ext_perf.offset = offset;
out:
return err;
}
-@@ -1278,6 +1269,12 @@ static int sd_read_ext_regs(struct mmc_card *card)
+@@ -1278,6 +1269,12 @@ static int sd_read_ext_regs(struct mmc_c
if (!gen_info_buf)
return -ENOMEM;
/*
* Read 512 bytes of general info, which is found at function number 0,
* at page 0 and with no offset.
-@@ -1344,9 +1341,7 @@ static int sd_flush_cache(struct mmc_host *host)
+@@ -1344,9 +1341,7 @@ static int sd_flush_cache(struct mmc_hos
if (!sd_cache_enabled(host))
return 0;
/*
* Set Flush Cache at bit 0 in the performance enhancement register at
-@@ -1382,21 +1377,15 @@ static int sd_flush_cache(struct mmc_host *host)
+@@ -1382,21 +1377,15 @@ static int sd_flush_cache(struct mmc_hos
if (reg_buf[0] & BIT(0))
err = -ETIMEDOUT;
out:
/*
* Set Cache Enable at bit 0 in the performance enhancement register at
* 260 bytes offset.
-@@ -1415,7 +1404,6 @@ static int sd_enable_cache(struct mmc_card *card)
+@@ -1415,7 +1404,6 @@ static int sd_enable_cache(struct mmc_ca
card->ext_perf.feature_enabled |= SD_EXT_PERF_CACHE;
out:
return err;
}
-diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h
-index b1ad2c63ca59..28255dc8caa8 100644
--- a/include/linux/mmc/card.h
+++ b/include/linux/mmc/card.h
-@@ -355,6 +355,7 @@ struct mmc_card {
+@@ -357,6 +357,7 @@ struct mmc_card {
struct sd_switch_caps sw_caps; /* switch (CMD6) caps */
struct sd_ext_reg ext_power; /* SD extension reg for PM */
struct sd_ext_reg ext_perf; /* SD extension reg for PERF */
struct sd_uhs2_config uhs2_config; /* SD UHS-II config */
---
-2.54.0
-
drivers/mmc/core/core.c | 1 +
1 file changed, 1 insertion(+)
-diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
-index 5d8d3e72dcee..d938237b9909 100644
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
-@@ -463,6 +463,7 @@ int mmc_cqe_start_req(struct mmc_host *host, struct mmc_request *mrq)
+@@ -463,6 +463,7 @@ int mmc_cqe_start_req(struct mmc_host *h
goto out_err;
trace_mmc_request_start(host, mrq);
return 0;
---
-2.54.0
-
drivers/mmc/host/sdhci-brcmstb.c | 4 ++++
1 file changed, 4 insertions(+)
-diff --git a/drivers/mmc/host/sdhci-brcmstb.c b/drivers/mmc/host/sdhci-brcmstb.c
-index 9baabf1be54e..51ea3b6b1912 100644
--- a/drivers/mmc/host/sdhci-brcmstb.c
+++ b/drivers/mmc/host/sdhci-brcmstb.c
-@@ -385,6 +385,7 @@ static void sdhci_brcmstb_dumpregs(struct mmc_host *mmc)
+@@ -385,6 +385,7 @@ static void sdhci_brcmstb_dumpregs(struc
static void sdhci_brcmstb_cqe_enable(struct mmc_host *mmc)
{
struct sdhci_host *host = mmc_priv(mmc);
u32 reg;
reg = sdhci_readl(host, SDHCI_PRESENT_STATE);
-@@ -394,6 +395,9 @@ static void sdhci_brcmstb_cqe_enable(struct mmc_host *mmc)
+@@ -394,6 +395,9 @@ static void sdhci_brcmstb_cqe_enable(str
}
sdhci_cqe_enable(mmc);
}
static const struct cqhci_host_ops sdhci_brcmstb_cqhci_ops = {
---
-2.54.0
-
drivers/mmc/host/cqhci-core.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
-diff --git a/drivers/mmc/host/cqhci-core.c b/drivers/mmc/host/cqhci-core.c
-index 178277d90c31..78e80bc574eb 100644
--- a/drivers/mmc/host/cqhci-core.c
+++ b/drivers/mmc/host/cqhci-core.c
-@@ -388,9 +388,11 @@ static void cqhci_off(struct mmc_host *mmc)
+@@ -388,9 +388,11 @@ static void cqhci_off(struct mmc_host *m
err = readx_poll_timeout(cqhci_read_ctl, cq_host, reg,
reg & CQHCI_HALT, 0, CQHCI_OFF_TIMEOUT);
pr_debug("%s: cqhci: CQE off\n", mmc_hostname(mmc));
if (cq_host->ops->post_disable)
-@@ -980,8 +982,11 @@ static bool cqhci_halt(struct mmc_host *mmc, unsigned int timeout)
+@@ -980,8 +982,11 @@ static bool cqhci_halt(struct mmc_host *
ret = cqhci_halted(cq_host);
return ret;
}
---
-2.54.0
-
drivers/mmc/core/sd_ops.h | 4 ++
3 files changed, 93 insertions(+), 91 deletions(-)
-diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
-index dbeb0c16b084..03ecb69f7510 100644
--- a/drivers/mmc/core/sd.c
+++ b/drivers/mmc/core/sd.c
-@@ -1034,83 +1034,6 @@ static bool mmc_sd_card_using_v18(struct mmc_card *card)
+@@ -1034,83 +1034,6 @@ static bool mmc_sd_card_using_v18(struct
(SD_MODE_UHS_SDR50 | SD_MODE_UHS_SDR104 | SD_MODE_UHS_DDR50);
}
static int sd_parse_ext_reg_power(struct mmc_card *card, u8 fno, u8 page,
u16 offset)
{
-@@ -1120,7 +1043,7 @@ static int sd_parse_ext_reg_power(struct mmc_card *card, u8 fno, u8 page,
+@@ -1120,7 +1043,7 @@ static int sd_parse_ext_reg_power(struct
reg_buf = card->ext_reg_buf;
/* Read the extension register for power management function. */
if (err) {
pr_warn("%s: error %d reading PM func of ext reg\n",
mmc_hostname(card->host), err);
-@@ -1158,7 +1081,7 @@ static int sd_parse_ext_reg_perf(struct mmc_card *card, u8 fno, u8 page,
+@@ -1158,7 +1081,7 @@ static int sd_parse_ext_reg_perf(struct
reg_buf = card->ext_reg_buf;
if (err) {
pr_warn("%s: error %d reading PERF func of ext reg\n",
mmc_hostname(card->host), err);
-@@ -1253,7 +1176,7 @@ static int sd_parse_ext_reg(struct mmc_card *card, u8 *gen_info_buf,
+@@ -1253,7 +1176,7 @@ static int sd_parse_ext_reg(struct mmc_c
return 0;
}
{
int err, i;
u8 num_ext, *gen_info_buf;
-@@ -1279,7 +1202,7 @@ static int sd_read_ext_regs(struct mmc_card *card)
+@@ -1279,7 +1202,7 @@ static int sd_read_ext_regs(struct mmc_c
* Read 512 bytes of general info, which is found at function number 0,
* at page 0 and with no offset.
*/
if (err) {
pr_err("%s: error %d reading general info of SD ext reg\n",
mmc_hostname(card->host), err);
-@@ -1351,7 +1274,7 @@ static int sd_flush_cache(struct mmc_host *host)
+@@ -1351,7 +1274,7 @@ static int sd_flush_cache(struct mmc_hos
page = card->ext_perf.page;
offset = card->ext_perf.offset + 261;
if (err) {
pr_warn("%s: error %d writing Cache Flush bit\n",
mmc_hostname(host), err);
-@@ -1367,7 +1290,7 @@ static int sd_flush_cache(struct mmc_host *host)
+@@ -1367,7 +1290,7 @@ static int sd_flush_cache(struct mmc_hos
* Read the Flush Cache bit. The card shall reset it, to confirm that
* it's has completed the flushing of the cache.
*/
if (err) {
pr_warn("%s: error %d reading Cache Flush bit\n",
mmc_hostname(host), err);
-@@ -1390,7 +1313,7 @@ static int sd_enable_cache(struct mmc_card *card)
+@@ -1390,7 +1313,7 @@ static int sd_enable_cache(struct mmc_ca
* Set Cache Enable at bit 0 in the performance enhancement register at
* 260 bytes offset.
*/
card->ext_perf.offset + 260, BIT(0));
if (err) {
pr_warn("%s: error %d writing Cache Enable bit\n",
-@@ -1566,7 +1489,7 @@ static int mmc_sd_init_card(struct mmc_host *host, u32 ocr,
+@@ -1566,7 +1489,7 @@ retry:
cont:
if (!oldcard) {
/* Read/parse the extension registers. */
if (err)
goto free_card;
}
-@@ -1685,7 +1608,7 @@ static int sd_busy_poweroff_notify_cb(void *cb_data, bool *busy)
+@@ -1685,7 +1608,7 @@ static int sd_busy_poweroff_notify_cb(vo
* one byte offset and is one byte long. The Power Off Notification
* Ready is bit 0.
*/
card->ext_power.offset + 1, 1, data->reg_buf);
if (err) {
pr_warn("%s: error %d reading status reg of PM func\n",
-@@ -1711,7 +1634,7 @@ static int sd_poweroff_notify(struct mmc_card *card)
+@@ -1711,7 +1634,7 @@ static int sd_poweroff_notify(struct mmc
* Set the Power Off Notification bit in the power management settings
* register at 2 bytes offset.
*/
card->ext_power.offset + 2, BIT(0));
if (err) {
pr_warn("%s: error %d writing Power Off Notify bit\n",
-diff --git a/drivers/mmc/core/sd_ops.c b/drivers/mmc/core/sd_ops.c
-index cd0eba21a94e..5bb43b542645 100644
--- a/drivers/mmc/core/sd_ops.c
+++ b/drivers/mmc/core/sd_ops.c
-@@ -418,8 +418,83 @@ int mmc_app_sd_status(struct mmc_card *card, void *ssr)
+@@ -418,8 +418,83 @@ int mmc_app_sd_status(struct mmc_card *c
return 0;
}
static int mmc_sd_cmdq_switch(struct mmc_card *card, bool enable)
{
-@@ -435,8 +510,8 @@ static int mmc_sd_cmdq_switch(struct mmc_card *card, bool enable)
+@@ -435,8 +510,8 @@ static int mmc_sd_cmdq_switch(struct mmc
reg = BIT(0);
/* Performance enhancement register byte 262 controls command queueing */
if (!err)
card->ext_csd.cmdq_en = enable;
-diff --git a/drivers/mmc/core/sd_ops.h b/drivers/mmc/core/sd_ops.h
-index 43a9645dc4a6..db04885ecb0f 100644
--- a/drivers/mmc/core/sd_ops.h
+++ b/drivers/mmc/core/sd_ops.h
-@@ -26,6 +26,10 @@ int mmc_send_ext_addr(struct mmc_host *host, u32 addr);
+@@ -26,6 +26,10 @@ int mmc_send_ext_addr(struct mmc_host *h
void mmc_uhs2_prepare_cmd(struct mmc_host *host, struct mmc_request *mrq);
int mmc_sd_cmdq_enable(struct mmc_card *card);
int mmc_sd_cmdq_disable(struct mmc_card *card);
#endif
---
-2.54.0
-
drivers/mmc/core/sd_ops.c | 22 ++++++++++++++++++++++
2 files changed, 28 insertions(+), 2 deletions(-)
-diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
-index 03ecb69f7510..8c3e580fbc09 100644
--- a/drivers/mmc/core/sd.c
+++ b/drivers/mmc/core/sd.c
-@@ -1107,8 +1107,12 @@ static int sd_parse_ext_reg_perf(struct mmc_card *card, u8 fno, u8 page,
+@@ -1107,8 +1107,12 @@ static int sd_parse_ext_reg_perf(struct
if ((reg_buf[4] & BIT(0)) && !mmc_card_broken_sd_cache(card))
card->ext_perf.feature_support |= SD_EXT_PERF_CACHE;
card->ext_perf.feature_support |= SD_EXT_PERF_CMD_QUEUE;
card->ext_csd.cmdq_depth = reg_buf[6] & 0x1f;
card->ext_csd.cmdq_support = true;
-diff --git a/drivers/mmc/core/sd_ops.c b/drivers/mmc/core/sd_ops.c
-index 5bb43b542645..5d03b6b6e69b 100644
--- a/drivers/mmc/core/sd_ops.c
+++ b/drivers/mmc/core/sd_ops.c
@@ -8,6 +8,7 @@
#include <linux/scatterlist.h>
#include <linux/mmc/host.h>
-@@ -500,6 +501,8 @@ static int mmc_sd_cmdq_switch(struct mmc_card *card, bool enable)
+@@ -500,6 +501,8 @@ static int mmc_sd_cmdq_switch(struct mmc
{
int err;
u8 reg = 0;
/*
* SD offers two command queueing modes - sequential (in-order) and
* voluntary (out-of-order). Apps Class A2 performance is only
-@@ -512,6 +515,25 @@ static int mmc_sd_cmdq_switch(struct mmc_card *card, bool enable)
+@@ -512,6 +515,25 @@ static int mmc_sd_cmdq_switch(struct mmc
/* Performance enhancement register byte 262 controls command queueing */
err = mmc_sd_write_ext_reg(card, card->ext_perf.fno, card->ext_perf.page,
card->ext_perf.offset + 262, reg);
if (!err)
card->ext_csd.cmdq_en = enable;
---
-2.54.0
-
drivers/mmc/core/sd.c | 9 ++++++---
2 files changed, 8 insertions(+), 5 deletions(-)
-diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
-index 3e7d9437477c..20afd81ee5ea 100644
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
-@@ -1926,8 +1926,8 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
+@@ -1940,8 +1940,8 @@ static int mmc_init_card(struct mmc_host
host->cqe_enabled = true;
if (card->ext_csd.cmdq_en) {
} else {
host->hsq_enabled = true;
pr_info("%s: Host Software Queue enabled\n",
-diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
-index 8c3e580fbc09..dfcb86aa5104 100644
--- a/drivers/mmc/core/sd.c
+++ b/drivers/mmc/core/sd.c
-@@ -730,7 +730,8 @@ MMC_DEV_ATTR(oemid, "0x%04x\n", card->cid.oemid);
+@@ -730,7 +730,8 @@ MMC_DEV_ATTR(oemid, "0x%04x\n", card->ci
MMC_DEV_ATTR(serial, "0x%08x\n", card->cid.serial);
MMC_DEV_ATTR(ocr, "0x%08x\n", card->ocr);
MMC_DEV_ATTR(rca, "0x%04x\n", card->rca);
static ssize_t mmc_dsr_show(struct device *dev, struct device_attribute *attr,
char *buf)
-@@ -792,6 +793,8 @@ static struct attribute *sd_std_attrs[] = {
+@@ -792,6 +793,8 @@ static struct attribute *sd_std_attrs[]
&dev_attr_ocr.attr,
&dev_attr_rca.attr,
&dev_attr_dsr.attr,
NULL,
};
-@@ -1533,8 +1536,8 @@ static int mmc_sd_init_card(struct mmc_host *host, u32 ocr,
+@@ -1533,8 +1536,8 @@ cont:
host->cqe_enabled = true;
if (card->ext_csd.cmdq_en) {
} else {
host->hsq_enabled = true;
pr_info("%s: Host Software Queue enabled\n",
---
-2.54.0
-
drivers/mmc/core/sd.c | 19 ++++++++++++++-----
1 file changed, 14 insertions(+), 5 deletions(-)
-diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
-index dfcb86aa5104..526e6f4d2a9d 100644
--- a/drivers/mmc/core/sd.c
+++ b/drivers/mmc/core/sd.c
-@@ -1195,7 +1195,7 @@ static int mmc_sd_read_ext_regs(struct mmc_card *card)
+@@ -1195,7 +1195,7 @@ static int mmc_sd_read_ext_regs(struct m
if (!(card->scr.cmds & SD_SCR_CMD48_SUPPORT))
return 0;
if (!gen_info_buf)
return -ENOMEM;
-@@ -1226,14 +1226,23 @@ static int mmc_sd_read_ext_regs(struct mmc_card *card)
+@@ -1226,14 +1226,23 @@ static int mmc_sd_read_ext_regs(struct m
num_ext = gen_info_buf[4];
/*
goto out;
}
---
-2.54.0
-
drivers/mmc/host/sdhci-brcmstb.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
-diff --git a/drivers/mmc/host/sdhci-brcmstb.c b/drivers/mmc/host/sdhci-brcmstb.c
-index 51ea3b6b1912..ce7e363a5ad7 100644
--- a/drivers/mmc/host/sdhci-brcmstb.c
+++ b/drivers/mmc/host/sdhci-brcmstb.c
-@@ -243,6 +243,20 @@ static void sdhci_brcmstb_set_uhs_signaling(struct sdhci_host *host,
+@@ -243,6 +243,20 @@ static void sdhci_brcmstb_set_uhs_signal
sdhci_writew(host, ctrl_2, SDHCI_HOST_CONTROL2);
}
static void sdhci_brcmstb_cfginit_2712(struct sdhci_host *host)
{
struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
-@@ -262,6 +276,8 @@ static void sdhci_brcmstb_cfginit_2712(struct sdhci_host *host)
+@@ -262,6 +276,8 @@ static void sdhci_brcmstb_cfginit_2712(s
reg &= ~SDIO_CFG_MAX_50MHZ_MODE_ENABLE;
reg |= SDIO_CFG_MAX_50MHZ_MODE_STRAP_OVERRIDE;
writel(reg, brcmstb_priv->cfg_regs + SDIO_CFG_MAX_50MHZ_MODE);
}
if ((host->mmc->caps & MMC_CAP_NONREMOVABLE) ||
---
-2.54.0
-
drivers/mmc/host/sdhci.c | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
-diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
-index 36ecd897bcb0..43a3e03f0951 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
-@@ -1084,7 +1084,7 @@ void sdhci_initialize_data(struct sdhci_host *host, struct mmc_data *data)
+@@ -1084,7 +1084,7 @@ void sdhci_initialize_data(struct sdhci_
WARN_ON(host->data);
/* Sanity checks */
BUG_ON(data->blksz > host->mmc->max_blk_size);
BUG_ON(data->blocks > 65535);
-@@ -4769,11 +4769,16 @@ int sdhci_setup_host(struct sdhci_host *host)
+@@ -4770,11 +4770,16 @@ int sdhci_setup_host(struct sdhci_host *
spin_lock_init(&host->lock);
/*
/*
* Maximum number of segments. Depends on if the hardware
---
-2.54.0
-
drivers/mmc/host/sdhci-brcmstb.c | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
-diff --git a/drivers/mmc/host/sdhci-brcmstb.c b/drivers/mmc/host/sdhci-brcmstb.c
-index ce7e363a5ad7..1bbc9634c903 100644
--- a/drivers/mmc/host/sdhci-brcmstb.c
+++ b/drivers/mmc/host/sdhci-brcmstb.c
-@@ -412,8 +412,21 @@ static void sdhci_brcmstb_cqe_enable(struct mmc_host *mmc)
+@@ -412,8 +412,21 @@ static void sdhci_brcmstb_cqe_enable(str
sdhci_cqe_enable(mmc);
}
static const struct cqhci_host_ops sdhci_brcmstb_cqhci_ops = {
-@@ -433,7 +446,7 @@ static struct sdhci_ops sdhci_brcmstb_ops_2712 = {
+@@ -433,7 +446,7 @@ static struct sdhci_ops sdhci_brcmstb_op
.set_clock = sdhci_bcm2712_set_clock,
.set_power = sdhci_brcmstb_set_power,
.set_bus_width = sdhci_set_bus_width,
.set_uhs_signaling = sdhci_set_uhs_signaling,
.init_sd_express = bcm2712_init_sd_express,
};
---
-2.54.0
-
drivers/mmc/core/core.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
-diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
-index d938237b9909..764611873cc6 100644
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
-@@ -551,10 +551,18 @@ int mmc_cqe_recovery(struct mmc_host *host)
+@@ -551,10 +551,18 @@ int mmc_cqe_recovery(struct mmc_host *ho
* Recovery is expected seldom, if at all, but it reduces performance,
* so make sure it is not completely silent.
*/
memset(&cmd, 0, sizeof(cmd));
cmd.opcode = MMC_STOP_TRANSMISSION;
cmd.flags = MMC_RSP_R1B_NO_CRC | MMC_CMD_AC; /* Ignore CRC */
---
-2.54.0
-
include/linux/mmc/card.h | 2 ++
6 files changed, 33 insertions(+), 2 deletions(-)
-diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
-index de21f882670d..04c45326e060 100644
--- a/drivers/mmc/core/block.c
+++ b/drivers/mmc/core/block.c
-@@ -1581,6 +1581,8 @@ static void mmc_blk_cqe_complete_rq(struct mmc_queue *mq, struct request *req)
+@@ -1587,6 +1587,8 @@ static void mmc_blk_cqe_complete_rq(stru
spin_lock_irqsave(&mq->lock, flags);
mq->in_flight[issue_type] -= 1;
put_card = (mmc_tot_in_flight(mq) == 0);
-@@ -2101,6 +2103,8 @@ static void mmc_blk_mq_complete_rq(struct mmc_queue *mq, struct request *req)
+@@ -2107,6 +2109,8 @@ static void mmc_blk_mq_complete_rq(struc
struct mmc_queue_req *mqrq = req_to_mmc_queue_req(req);
unsigned int nr_bytes = mqrq->brq.data.bytes_xfered;
if (nr_bytes) {
if (blk_update_request(req, BLK_STS_OK, nr_bytes))
blk_mq_requeue_request(req, true);
-@@ -2195,13 +2199,16 @@ static void mmc_blk_mq_poll_completion(struct mmc_queue *mq,
+@@ -2203,13 +2207,16 @@ static void mmc_blk_mq_poll_completion(s
mmc_blk_urgent_bkops(mq, mqrq);
}
mq->in_flight[issue_type] -= 1;
put_card = (mmc_tot_in_flight(mq) == 0);
-@@ -2235,7 +2242,7 @@ static void mmc_blk_mq_post_req(struct mmc_queue *mq, struct request *req,
+@@ -2243,7 +2250,7 @@ static void mmc_blk_mq_post_req(struct m
blk_mq_complete_request(req);
}
}
void mmc_blk_mq_recovery(struct mmc_queue *mq)
-diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
-index 20afd81ee5ea..afe172583cb0 100644
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
-@@ -1668,6 +1668,7 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
+@@ -1682,6 +1682,7 @@ static int mmc_init_card(struct mmc_host
card->ocr = ocr;
card->type = MMC_TYPE_MMC;
card->rca = 1;
memcpy(card->raw_cid, cid, sizeof(card->raw_cid));
}
-@@ -1933,6 +1934,7 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
+@@ -1947,6 +1948,7 @@ static int mmc_init_card(struct mmc_host
pr_info("%s: Host Software Queue enabled\n",
mmc_hostname(host));
}
}
}
-diff --git a/drivers/mmc/core/queue.c b/drivers/mmc/core/queue.c
-index 284856c8f655..feda8ddbd8b6 100644
--- a/drivers/mmc/core/queue.c
+++ b/drivers/mmc/core/queue.c
-@@ -266,6 +266,11 @@ static blk_status_t mmc_mq_queue_rq(struct blk_mq_hw_ctx *hctx,
+@@ -271,6 +271,11 @@ static blk_status_t mmc_mq_queue_rq(stru
spin_unlock_irq(&mq->lock);
return BLK_STS_RESOURCE;
}
break;
default:
/*
-@@ -282,6 +287,8 @@ static blk_status_t mmc_mq_queue_rq(struct blk_mq_hw_ctx *hctx,
+@@ -287,6 +292,8 @@ static blk_status_t mmc_mq_queue_rq(stru
/* Parallel dispatch of requests is not supported at the moment */
mq->busy = true;
mq->in_flight[issue_type] += 1;
get_card = (mmc_tot_in_flight(mq) == 1);
cqe_retune_ok = (mmc_cqe_qcnt(mq) == 1);
-@@ -321,6 +328,8 @@ static blk_status_t mmc_mq_queue_rq(struct blk_mq_hw_ctx *hctx,
+@@ -326,6 +333,8 @@ static blk_status_t mmc_mq_queue_rq(stru
bool put_card = false;
spin_lock_irq(&mq->lock);
mq->in_flight[issue_type] -= 1;
if (mmc_tot_in_flight(mq) == 0)
put_card = true;
-diff --git a/drivers/mmc/core/queue.h b/drivers/mmc/core/queue.h
-index 1498840a4ea0..39180d97911b 100644
--- a/drivers/mmc/core/queue.h
+++ b/drivers/mmc/core/queue.h
-@@ -79,6 +79,7 @@ struct mmc_queue {
+@@ -82,6 +82,7 @@ struct mmc_queue {
struct request_queue *queue;
spinlock_t lock;
int in_flight[MMC_ISSUE_MAX];
unsigned int cqe_busy;
#define MMC_CQE_DCMD_BUSY BIT(0)
bool busy;
-diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
-index 526e6f4d2a9d..d557e2ed333d 100644
--- a/drivers/mmc/core/sd.c
+++ b/drivers/mmc/core/sd.c
-@@ -1122,6 +1122,15 @@ static int sd_parse_ext_reg_perf(struct mmc_card *card, u8 fno, u8 page,
+@@ -1122,6 +1122,15 @@ static int sd_parse_ext_reg_perf(struct
pr_debug("%s: Command Queue supported depth %u\n",
mmc_hostname(card->host),
card->ext_csd.cmdq_depth);
}
card->ext_perf.fno = fno;
-@@ -1385,6 +1394,7 @@ static int mmc_sd_init_card(struct mmc_host *host, u32 ocr,
+@@ -1385,6 +1394,7 @@ retry:
card->ocr = ocr;
card->type = MMC_TYPE_SD;
memcpy(card->raw_cid, cid, sizeof(card->raw_cid));
}
-diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h
-index 28255dc8caa8..5d2b5e99ab2c 100644
--- a/include/linux/mmc/card.h
+++ b/include/linux/mmc/card.h
-@@ -380,6 +380,8 @@ struct mmc_card {
+@@ -382,6 +382,8 @@ struct mmc_card {
unsigned int nr_parts;
struct workqueue_struct *complete_wq; /* Private workqueue */
};
static inline bool mmc_large_sector(struct mmc_card *card)
---
-2.54.0
-
drivers/mmc/core/block.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
-diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
-index 04c45326e060..dbba6a636aed 100644
--- a/drivers/mmc/core/block.c
+++ b/drivers/mmc/core/block.c
-@@ -1550,6 +1550,7 @@ static void mmc_blk_cqe_complete_rq(struct mmc_queue *mq, struct request *req)
+@@ -1553,6 +1553,7 @@ static void mmc_blk_cqe_complete_rq(stru
struct request_queue *q = req->q;
struct mmc_host *host = mq->card->host;
enum mmc_issue_type issue_type = mmc_issue_type(mq, req);
unsigned long flags;
bool put_card;
int err;
-@@ -1581,7 +1582,7 @@ static void mmc_blk_cqe_complete_rq(struct mmc_queue *mq, struct request *req)
+@@ -1587,7 +1588,7 @@ static void mmc_blk_cqe_complete_rq(stru
spin_lock_irqsave(&mq->lock, flags);
mq->pending_writes--;
mq->in_flight[issue_type] -= 1;
-@@ -2200,15 +2201,16 @@ static void mmc_blk_mq_poll_completion(struct mmc_queue *mq,
+@@ -2208,15 +2209,16 @@ static void mmc_blk_mq_poll_completion(s
}
static void mmc_blk_mq_dec_in_flight(struct mmc_queue *mq, enum mmc_issue_type issue_type,
mq->in_flight[issue_type] -= 1;
put_card = (mmc_tot_in_flight(mq) == 0);
-@@ -2223,6 +2225,7 @@ static void mmc_blk_mq_post_req(struct mmc_queue *mq, struct request *req,
+@@ -2231,6 +2233,7 @@ static void mmc_blk_mq_post_req(struct m
bool can_sleep)
{
enum mmc_issue_type issue_type = mmc_issue_type(mq, req);
struct mmc_queue_req *mqrq = req_to_mmc_queue_req(req);
struct mmc_request *mrq = &mqrq->brq.mrq;
struct mmc_host *host = mq->card->host;
-@@ -2242,7 +2245,7 @@ static void mmc_blk_mq_post_req(struct mmc_queue *mq, struct request *req,
+@@ -2250,7 +2253,7 @@ static void mmc_blk_mq_post_req(struct m
blk_mq_complete_request(req);
}
}
void mmc_blk_mq_recovery(struct mmc_queue *mq)
---
-2.54.0
-
drivers/mmc/core/quirks.h | 8 ++++++++
2 files changed, 9 insertions(+)
-diff --git a/drivers/mmc/core/card.h b/drivers/mmc/core/card.h
-index 1200951bab08..a5bf97da19b1 100644
--- a/drivers/mmc/core/card.h
+++ b/drivers/mmc/core/card.h
@@ -88,6 +88,7 @@ struct mmc_fixup {
#define CID_MANFID_SAMSUNG 0x15
+#define CID_MANFID_SAMSUNG_SD 0x1b
#define CID_MANFID_APACER 0x27
+ #define CID_MANFID_SANDISK_MMC 0x45
#define CID_MANFID_SWISSBIT 0x5D
- #define CID_MANFID_KINGSTON 0x70
-diff --git a/drivers/mmc/core/quirks.h b/drivers/mmc/core/quirks.h
-index 832ddaffa9ef..7c36fbba6676 100644
--- a/drivers/mmc/core/quirks.h
+++ b/drivers/mmc/core/quirks.h
-@@ -50,6 +50,14 @@ static const struct mmc_fixup __maybe_unused mmc_sd_fixups[] = {
+@@ -50,6 +50,14 @@ static const struct mmc_fixup __maybe_un
MMC_FIXUP(CID_NAME_ANY, CID_MANFID_SANDISK_SD, 0x5344, add_quirk_sd,
MMC_QUIRK_BROKEN_SD_DISCARD),
END_FIXUP
};
---
-2.54.0
-
drivers/mmc/core/quirks.h | 12 ++++++++++++
1 file changed, 12 insertions(+)
-diff --git a/drivers/mmc/core/quirks.h b/drivers/mmc/core/quirks.h
-index 7c36fbba6676..4da99900168a 100644
--- a/drivers/mmc/core/quirks.h
+++ b/drivers/mmc/core/quirks.h
-@@ -58,6 +58,18 @@ static const struct mmc_fixup __maybe_unused mmc_sd_fixups[] = {
+@@ -58,6 +58,18 @@ static const struct mmc_fixup __maybe_un
0, -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd,
MMC_QUIRK_BROKEN_SD_CACHE, EXT_CSD_REV_ANY),
END_FIXUP
};
---
-2.54.0
-
drivers/mmc/core/block.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
-diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
-index dbba6a636aed..eda8e848615a 100644
--- a/drivers/mmc/core/block.c
+++ b/drivers/mmc/core/block.c
-@@ -1202,12 +1202,26 @@ static void mmc_blk_issue_erase_rq(struct mmc_queue *mq, struct request *req,
+@@ -1202,12 +1202,26 @@ static void mmc_blk_issue_erase_rq(struc
sector_t from;
int err = 0;
blk_status_t status = BLK_STS_OK;
from = blk_rq_pos(req);
nr = blk_rq_sectors(req);
-@@ -1228,6 +1242,11 @@ static void mmc_blk_issue_erase_rq(struct mmc_queue *mq, struct request *req,
+@@ -1228,6 +1242,11 @@ static void mmc_blk_issue_erase_rq(struc
status = BLK_STS_IOERR;
else
mmc_blk_reset_success(md, type);
fail:
blk_mq_end_request(req, status);
}
---
-2.54.0
-
drivers/mmc/core/quirks.h | 9 +++++++++
1 file changed, 9 insertions(+)
-diff --git a/drivers/mmc/core/quirks.h b/drivers/mmc/core/quirks.h
-index 4da99900168a..1ecbbb1cd9e2 100644
--- a/drivers/mmc/core/quirks.h
+++ b/drivers/mmc/core/quirks.h
-@@ -187,6 +187,15 @@ static const struct mmc_fixup __maybe_unused mmc_blk_fixups[] = {
+@@ -196,6 +196,15 @@ static const struct mmc_fixup __maybe_un
MMC_FIXUP("SD32G", 0x41, 0x3432, add_quirk, MMC_QUIRK_ERASE_BROKEN),
MMC_FIXUP("SD64G", 0x41, 0x3432, add_quirk, MMC_QUIRK_ERASE_BROKEN),
END_FIXUP
};
---
-2.54.0
-
drivers/i2c/busses/i2c-designware-master.c | 19 ++++++++++++++++++-
3 files changed, 37 insertions(+), 1 deletion(-)
-diff --git a/drivers/i2c/busses/i2c-designware-common.c b/drivers/i2c/busses/i2c-designware-common.c
-index 584429a1401d..b19c1144b58e 100644
--- a/drivers/i2c/busses/i2c-designware-common.c
+++ b/drivers/i2c/busses/i2c-designware-common.c
-@@ -63,6 +63,8 @@ static const char *const abort_sources[] = {
+@@ -63,6 +63,8 @@ static const char *const abort_sources[]
"slave lost the bus while transmitting data to a remote master",
[ABRT_SLAVE_RD_INTX] =
"incorrect slave-transmitter mode configuration",
};
static int dw_reg_read(void *context, unsigned int reg, unsigned int *val)
-@@ -679,8 +681,16 @@ int i2c_dw_wait_bus_not_busy(struct dw_i2c_dev *dev)
+@@ -679,8 +681,16 @@ int i2c_dw_wait_bus_not_busy(struct dw_i
int i2c_dw_handle_tx_abort(struct dw_i2c_dev *dev)
{
unsigned long abort_source = dev->abort_source;
if (abort_source & DW_IC_TX_ABRT_NOACK) {
for_each_set_bit(i, &abort_source, ARRAY_SIZE(abort_sources))
dev_dbg(dev->dev,
-@@ -695,6 +705,8 @@ int i2c_dw_handle_tx_abort(struct dw_i2c_dev *dev)
+@@ -695,6 +705,8 @@ int i2c_dw_handle_tx_abort(struct dw_i2c
return -EAGAIN;
if (abort_source & DW_IC_TX_ABRT_GCALL_READ)
return -EINVAL; /* wrong msgs[] data */
return -EIO;
}
-diff --git a/drivers/i2c/busses/i2c-designware-core.h b/drivers/i2c/busses/i2c-designware-core.h
-index 67000b51a2fc..c8e4c122ed4d 100644
--- a/drivers/i2c/busses/i2c-designware-core.h
+++ b/drivers/i2c/busses/i2c-designware-core.h
@@ -79,9 +79,12 @@
#define DW_IC_TX_ABRT_NOACK (DW_IC_TX_ABRT_7B_ADDR_NOACK | \
DW_IC_TX_ABRT_10ADDR1_NOACK | \
-diff --git a/drivers/i2c/busses/i2c-designware-master.c b/drivers/i2c/busses/i2c-designware-master.c
-index a4b4bacdb2a6..906e507a2866 100644
--- a/drivers/i2c/busses/i2c-designware-master.c
+++ b/drivers/i2c/busses/i2c-designware-master.c
-@@ -248,6 +248,7 @@ static int i2c_dw_set_timings_master(struct dw_i2c_dev *dev)
+@@ -248,6 +248,7 @@ static int i2c_dw_set_timings_master(str
*/
static int i2c_dw_init_master(struct dw_i2c_dev *dev)
{
int ret;
ret = i2c_dw_acquire_lock(dev);
-@@ -278,6 +279,17 @@ static int i2c_dw_init_master(struct dw_i2c_dev *dev)
+@@ -278,6 +279,17 @@ static int i2c_dw_init_master(struct dw_
regmap_write(dev->map, DW_IC_HS_SCL_LCNT, dev->hs_lcnt);
}
/* Write SDA hold time if supported */
if (dev->sda_hold_time)
regmap_write(dev->map, DW_IC_SDA_HOLD, dev->sda_hold_time);
-@@ -1058,6 +1070,7 @@ int i2c_dw_probe_master(struct dw_i2c_dev *dev)
+@@ -1058,6 +1070,7 @@ int i2c_dw_probe_master(struct dw_i2c_de
struct i2c_adapter *adap = &dev->adapter;
unsigned long irq_flags;
unsigned int ic_con;
int ret;
init_completion(&dev->cmd_complete);
-@@ -1092,7 +1105,11 @@ int i2c_dw_probe_master(struct dw_i2c_dev *dev)
+@@ -1092,7 +1105,11 @@ int i2c_dw_probe_master(struct dw_i2c_de
if (ret)
return ret;
dev->master_cfg |= DW_IC_CON_BUS_CLEAR_CTRL;
ret = dev->init(dev);
---
-2.54.0
-
drivers/i2c/busses/i2c-designware-master.c | 3 +++
1 file changed, 3 insertions(+)
-diff --git a/drivers/i2c/busses/i2c-designware-master.c b/drivers/i2c/busses/i2c-designware-master.c
-index 906e507a2866..c5d169becc75 100644
--- a/drivers/i2c/busses/i2c-designware-master.c
+++ b/drivers/i2c/busses/i2c-designware-master.c
-@@ -228,6 +228,9 @@ static int i2c_dw_set_timings_master(struct dw_i2c_dev *dev)
+@@ -228,6 +228,9 @@ static int i2c_dw_set_timings_master(str
dev->hs_hcnt, dev->hs_lcnt);
}
ret = i2c_dw_set_sda_hold(dev);
if (ret)
return ret;
---
-2.54.0
-
drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c | 3 +++
1 file changed, 3 insertions(+)
-diff --git a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
-index 79bd6525c371..c8a0470d404b 100644
--- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
+++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
-@@ -963,6 +963,9 @@ dw_axi_dma_chan_prep_slave_sg(struct dma_chan *dchan, struct scatterlist *sgl,
+@@ -961,6 +961,9 @@ dw_axi_dma_chan_prep_slave_sg(struct dma
mem = sg_dma_address(sg);
len = sg_dma_len(sg);
num_segments = DIV_ROUND_UP(sg_dma_len(sg), axi_block_len);
segment_len = DIV_ROUND_UP(sg_dma_len(sg), num_segments);
do {
---
-2.54.0
-
drivers/gpu/drm/drm_connector.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
-diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c
-index 272d6254ea47..1084e7d6592a 100644
--- a/drivers/gpu/drm/drm_connector.c
+++ b/drivers/gpu/drm/drm_connector.c
-@@ -3073,10 +3073,15 @@ int drm_connector_set_orientation_from_panel(
+@@ -3073,10 +3073,15 @@ int drm_connector_set_orientation_from_p
{
enum drm_panel_orientation orientation;
return drm_connector_set_panel_orientation(connector, orientation);
}
---
-2.54.0
-
drivers/gpu/drm/bridge/tc358762.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
-diff --git a/drivers/gpu/drm/bridge/tc358762.c b/drivers/gpu/drm/bridge/tc358762.c
-index 68eec9718595..67033ed10dc1 100644
--- a/drivers/gpu/drm/bridge/tc358762.c
+++ b/drivers/gpu/drm/bridge/tc358762.c
@@ -53,6 +53,12 @@
/* SPI Master Registers */
#define SPICMR 0x0450
#define SPITCR 0x0454
-@@ -139,6 +145,15 @@ static int tc358762_init(struct tc358762 *ctx)
+@@ -139,6 +145,15 @@ static int tc358762_init(struct tc358762
tc358762_write(ctx, LCDCTRL, lcdctrl);
tc358762_write(ctx, SYSCTRL, 0x040f);
msleep(100);
tc358762_write(ctx, PPI_STARTPPI, PPI_START_FUNCTION);
---
-2.54.0
-
drivers/gpu/drm/bridge/tc358762.c | 10 ----------
1 file changed, 10 deletions(-)
-diff --git a/drivers/gpu/drm/bridge/tc358762.c b/drivers/gpu/drm/bridge/tc358762.c
-index 67033ed10dc1..382e8d3dc9e2 100644
--- a/drivers/gpu/drm/bridge/tc358762.c
+++ b/drivers/gpu/drm/bridge/tc358762.c
-@@ -202,15 +202,6 @@ static void tc358762_pre_enable(struct drm_bridge *bridge,
+@@ -202,15 +202,6 @@ static void tc358762_pre_enable(struct d
usleep_range(5000, 10000);
}
ret = tc358762_init(ctx);
if (ret < 0)
dev_err(ctx->dev, "error initializing bridge (%d)\n", ret);
-@@ -238,7 +229,6 @@ static void tc358762_bridge_mode_set(struct drm_bridge *bridge,
+@@ -238,7 +229,6 @@ static void tc358762_bridge_mode_set(str
static const struct drm_bridge_funcs tc358762_bridge_funcs = {
.atomic_post_disable = tc358762_post_disable,
.atomic_pre_enable = tc358762_pre_enable,
.atomic_duplicate_state = drm_atomic_helper_bridge_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_bridge_destroy_state,
.atomic_reset = drm_atomic_helper_bridge_reset,
---
-2.54.0
-
drivers/pinctrl/bcm/pinctrl-bcm2835.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/pinctrl/bcm/pinctrl-bcm2835.c b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
-index 0342ea93ef6a..82c7074811ba 100644
--- a/drivers/pinctrl/bcm/pinctrl-bcm2835.c
+++ b/drivers/pinctrl/bcm/pinctrl-bcm2835.c
-@@ -245,7 +245,7 @@ static const char * const irq_type_names[] = {
+@@ -245,7 +245,7 @@ static const char * const irq_type_names
[IRQ_TYPE_LEVEL_LOW] = "level-low",
};
module_param(persist_gpio_outputs, bool, 0444);
MODULE_PARM_DESC(persist_gpio_outputs, "Enable GPIO_OUT persistence when pin is freed");
---
-2.54.0
-
drivers/spi/spi-dw-core.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
-diff --git a/drivers/spi/spi-dw-core.c b/drivers/spi/spi-dw-core.c
-index 2840e8dc7673..0ae104d38e05 100644
--- a/drivers/spi/spi-dw-core.c
+++ b/drivers/spi/spi-dw-core.c
-@@ -100,7 +100,8 @@ void dw_spi_set_cs(struct spi_device *spi, bool enable)
+@@ -100,7 +100,8 @@ void dw_spi_set_cs(struct spi_device *sp
* support active-high or active-low CS level.
*/
if (cs_high == enable)
else
dw_writel(dws, DW_SPI_SER, 0);
}
---
-2.54.0
-
include/linux/backlight.h | 15 +++++++++++++++
2 files changed, 36 insertions(+)
-diff --git a/drivers/video/backlight/backlight.c b/drivers/video/backlight/backlight.c
-index 1e9b7e85d99a..0668ec8fd554 100644
--- a/drivers/video/backlight/backlight.c
+++ b/drivers/video/backlight/backlight.c
-@@ -241,6 +241,15 @@ static ssize_t max_brightness_show(struct device *dev,
+@@ -241,6 +241,15 @@ static ssize_t max_brightness_show(struc
}
static DEVICE_ATTR_RO(max_brightness);
static ssize_t actual_brightness_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
-@@ -319,6 +328,7 @@ static struct attribute *bl_device_attrs[] = {
+@@ -319,6 +328,7 @@ static struct attribute *bl_device_attrs
&dev_attr_max_brightness.attr,
&dev_attr_scale.attr,
&dev_attr_type.attr,
NULL,
};
ATTRIBUTE_GROUPS(bl_device);
-@@ -575,6 +585,17 @@ static int of_parent_match(struct device *dev, const void *data)
+@@ -575,6 +585,17 @@ static int of_parent_match(struct device
return dev->parent && dev->parent->of_node == data;
}
/**
* of_find_backlight_by_node() - find backlight device by device-tree node
* @node: device-tree node of the backlight device
-diff --git a/include/linux/backlight.h b/include/linux/backlight.h
-index 10e626db7eee..8c9d71f12e60 100644
--- a/include/linux/backlight.h
+++ b/include/linux/backlight.h
@@ -236,6 +236,13 @@ struct backlight_properties {
};
/**
-@@ -441,12 +448,20 @@ of_find_backlight_by_node(struct device_node *node)
+@@ -441,12 +448,20 @@ of_find_backlight_by_node(struct device_
#if IS_ENABLED(CONFIG_BACKLIGHT_CLASS_DEVICE)
struct backlight_device *devm_of_find_backlight(struct device *dev);
#endif
#endif
---
-2.54.0
-
drivers/gpu/drm/bridge/panel.c | 6 ++++++
1 file changed, 6 insertions(+)
-diff --git a/drivers/gpu/drm/bridge/panel.c b/drivers/gpu/drm/bridge/panel.c
-index 184a8b7049a7..4c5f961343d9 100644
--- a/drivers/gpu/drm/bridge/panel.c
+++ b/drivers/gpu/drm/bridge/panel.c
@@ -17,6 +17,7 @@
struct panel_bridge {
struct drm_bridge bridge;
-@@ -85,6 +86,11 @@ static int panel_bridge_attach(struct drm_bridge *bridge,
+@@ -85,6 +86,11 @@ static int panel_bridge_attach(struct dr
drm_connector_attach_encoder(&panel_bridge->connector,
encoder);
if (bridge->dev->registered) {
if (connector->funcs->reset)
connector->funcs->reset(connector);
---
-2.54.0
-
.../vc04_services/interface/vchiq_arm/vchiq_bus.h | 10 ++++++++++
1 file changed, 10 insertions(+)
-diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_bus.h b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_bus.h
-index 9de179b39f85..6eff6b0bf599 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_bus.h
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_bus.h
-@@ -37,6 +37,16 @@ static inline struct vchiq_driver *to_vchiq_driver(struct device_driver *d)
+@@ -37,6 +37,16 @@ static inline struct vchiq_driver *to_vc
return container_of(d, struct vchiq_driver, driver);
}
extern const struct bus_type vchiq_bus_type;
struct vchiq_device *
---
-2.54.0
-
drivers/media/platform/raspberrypi/pisp_be/pisp_be.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
-diff --git a/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c b/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
-index d60d92d2ffa1..334590583adc 100644
--- a/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
+++ b/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
@@ -23,6 +23,9 @@
/* Maximum number of config buffers possible */
#define PISP_BE_NUM_CONFIG_BUFFERS VB2_MAX_FRAME
-@@ -1446,7 +1449,8 @@ static int pispbe_init_node(struct pispbe_dev *pispbe, unsigned int id)
+@@ -1446,7 +1449,8 @@ static int pispbe_init_node(struct pispb
goto err_unregister_queue;
}
if (ret) {
dev_err(pispbe->dev,
"Failed to register video %s device node\n",
---
-2.54.0
-
2 files changed, 82 insertions(+)
create mode 100644 Documentation/devicetree/bindings/spi/raspberrypi,rp2040-gpio-bridge.yaml
-diff --git a/Documentation/devicetree/bindings/spi/raspberrypi,rp2040-gpio-bridge.yaml b/Documentation/devicetree/bindings/spi/raspberrypi,rp2040-gpio-bridge.yaml
-new file mode 100644
-index 000000000000..d6af6db169d5
--- /dev/null
+++ b/Documentation/devicetree/bindings/spi/raspberrypi,rp2040-gpio-bridge.yaml
@@ -0,0 +1,77 @@
+
+...
+
-diff --git a/MAINTAINERS b/MAINTAINERS
-index 7ffa031d771d..9ffd5f185645 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -21513,6 +21513,11 @@ L: linux-edac@vger.kernel.org
+@@ -21522,6 +21522,11 @@ L: linux-edac@vger.kernel.org
S: Maintained
F: drivers/ras/amd/fmpm.c
RASPBERRY PI PISP BACK END
M: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
R: Raspberry Pi Kernel Maintenance <kernel-list@raspberrypi.com>
---
-2.54.0
-
4 files changed, 1264 insertions(+)
create mode 100644 drivers/spi/spi-rp2040-gpio-bridge.c
-diff --git a/MAINTAINERS b/MAINTAINERS
-index 9ffd5f185645..bb89a5de128e 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -21517,6 +21517,7 @@ RASPBERRY PI RP2040 GPIO BRIDGE DRIVER
+@@ -21526,6 +21526,7 @@ RASPBERRY PI RP2040 GPIO BRIDGE DRIVER
M: Raspberry Pi Kernel Maintenance <kernel-list@raspberrypi.com>
S: Maintained
F: Documentation/devicetree/bindings/spi/raspberrypi,rp2040-gpio-bridge.yaml
RASPBERRY PI PISP BACK END
M: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
-diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig
-index 1872f9d54a5c..dceeded97cba 100644
--- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig
@@ -932,6 +932,18 @@ config SPI_RB4XX
config SPI_RPCIF
tristate "Renesas RPC-IF SPI driver"
depends on RENESAS_RPCIF
-diff --git a/drivers/spi/Makefile b/drivers/spi/Makefile
-index 1f7c06a3091d..19dd52a0954c 100644
--- a/drivers/spi/Makefile
+++ b/drivers/spi/Makefile
-@@ -126,6 +126,7 @@ obj-$(CONFIG_SPI_ROCKCHIP_SFC) += spi-rockchip-sfc.o
+@@ -126,6 +126,7 @@ obj-$(CONFIG_SPI_ROCKCHIP_SFC) += spi-r
obj-$(CONFIG_SPI_RB4XX) += spi-rb4xx.o
obj-$(CONFIG_MACH_REALTEK_RTL) += spi-realtek-rtl.o
obj-$(CONFIG_SPI_REALTEK_SNAND) += spi-realtek-rtl-snand.o
obj-$(CONFIG_SPI_RPCIF) += spi-rpc-if.o
obj-$(CONFIG_SPI_RSPI) += spi-rspi.o
obj-$(CONFIG_SPI_RZV2H_RSPI) += spi-rzv2h-rspi.o
-diff --git a/drivers/spi/spi-rp2040-gpio-bridge.c b/drivers/spi/spi-rp2040-gpio-bridge.c
-new file mode 100644
-index 000000000000..c09fcecc4089
--- /dev/null
+++ b/drivers/spi/spi-rp2040-gpio-bridge.c
@@ -0,0 +1,1250 @@
+MODULE_DESCRIPTION("Raspberry Pi RP2040 GPIO Bridge");
+MODULE_LICENSE("GPL");
+MODULE_SOFTDEP("pre: md5");
---
-2.54.0
-
drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
-diff --git a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
-index c8a0470d404b..0ab9844e5b91 100644
--- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
+++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
-@@ -1563,6 +1563,7 @@ static int dw_probe(struct platform_device *pdev)
+@@ -1561,6 +1561,7 @@ static int dw_probe(struct platform_devi
struct dw_axi_dma *dw;
struct dw_axi_dma_hcfg *hdata;
struct reset_control *resets;
unsigned int flags;
u32 i;
int ret;
-@@ -1673,9 +1674,21 @@ static int dw_probe(struct platform_device *pdev)
+@@ -1671,9 +1672,21 @@ static int dw_probe(struct platform_devi
* Synopsis DesignWare AxiDMA datasheet mentioned Maximum
* supported blocks is 1024. Device register width is 4 bytes.
* Therefore, set constraint to 1024 * 4.
platform_set_drvdata(pdev, chip);
pm_runtime_enable(chip->dev);
---
-2.54.0
-
.../net/wireless/broadcom/brcm80211/brcmfmac/feature.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
-diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
-index 488364ef8ff2..cb0728ea31ce 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
-@@ -241,7 +241,14 @@ static void brcmf_feat_firmware_capabilities(struct brcmf_if *ifp)
+@@ -241,7 +241,14 @@ static void brcmf_feat_firmware_capabili
brcmf_dbg(INFO, "[ %s]\n", caps);
for (i = 0; i < ARRAY_SIZE(brcmf_fwcap_map); i++) {
id = brcmf_fwcap_map[i].feature;
brcmf_dbg(INFO, "enabling feature: %s\n",
brcmf_feat_names[id]);
---
-2.54.0
-
drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c | 1 +
1 file changed, 1 insertion(+)
-diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
-index cb0728ea31ce..c764684e1aa5 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
-@@ -45,6 +45,7 @@ static const struct brcmf_feat_fwcap brcmf_fwcap_map[] = {
+@@ -45,6 +45,7 @@ static const struct brcmf_feat_fwcap brc
{ BRCMF_FEAT_SAE, "sae " },
{ BRCMF_FEAT_FWAUTH, "idauth" },
{ BRCMF_FEAT_SAE_EXT, "sae_ext" },
};
#ifdef DEBUG
---
-2.54.0
-
.../wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
-diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
-index e2caf34bb147..d32b35ce0978 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
-@@ -2184,6 +2184,11 @@ brcmf_set_key_mgmt(struct net_device *ndev, struct cfg80211_connect_params *sme)
+@@ -2184,6 +2184,11 @@ brcmf_set_key_mgmt(struct net_device *nd
switch (sme->crypto.akm_suites[0]) {
case WLAN_AKM_SUITE_SAE:
val = WPA3_AUTH_SAE_PSK;
break;
case WLAN_AKM_SUITE_FT_OVER_SAE:
val = WPA3_AUTH_SAE_PSK | WPA2_AUTH_FT;
-@@ -2486,7 +2491,8 @@ brcmf_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev,
+@@ -2486,7 +2491,8 @@ brcmf_cfg80211_connect(struct wiphy *wip
if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_FWSUP)) {
if (sme->crypto.psk) {
if (WARN_ON(profile->use_fwsup !=
BRCMF_PROFILE_FWSUP_NONE)) {
err = -EINVAL;
-@@ -2510,7 +2516,8 @@ brcmf_cfg80211_connect(struct wiphy *wiphy, struct net_device *ndev,
+@@ -2510,7 +2516,8 @@ brcmf_cfg80211_connect(struct wiphy *wip
err = brcmf_fil_iovar_int_set(ifp, "sup_wpa", 0);
}
err = brcmf_set_pmk(ifp, sme->crypto.psk,
BRCMF_WSEC_MAX_PSK_LEN);
} else if (profile->use_fwsup == BRCMF_PROFILE_FWSUP_SAE) {
---
-2.54.0
-
drivers/spi/spi-dw-core.c | 27 +++++++++++++++++----------
1 file changed, 17 insertions(+), 10 deletions(-)
-diff --git a/drivers/spi/spi-dw-core.c b/drivers/spi/spi-dw-core.c
-index 0ae104d38e05..75a872285bf2 100644
--- a/drivers/spi/spi-dw-core.c
+++ b/drivers/spi/spi-dw-core.c
-@@ -227,12 +227,17 @@ static irqreturn_t dw_spi_transfer_handler(struct dw_spi *dws)
+@@ -227,12 +227,17 @@ static irqreturn_t dw_spi_transfer_handl
* final stage of the transfer. By doing so we'll get the next IRQ
* right when the leftover incoming data is received.
*/
}
/*
-@@ -241,12 +246,9 @@ static irqreturn_t dw_spi_transfer_handler(struct dw_spi *dws)
+@@ -241,12 +246,9 @@ static irqreturn_t dw_spi_transfer_handl
* have the TXE IRQ flood at the final stage of the transfer.
*/
if (irq_status & DW_SPI_INT_TXEI) {
}
return IRQ_HANDLED;
-@@ -436,6 +438,11 @@ static int dw_spi_transfer_one(struct spi_controller *host,
+@@ -436,6 +438,11 @@ static int dw_spi_transfer_one(struct sp
dws->rx = transfer->rx_buf;
dws->rx_len = dws->tx_len;
/* Ensure the data above is visible for all CPUs */
smp_mb();
---
-2.54.0
-
drivers/spi/spi-dw-dma.c | 43 +++++++++++++++++++++++++--------------
2 files changed, 52 insertions(+), 22 deletions(-)
-diff --git a/drivers/spi/spi-dw-core.c b/drivers/spi/spi-dw-core.c
-index 75a872285bf2..02701a68eff5 100644
--- a/drivers/spi/spi-dw-core.c
+++ b/drivers/spi/spi-dw-core.c
-@@ -369,18 +369,18 @@ static void dw_spi_irq_setup(struct dw_spi *dws)
+@@ -369,18 +369,18 @@ static void dw_spi_irq_setup(struct dw_s
* will be adjusted at the final stage of the IRQ-based SPI transfer
* execution so not to lose the leftover of the incoming data.
*/
}
/*
-@@ -403,13 +403,18 @@ static int dw_spi_poll_transfer(struct dw_spi *dws,
+@@ -403,13 +403,18 @@ static int dw_spi_poll_transfer(struct d
delay.unit = SPI_DELAY_UNIT_SCK;
nbits = dws->n_bytes * BITS_PER_BYTE;
ret = dw_spi_check_status(dws, true);
if (ret)
-@@ -429,6 +434,7 @@ static int dw_spi_transfer_one(struct spi_controller *host,
+@@ -429,6 +434,7 @@ static int dw_spi_transfer_one(struct sp
.dfs = transfer->bits_per_word,
.freq = transfer->speed_hz,
};
int ret;
dws->dma_mapped = 0;
-@@ -443,6 +449,18 @@ static int dw_spi_transfer_one(struct spi_controller *host,
+@@ -443,6 +449,18 @@ static int dw_spi_transfer_one(struct sp
cfg.tmode = DW_SPI_CTRLR0_TMOD_TO;
}
/* Ensure the data above is visible for all CPUs */
smp_mb();
-@@ -979,7 +997,6 @@ int dw_spi_add_host(struct device *dev, struct dw_spi *dws)
+@@ -979,7 +997,6 @@ int dw_spi_add_host(struct device *dev,
dev_warn(dev, "DMA init failed\n");
} else {
host->can_dma = dws->dma_ops->can_dma;
}
}
-diff --git a/drivers/spi/spi-dw-dma.c b/drivers/spi/spi-dw-dma.c
-index b5bed02b7e50..82d752e71dd5 100644
--- a/drivers/spi/spi-dw-dma.c
+++ b/drivers/spi/spi-dw-dma.c
@@ -6,6 +6,7 @@
#include <linux/dma-mapping.h>
#include <linux/dmaengine.h>
#include <linux/irqreturn.h>
-@@ -470,13 +471,12 @@ static int dw_spi_dma_setup(struct dw_spi *dws, struct spi_transfer *xfer)
+@@ -470,13 +471,12 @@ static int dw_spi_dma_setup(struct dw_sp
u16 imr, dma_ctrl;
int ret;
if (xfer->rx_buf) {
ret = dw_spi_dma_config_rx(dws);
-@@ -485,13 +485,17 @@ static int dw_spi_dma_setup(struct dw_spi *dws, struct spi_transfer *xfer)
+@@ -485,13 +485,17 @@ static int dw_spi_dma_setup(struct dw_sp
}
/* Set the DMA handshaking interface */
if (xfer->rx_buf)
imr |= DW_SPI_INT_RXUI | DW_SPI_INT_RXOI;
dw_spi_umask_intr(dws, imr);
-@@ -508,15 +512,16 @@ static int dw_spi_dma_transfer_all(struct dw_spi *dws,
+@@ -508,15 +512,16 @@ static int dw_spi_dma_transfer_all(struc
{
int ret;
if (ret)
goto err_clear_dmac;
-@@ -524,7 +529,15 @@ static int dw_spi_dma_transfer_all(struct dw_spi *dws,
+@@ -524,7 +529,15 @@ static int dw_spi_dma_transfer_all(struc
dma_async_issue_pending(dws->rxchan);
}
ret = dw_spi_dma_wait(dws, xfer->len, xfer->effective_speed_hz);
---
-2.54.0
-
drivers/spi/spi-dw-core.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
-diff --git a/drivers/spi/spi-dw-core.c b/drivers/spi/spi-dw-core.c
-index 02701a68eff5..121ed5f9a8ae 100644
--- a/drivers/spi/spi-dw-core.c
+++ b/drivers/spi/spi-dw-core.c
-@@ -202,7 +202,18 @@ int dw_spi_check_status(struct dw_spi *dws, bool raw)
+@@ -202,7 +202,18 @@ int dw_spi_check_status(struct dw_spi *d
/* Generically handle the erroneous situation */
if (ret) {
if (dws->host->cur_msg)
dws->host->cur_msg->status = ret;
}
---
-2.54.0
-
.../dma/dw-axi-dmac/dw-axi-dmac-platform.c | 38 ++++++++++++-------
1 file changed, 25 insertions(+), 13 deletions(-)
-diff --git a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
-index 0ab9844e5b91..b48ad4970876 100644
--- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
+++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
-@@ -307,6 +307,15 @@ static u32 axi_chan_get_xfer_width(struct axi_dma_chan *chan, dma_addr_t src,
+@@ -307,6 +307,15 @@ static u32 axi_chan_get_xfer_width(struc
return __ffs(src | dst | len | BIT(max_width));
}
static inline const char *axi_chan_name(struct axi_dma_chan *chan)
{
return dma_chan_name(&chan->vc.chan);
-@@ -732,41 +741,41 @@ static int dw_axi_dma_set_hw_desc(struct axi_dma_chan *chan,
+@@ -730,41 +739,41 @@ static int dw_axi_dma_set_hw_desc(struct
size_t axi_block_ts;
size_t block_ts;
u32 ctllo, ctlhi;
DWAXIDMAC_CH_CTL_L_INC << CH_CTL_L_DST_INC_POS |
DWAXIDMAC_CH_CTL_L_NOINC << CH_CTL_L_SRC_INC_POS;
block_ts = len >> reg_width;
-@@ -807,6 +816,12 @@ static int dw_axi_dma_set_hw_desc(struct axi_dma_chan *chan,
+@@ -805,6 +814,12 @@ static int dw_axi_dma_set_hw_desc(struct
set_desc_src_master(hw_desc);
hw_desc->len = len;
return 0;
}
-@@ -823,9 +838,6 @@ static size_t calculate_block_len(struct axi_dma_chan *chan,
+@@ -821,9 +836,6 @@ static size_t calculate_block_len(struct
case DMA_MEM_TO_DEV:
data_width = BIT(chan->chip->dw->hdata->m_data_width);
mem_width = __ffs(data_width | dma_addr | buf_len);
block_len = axi_block_ts << mem_width;
break;
case DMA_DEV_TO_MEM:
---
-2.54.0
-
.../devicetree/bindings/sound/snps,designware-i2s.yaml | 4 ++++
1 file changed, 4 insertions(+)
-diff --git a/Documentation/devicetree/bindings/sound/snps,designware-i2s.yaml b/Documentation/devicetree/bindings/sound/snps,designware-i2s.yaml
-index a48d040b0a4f..6e50851ff70f 100644
--- a/Documentation/devicetree/bindings/sound/snps,designware-i2s.yaml
+++ b/Documentation/devicetree/bindings/sound/snps,designware-i2s.yaml
@@ -69,6 +69,10 @@ properties:
dma-names:
items:
- const: tx
---
-2.54.0
-
drivers/spi/spi-dw.h | 3 ++
2 files changed, 55 insertions(+), 9 deletions(-)
-diff --git a/drivers/spi/spi-dw-core.c b/drivers/spi/spi-dw-core.c
-index 121ed5f9a8ae..33a9c63ce8e2 100644
--- a/drivers/spi/spi-dw-core.c
+++ b/drivers/spi/spi-dw-core.c
-@@ -222,6 +222,32 @@ int dw_spi_check_status(struct dw_spi *dws, bool raw)
+@@ -222,6 +222,32 @@ int dw_spi_check_status(struct dw_spi *d
}
EXPORT_SYMBOL_NS_GPL(dw_spi_check_status, "SPI_DW_CORE");
static irqreturn_t dw_spi_transfer_handler(struct dw_spi *dws)
{
u16 irq_status = dw_readl(dws, DW_SPI_ISR);
-@@ -248,7 +274,22 @@ static irqreturn_t dw_spi_transfer_handler(struct dw_spi *dws)
+@@ -248,7 +274,22 @@ static irqreturn_t dw_spi_transfer_handl
}
} else if (!dws->tx_len) {
dw_spi_mask_intr(dws, DW_SPI_INT_TXEI);
}
/*
-@@ -257,9 +298,13 @@ static irqreturn_t dw_spi_transfer_handler(struct dw_spi *dws)
+@@ -257,9 +298,13 @@ static irqreturn_t dw_spi_transfer_handl
* have the TXE IRQ flood at the final stage of the transfer.
*/
if (irq_status & DW_SPI_INT_TXEI) {
}
return IRQ_HANDLED;
-@@ -430,7 +475,7 @@ static int dw_spi_poll_transfer(struct dw_spi *dws,
+@@ -430,7 +475,7 @@ static int dw_spi_poll_transfer(struct d
ret = dw_spi_check_status(dws, true);
if (ret)
return ret;
return 0;
}
-@@ -650,11 +695,6 @@ static int dw_spi_write_then_read(struct dw_spi *dws, struct spi_device *spi)
+@@ -650,11 +695,6 @@ static int dw_spi_write_then_read(struct
return 0;
}
static int dw_spi_wait_mem_op_done(struct dw_spi *dws)
{
int retry = DW_SPI_WAIT_RETRIES;
-@@ -1011,6 +1051,8 @@ int dw_spi_add_host(struct device *dev, struct dw_spi *dws)
+@@ -1011,6 +1051,8 @@ int dw_spi_add_host(struct device *dev,
}
}
ret = spi_register_controller(host);
if (ret) {
dev_err_probe(dev, ret, "problem registering spi host\n");
-@@ -1036,6 +1078,7 @@ void dw_spi_remove_host(struct dw_spi *dws)
+@@ -1036,6 +1078,7 @@ void dw_spi_remove_host(struct dw_spi *d
{
dw_spi_debugfs_remove(dws);
spi_unregister_controller(dws->host);
if (dws->dma_ops && dws->dma_ops->dma_exit)
-diff --git a/drivers/spi/spi-dw.h b/drivers/spi/spi-dw.h
-index fc267c6437ae..92e54a51fc46 100644
--- a/drivers/spi/spi-dw.h
+++ b/drivers/spi/spi-dw.h
@@ -180,6 +180,9 @@ struct dw_spi {
/* Custom memory operations */
struct spi_controller_mem_ops mem_ops;
---
-2.54.0
-
drivers/spi/spi-dw-core.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/spi/spi-dw-core.c b/drivers/spi/spi-dw-core.c
-index 33a9c63ce8e2..b73aea4c2535 100644
--- a/drivers/spi/spi-dw-core.c
+++ b/drivers/spi/spi-dw-core.c
-@@ -399,7 +399,7 @@ void dw_spi_update_config(struct dw_spi *dws, struct spi_device *spi,
+@@ -399,7 +399,7 @@ void dw_spi_update_config(struct dw_spi
dw_writel(dws, DW_SPI_CTRLR1, cfg->ndf ? cfg->ndf - 1 : 0);
/* Note DW APB SSI clock divider doesn't support odd numbers */
speed_hz = dws->max_freq / clk_div;
if (dws->current_freq != speed_hz) {
---
-2.54.0
-
drivers/hwmon/adt7410.c | 8 ++++++++
1 file changed, 8 insertions(+)
-diff --git a/drivers/hwmon/adt7410.c b/drivers/hwmon/adt7410.c
-index 3bf0e0a0882c..1b52d90815ac 100644
--- a/drivers/hwmon/adt7410.c
+++ b/drivers/hwmon/adt7410.c
-@@ -94,9 +94,17 @@ static const struct i2c_device_id adt7410_ids[] = {
+@@ -94,9 +94,17 @@ static const struct i2c_device_id adt741
};
MODULE_DEVICE_TABLE(i2c, adt7410_ids);
.pm = pm_sleep_ptr(&adt7x10_dev_pm_ops),
},
.probe = adt7410_i2c_probe,
---
-2.54.0
-
drivers/gpio/gpiolib.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
-diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
-index 4cd0ac7e075d..40a882990a86 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
-@@ -118,6 +118,7 @@ static int gpiochip_irqchip_init_valid_mask(struct gpio_chip *gc);
+@@ -118,6 +118,7 @@ static int gpiochip_irqchip_init_valid_m
static void gpiochip_irqchip_free_valid_mask(struct gpio_chip *gc);
static bool gpiolib_initialized;
const char *gpiod_get_label(struct gpio_desc *desc)
{
-@@ -1042,6 +1043,7 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,
+@@ -1042,6 +1043,7 @@ int gpiochip_add_data_with_key(struct gp
unsigned int desc_index;
int base = 0;
int ret;
gdev = kzalloc(sizeof(*gdev), GFP_KERNEL);
if (!gdev)
-@@ -1049,7 +1051,16 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,
+@@ -1049,7 +1051,16 @@ int gpiochip_add_data_with_key(struct gp
gc->gpiodev = gdev;
gpiochip_set_data(gc, data);
if (ret < 0)
goto err_free_gdev;
gdev->id = ret;
---
-2.54.0
-
net/bluetooth/hci_sync.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
-diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c
-index 0299577183a5..243501f8767f 100644
--- a/net/bluetooth/hci_sync.c
+++ b/net/bluetooth/hci_sync.c
-@@ -4965,7 +4965,8 @@ static const struct {
+@@ -4970,7 +4970,8 @@ static const struct {
*/
static int hci_dev_setup_sync(struct hci_dev *hdev)
{
int ret = 0;
bool invalid_bdaddr;
size_t i;
---
-2.54.0
-
drivers/rtc/rtc-pcf8523.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
-diff --git a/drivers/rtc/rtc-pcf8523.c b/drivers/rtc/rtc-pcf8523.c
-index 82e01c735cc8..0125000fa722 100644
--- a/drivers/rtc/rtc-pcf8523.c
+++ b/drivers/rtc/rtc-pcf8523.c
-@@ -108,10 +108,10 @@ static int pcf8523_rtc_read_time(struct device *dev, struct rtc_time *tm)
+@@ -108,10 +108,10 @@ static int pcf8523_rtc_read_time(struct
if (err < 0)
return err;
/*
* If the oscillator was stopped, try to clear the flag. Upon
* power-up the flag is always set, but if we cannot clear it
-@@ -120,10 +120,10 @@ static int pcf8523_rtc_read_time(struct device *dev, struct rtc_time *tm)
+@@ -120,10 +120,10 @@ static int pcf8523_rtc_read_time(struct
* that the clock cannot be assumed to be correct.
*/
if (err < 0)
return err;
-@@ -135,7 +135,7 @@ static int pcf8523_rtc_read_time(struct device *dev, struct rtc_time *tm)
+@@ -135,7 +135,7 @@ static int pcf8523_rtc_read_time(struct
if (value & PCF8523_SECONDS_OS)
return -EAGAIN;
}
tm->tm_sec = bcd2bin(regs[3] & 0x7f);
---
-2.54.0
-
2 files changed, 139 insertions(+)
create mode 100644 Documentation/devicetree/bindings/media/i2c/sony,imx500.yaml
-diff --git a/Documentation/devicetree/bindings/media/i2c/sony,imx500.yaml b/Documentation/devicetree/bindings/media/i2c/sony,imx500.yaml
-new file mode 100644
-index 000000000000..b8538ae6c80f
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/i2c/sony,imx500.yaml
@@ -0,0 +1,132 @@
+
+...
+
-diff --git a/MAINTAINERS b/MAINTAINERS
-index bb89a5de128e..14f7ac5b9956 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -24069,6 +24069,13 @@ F: Documentation/devicetree/bindings/media/i2c/imx378.yaml
+@@ -24078,6 +24078,13 @@ F: Documentation/devicetree/bindings/med
F: Documentation/devicetree/bindings/media/i2c/imx477.yaml
F: drivers/media/i2c/imx477.c
SONY IMX519 SENSOR DRIVER
M: Arducam Kernel Maintenance <info@arducam.com>
L: linux-media@vger.kernel.org
---
-2.54.0
-
5 files changed, 3792 insertions(+)
create mode 100644 drivers/media/i2c/imx500.c
-diff --git a/MAINTAINERS b/MAINTAINERS
-index 14f7ac5b9956..52ede0718fd1 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -24075,6 +24075,7 @@ L: linux-media@vger.kernel.org
+@@ -24084,6 +24084,7 @@ L: linux-media@vger.kernel.org
S: Maintained
T: git git://linuxtv.org/media_tree.git
F: Documentation/devicetree/bindings/media/i2c/sony,imx500.yaml
SONY IMX519 SENSOR DRIVER
M: Arducam Kernel Maintenance <info@arducam.com>
-diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig
-index 1d1916f3b425..6628ee8b3efa 100644
--- a/drivers/media/i2c/Kconfig
+++ b/drivers/media/i2c/Kconfig
@@ -313,6 +313,18 @@ config VIDEO_IMX477
config VIDEO_IMX519
tristate "Arducam IMX519 sensor support"
depends on I2C && VIDEO_DEV
-diff --git a/drivers/media/i2c/Makefile b/drivers/media/i2c/Makefile
-index a25af90da7fe..609242744e62 100644
--- a/drivers/media/i2c/Makefile
+++ b/drivers/media/i2c/Makefile
@@ -65,6 +65,7 @@ obj-$(CONFIG_VIDEO_IMX355) += imx355.o
obj-$(CONFIG_VIDEO_IMX519) += imx519.o
obj-$(CONFIG_VIDEO_IMX708) += imx708.o
obj-$(CONFIG_VIDEO_IR_I2C) += ir-kbd-i2c.o
-diff --git a/drivers/media/i2c/imx500.c b/drivers/media/i2c/imx500.c
-new file mode 100644
-index 000000000000..60f3b0eef621
--- /dev/null
+++ b/drivers/media/i2c/imx500.c
@@ -0,0 +1,3772 @@
+MODULE_AUTHOR("Naushir Patuck <naush@raspberrypi.com>");
+MODULE_DESCRIPTION("Sony IMX500 sensor driver");
+MODULE_LICENSE("GPL");
-diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h
-index ba826ef15a6e..aeca6ffb62a0 100644
--- a/include/uapi/linux/v4l2-controls.h
+++ b/include/uapi/linux/v4l2-controls.h
@@ -232,6 +232,12 @@ enum v4l2_colorfx {
/* MPEG-class control IDs */
/* The MPEG controls are applicable to all codec controls
* and the 'MPEG' part of the define is historical */
---
-2.54.0
-
lib/earlycpio.c | 1 +
1 file changed, 1 insertion(+)
-diff --git a/lib/earlycpio.c b/lib/earlycpio.c
-index d2c37d64fd0c..4b1ce69a6ee5 100644
--- a/lib/earlycpio.c
+++ b/lib/earlycpio.c
-@@ -139,3 +139,4 @@ struct cpio_data find_cpio_data(const char *path, void *data,
+@@ -139,3 +139,4 @@ struct cpio_data find_cpio_data(const ch
quit:
return cd;
}
+EXPORT_SYMBOL_GPL(find_cpio_data);
---
-2.54.0
-
drivers/media/platform/video-mux.c | 7 +++++++
1 file changed, 7 insertions(+)
-diff --git a/drivers/media/platform/video-mux.c b/drivers/media/platform/video-mux.c
-index ddaae5550e46..e265c174b57a 100644
--- a/drivers/media/platform/video-mux.c
+++ b/drivers/media/platform/video-mux.c
-@@ -70,6 +70,7 @@ static int video_mux_link_setup(struct media_entity *entity,
+@@ -70,6 +70,7 @@ static int video_mux_link_setup(struct m
{
struct v4l2_subdev *sd = media_entity_to_v4l2_subdev(entity);
struct v4l2_subdev_state *sd_state;
struct video_mux *vmux = v4l2_subdev_to_video_mux(sd);
u16 source_pad = entity->num_pads - 1;
int ret = 0;
-@@ -110,6 +111,10 @@ static int video_mux_link_setup(struct media_entity *entity,
+@@ -110,6 +111,10 @@ static int video_mux_link_setup(struct m
source_pad);
*source_mbusformat = *v4l2_subdev_state_get_format(sd_state,
vmux->active);
} else {
if (vmux->active != local->index)
goto out;
-@@ -117,6 +122,8 @@ static int video_mux_link_setup(struct media_entity *entity,
+@@ -117,6 +122,8 @@ static int video_mux_link_setup(struct m
dev_dbg(sd->dev, "going inactive\n");
mux_control_deselect(vmux->mux);
vmux->active = -1;
}
out:
---
-2.54.0
-
drivers/dma-buf/heaps/system_heap.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
-diff --git a/drivers/dma-buf/heaps/system_heap.c b/drivers/dma-buf/heaps/system_heap.c
-index bbe7881f1360..e05c7002c0a4 100644
--- a/drivers/dma-buf/heaps/system_heap.c
+++ b/drivers/dma-buf/heaps/system_heap.c
-@@ -49,9 +49,15 @@ static gfp_t order_flags[] = {HIGH_ORDER_GFP, HIGH_ORDER_GFP, LOW_ORDER_GFP};
+@@ -49,9 +49,15 @@ static gfp_t order_flags[] = {HIGH_ORDER
* of order 0 pages can significantly improve the performance of many IOMMUs
* by reducing TLB pressure and time spent updating page tables.
*/
static int dup_sg_table(struct sg_table *from, struct sg_table *to)
{
struct scatterlist *sg, *new_sg;
-@@ -328,7 +334,7 @@ static struct dma_buf *system_heap_allocate(struct dma_heap *heap,
+@@ -328,7 +334,7 @@ static struct dma_buf *system_heap_alloc
struct system_heap_buffer *buffer;
DEFINE_DMA_BUF_EXPORT_INFO(exp_info);
unsigned long size_remaining = len;
struct dma_buf *dmabuf;
struct sg_table *table;
struct scatterlist *sg;
-@@ -423,6 +429,9 @@ static int __init system_heap_create(void)
+@@ -423,6 +429,9 @@ static int __init system_heap_create(voi
if (IS_ERR(sys_heap))
return PTR_ERR(sys_heap);
return 0;
}
module_init(system_heap_create);
---
-2.54.0
-
mm/mempolicy.c | 49 ++++++++++++++++++++++++++++++++++++++++++-------
1 file changed, 42 insertions(+), 7 deletions(-)
-diff --git a/mm/mempolicy.c b/mm/mempolicy.c
-index 94327574fbbb..cbb6a27c3208 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -3316,7 +3316,9 @@ void __init numa_policy_init(void)
}
/*
-@@ -3333,7 +3335,6 @@ static const char * const policy_modes[] =
+@@ -3333,7 +3335,6 @@ static const char * const policy_modes[]
[MPOL_PREFERRED_MANY] = "prefer (many)",
};
/**
* mpol_parse_str - parse string to mempolicy, for tmpfs mpol mount option.
* @str: string containing mempolicy to parse
-@@ -3346,13 +3347,18 @@ static const char * const policy_modes[] =
+@@ -3346,13 +3347,18 @@ static const char * const policy_modes[]
*/
int mpol_parse_str(char *str, struct mempolicy **mpol)
{
if (flags)
*flags++ = '\0'; /* terminate mode string */
-@@ -3432,9 +3438,16 @@ int mpol_parse_str(char *str, struct mempolicy **mpol)
+@@ -3432,9 +3438,16 @@ int mpol_parse_str(char *str, struct mem
goto out;
}
/*
* Save nodes for mpol_to_str() to show the tmpfs mount options
-@@ -3467,7 +3480,29 @@ int mpol_parse_str(char *str, struct mempolicy **mpol)
+@@ -3467,7 +3480,29 @@ out:
*mpol = new;
return err;
}
/**
* mpol_to_str - format a mempolicy structure for printing
---
-2.54.0
-
mm/numa_emulation.c | 6 ++++++
3 files changed, 49 insertions(+)
-diff --git a/include/linux/cma.h b/include/linux/cma.h
-index 2e6931735880..c7ad6cba859b 100644
--- a/include/linux/cma.h
+++ b/include/linux/cma.h
-@@ -70,6 +70,7 @@ static inline bool cma_skip_dt_default_reserved_mem(void)
+@@ -70,6 +70,7 @@ static inline bool cma_skip_dt_default_r
struct folio *cma_alloc_folio(struct cma *cma, int order, gfp_t gfp);
bool cma_free_folio(struct cma *cma, const struct folio *folio);
bool cma_validate_zones(struct cma *cma);
#else
static inline struct folio *cma_alloc_folio(struct cma *cma, int order, gfp_t gfp)
{
-@@ -80,10 +81,16 @@ static inline bool cma_free_folio(struct cma *cma, const struct folio *folio)
+@@ -80,10 +81,16 @@ static inline bool cma_free_folio(struct
{
return false;
}
#endif
#endif
-diff --git a/mm/cma.c b/mm/cma.c
-index 813e6dc7b095..4152536b8f3e 100644
--- a/mm/cma.c
+++ b/mm/cma.c
-@@ -1121,3 +1121,39 @@ void __init *cma_reserve_early(struct cma *cma, unsigned long size)
+@@ -1124,3 +1124,39 @@ void __init *cma_reserve_early(struct cm
return ret;
}
+
+ return cma_for_each_area(check_range, &range);
+}
-diff --git a/mm/numa_emulation.c b/mm/numa_emulation.c
-index 703c8fa05048..58d0769dbdaf 100644
--- a/mm/numa_emulation.c
+++ b/mm/numa_emulation.c
@@ -7,6 +7,7 @@
#include <asm/numa.h>
#include <acpi/acpi_numa.h>
-@@ -52,6 +53,7 @@ static int __init emu_setup_memblk(struct numa_meminfo *ei,
+@@ -52,6 +53,7 @@ static int __init emu_setup_memblk(struc
{
struct numa_memblk *eb = &ei->blk[ei->nr_blks];
struct numa_memblk *pb = &pi->blk[phys_blk];
if (ei->nr_blks >= NR_NODE_MEMBLKS) {
pr_err("NUMA: Too many emulated memblks, failing emulation\n");
-@@ -63,6 +65,10 @@ static int __init emu_setup_memblk(struct numa_meminfo *ei,
+@@ -63,6 +65,10 @@ static int __init emu_setup_memblk(struc
eb->end = pb->start + size;
eb->nid = nid;
if (emu_nid_to_phys[nid] == NUMA_NO_NODE)
emu_nid_to_phys[nid] = pb->nid;
---
-2.54.0
-
mm/mempolicy.c | 6 ++++
3 files changed, 76 insertions(+)
-diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c
-index f1fb27681b0b..2cf2dd3dd6b4 100644
--- a/drivers/iommu/dma-iommu.c
+++ b/drivers/iommu/dma-iommu.c
@@ -21,6 +21,7 @@
#include <linux/memremap.h>
#include <linux/mm.h>
#include <linux/mutex.h>
-@@ -870,11 +871,65 @@ static void __iommu_dma_free_pages(struct page **pages, int count)
+@@ -870,11 +871,65 @@ static void __iommu_dma_free_pages(struc
kvfree(pages);
}
order_mask &= GENMASK(MAX_PAGE_ORDER, 0);
if (!order_mask)
-@@ -890,6 +945,7 @@ static struct page **__iommu_dma_alloc_pages(struct device *dev,
+@@ -890,6 +945,7 @@ static struct page **__iommu_dma_alloc_p
while (count) {
struct page *page = NULL;
unsigned int order_size;
/*
* Higher-order allocations are a convenience rather
-@@ -904,6 +960,10 @@ static struct page **__iommu_dma_alloc_pages(struct device *dev,
+@@ -904,6 +960,10 @@ static struct page **__iommu_dma_alloc_p
order_size = 1U << order;
if (order_mask > order_size)
alloc_flags |= __GFP_NORETRY;
page = alloc_pages_node(nid, alloc_flags, order);
if (!page)
continue;
-diff --git a/include/linux/mempolicy.h b/include/linux/mempolicy.h
-index 65c732d440d2..09d3b3d50b56 100644
--- a/include/linux/mempolicy.h
+++ b/include/linux/mempolicy.h
-@@ -137,6 +137,8 @@ bool vma_policy_mof(struct vm_area_struct *vma);
+@@ -137,6 +137,8 @@ bool vma_policy_mof(struct vm_area_struc
extern void numa_default_policy(void);
extern void numa_policy_init(void);
extern void mpol_rebind_task(struct task_struct *tsk, const nodemask_t *new);
extern void mpol_rebind_mm(struct mm_struct *mm, nodemask_t *new);
-@@ -243,6 +245,14 @@ static inline void numa_policy_init(void)
+@@ -243,6 +245,14 @@ static inline void numa_policy_init(void
{
}
static inline void numa_default_policy(void)
{
}
-diff --git a/mm/mempolicy.c b/mm/mempolicy.c
-index cbb6a27c3208..f92f2ea5e1cf 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
-@@ -2242,6 +2242,12 @@ static nodemask_t *policy_nodemask(gfp_t gfp, struct mempolicy *pol,
+@@ -2242,6 +2242,12 @@ static nodemask_t *policy_nodemask(gfp_t
return nodemask;
}
#ifdef CONFIG_HUGETLBFS
/*
* huge_node(@vma, @addr, @gfp_flags, @mpol)
---
-2.54.0
-
mm/mempolicy.c | 71 ++++++++++++++++++++++++++++++++++
2 files changed, 72 insertions(+)
-diff --git a/include/uapi/linux/mempolicy.h b/include/uapi/linux/mempolicy.h
-index 8fbbe613611a..81a17d24a8e8 100644
--- a/include/uapi/linux/mempolicy.h
+++ b/include/uapi/linux/mempolicy.h
@@ -24,6 +24,7 @@ enum {
MPOL_MAX, /* always last member of enum */
};
-diff --git a/mm/mempolicy.c b/mm/mempolicy.c
-index f92f2ea5e1cf..5636f2c1b026 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -41,6 +41,9 @@
* default Allocate on the local node first, or when on a VMA
* use the process policy. This is what Linux always did
* in a NUMA aware kernel and still does by, ahem, default.
-@@ -598,6 +601,10 @@ static const struct mempolicy_operations mpol_ops[MPOL_MAX] = {
+@@ -598,6 +601,10 @@ static const struct mempolicy_operations
.create = mpol_new_nodemask,
.rebind = mpol_rebind_nodemask,
},
};
static bool migrate_folio_add(struct folio *folio, struct list_head *foliolist,
-@@ -1051,6 +1058,7 @@ static void get_policy_nodemask(struct mempolicy *pol, nodemask_t *nodes)
+@@ -1051,6 +1058,7 @@ static void get_policy_nodemask(struct m
case MPOL_PREFERRED:
case MPOL_PREFERRED_MANY:
case MPOL_WEIGHTED_INTERLEAVE:
*nodes = pol->nodes;
break;
case MPOL_LOCAL:
-@@ -2068,6 +2076,27 @@ static unsigned int interleave_nodes(struct mempolicy *policy)
+@@ -2068,6 +2076,27 @@ static unsigned int interleave_nodes(str
return nid;
}
default:
BUG();
}
-@@ -2194,6 +2226,33 @@ static unsigned int interleave_nid(struct mempolicy *pol, pgoff_t ilx)
+@@ -2194,6 +2226,33 @@ static unsigned int interleave_nid(struc
return nid;
}
/*
* Return a nodemask representing a mempolicy for filtering nodes for
* page allocation, together with preferred node id (or the input node id).
-@@ -2237,6 +2296,9 @@ static nodemask_t *policy_nodemask(gfp_t gfp, struct mempolicy *pol,
+@@ -2237,6 +2296,9 @@ static nodemask_t *policy_nodemask(gfp_t
weighted_interleave_nodes(pol) :
weighted_interleave_nid(pol, ilx);
break;
}
return nodemask;
-@@ -2305,6 +2367,7 @@ bool init_nodemask_of_mempolicy(nodemask_t *mask)
+@@ -2305,6 +2367,7 @@ bool init_nodemask_of_mempolicy(nodemask
case MPOL_BIND:
case MPOL_INTERLEAVE:
case MPOL_WEIGHTED_INTERLEAVE:
*mask = mempolicy->nodes;
break;
-@@ -2803,6 +2866,7 @@ bool __mpol_equal(struct mempolicy *a, struct mempolicy *b)
+@@ -2803,6 +2866,7 @@ bool __mpol_equal(struct mempolicy *a, s
case MPOL_PREFERRED:
case MPOL_PREFERRED_MANY:
case MPOL_WEIGHTED_INTERLEAVE:
return !!nodes_equal(a->nodes, b->nodes);
case MPOL_LOCAL:
return true;
-@@ -2994,6 +3058,10 @@ int mpol_misplaced(struct folio *folio, struct vm_fault *vmf,
+@@ -2994,6 +3058,10 @@ int mpol_misplaced(struct folio *folio,
polnid = zonelist_node_idx(z);
break;
default:
BUG();
}
-@@ -3339,6 +3407,7 @@ static const char * const policy_modes[] =
+@@ -3339,6 +3407,7 @@ static const char * const policy_modes[]
[MPOL_WEIGHTED_INTERLEAVE] = "weighted interleave",
[MPOL_LOCAL] = "local",
[MPOL_PREFERRED_MANY] = "prefer (many)",
};
/**
-@@ -3401,6 +3470,7 @@ int mpol_parse_str(char *str, struct mempolicy **mpol)
+@@ -3401,6 +3470,7 @@ int mpol_parse_str(char *str, struct mem
break;
case MPOL_INTERLEAVE:
case MPOL_WEIGHTED_INTERLEAVE:
/*
* Default to online nodes with memory if no nodelist
*/
-@@ -3545,6 +3615,7 @@ void mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol)
+@@ -3545,6 +3615,7 @@ void mpol_to_str(char *buffer, int maxle
case MPOL_BIND:
case MPOL_INTERLEAVE:
case MPOL_WEIGHTED_INTERLEAVE:
nodes = pol->nodes;
break;
default:
---
-2.54.0
-
mm/mempolicy.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
-diff --git a/mm/mempolicy.c b/mm/mempolicy.c
-index 5636f2c1b026..2dac83914def 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -85,6 +85,7 @@
#include <linux/sched.h>
#include <linux/sched/mm.h>
#include <linux/sched/numa_balancing.h>
-@@ -140,6 +141,7 @@ static struct mempolicy default_policy = {
+@@ -140,6 +141,7 @@ static struct mempolicy default_policy =
.refcnt = ATOMIC_INIT(1), /* never free it */
.mode = MPOL_LOCAL,
};
static struct mempolicy preferred_node_policy[MAX_NUMNODES];
-@@ -1774,12 +1776,21 @@ SYSCALL_DEFINE6(mbind, unsigned long, start, unsigned long, len,
+@@ -1774,12 +1776,21 @@ SYSCALL_DEFINE6(mbind, unsigned long, st
static long kernel_set_mempolicy(int mode, const unsigned long __user *nmask,
unsigned long maxnode)
{
if (err)
return err;
-@@ -3572,6 +3583,7 @@ static int __init setup_numapolicy(char *str)
+@@ -3572,6 +3583,7 @@ static int __init setup_numapolicy(char
default_policy = pol;
mpol_to_str(buf, sizeof(buf), &pol);
pr_info("NUMA default policy overridden to '%s'\n", buf);
} else {
pr_warn("Unable to parse numa_policy=\n");
}
---
-2.54.0
-
mm/vmscan.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/mm/vmscan.c b/mm/vmscan.c
-index 95b1179a14e7..51c6b3b7a0d7 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
-@@ -4305,7 +4305,7 @@ bool lru_gen_look_around(struct page_vma_mapped_walk *pvmw)
+@@ -4305,7 +4305,7 @@ bool lru_gen_look_around(struct page_vma
if (!folio)
continue;
continue;
if (last != folio) {
---
-2.54.0
-
drivers/mmc/core/quirks.h | 18 +++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)
-diff --git a/drivers/mmc/core/quirks.h b/drivers/mmc/core/quirks.h
-index 1ecbbb1cd9e2..d29d213e90a5 100644
--- a/drivers/mmc/core/quirks.h
+++ b/drivers/mmc/core/quirks.h
@@ -18,10 +18,22 @@
0, -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd,
MMC_QUIRK_BROKEN_SD_CACHE, EXT_CSD_REV_ANY),
---
-2.54.0
-
.../devicetree/bindings/usb/snps,dwc3-common.yaml | 10 ++++++++++
1 file changed, 10 insertions(+)
-diff --git a/Documentation/devicetree/bindings/usb/snps,dwc3-common.yaml b/Documentation/devicetree/bindings/usb/snps,dwc3-common.yaml
-index 5be91c5e537d..f44f16abb538 100644
--- a/Documentation/devicetree/bindings/usb/snps,dwc3-common.yaml
+++ b/Documentation/devicetree/bindings/usb/snps,dwc3-common.yaml
@@ -185,6 +185,16 @@ properties:
snps,parkmode-disable-ss-quirk:
description:
When set, disable park mode for all Superspeed bus instances.
---
-2.54.0
-
drivers/usb/dwc3/core.h | 6 ++++++
2 files changed, 16 insertions(+)
-diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
-index d9fd655f00af..c354bd6a7827 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
-@@ -1485,6 +1485,12 @@ static int dwc3_core_init(struct dwc3 *dwc)
+@@ -1485,6 +1485,12 @@ static int dwc3_core_init(struct dwc3 *d
if (dwc->dis_tx_ipgap_linecheck_quirk)
reg |= DWC3_GUCTL1_TX_IPGAP_LINECHECK_DIS;
if (dwc->parkmode_disable_ss_quirk)
reg |= DWC3_GUCTL1_PARKMODE_DISABLE_SS;
-@@ -1869,6 +1875,10 @@ static void dwc3_get_properties(struct dwc3 *dwc)
+@@ -1869,6 +1875,10 @@ static void dwc3_get_properties(struct d
"snps,resume-hs-terminations");
dwc->ulpi_ext_vbus_drv = device_property_read_bool(dev,
"snps,ulpi-ext-vbus-drv");
dwc->parkmode_disable_ss_quirk = device_property_read_bool(dev,
"snps,parkmode-disable-ss-quirk");
dwc->parkmode_disable_hs_quirk = device_property_read_bool(dev,
-diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
-index 438799c1ba5d..d7974c667929 100644
--- a/drivers/usb/dwc3/core.h
+++ b/drivers/usb/dwc3/core.h
@@ -282,6 +282,8 @@
#define DWC3_GUCTL1_PARKMODE_DISABLE_SS BIT(17)
#define DWC3_GUCTL1_PARKMODE_DISABLE_HS BIT(16)
#define DWC3_GUCTL1_PARKMODE_DISABLE_FSLS BIT(15)
-@@ -1154,6 +1156,8 @@ struct dwc3_glue_ops {
+@@ -1152,6 +1154,8 @@ struct dwc3_glue_ops {
* generation after resume from suspend.
* @ulpi_ext_vbus_drv: Set to confiure the upli chip to drives CPEN pin
* VBUS with an external supply.
* @parkmode_disable_ss_quirk: If set, disable park mode feature for all
* Superspeed instances.
* @parkmode_disable_hs_quirk: If set, disable park mode feature for all
-@@ -1403,6 +1407,8 @@ struct dwc3 {
+@@ -1401,6 +1405,8 @@ struct dwc3 {
unsigned dis_tx_ipgap_linecheck_quirk:1;
unsigned resume_hs_terminations:1;
unsigned ulpi_ext_vbus_drv:1;
unsigned parkmode_disable_ss_quirk:1;
unsigned parkmode_disable_hs_quirk:1;
unsigned parkmode_disable_fsls_quirk:1;
---
-2.54.0
-
drivers/usb/host/xhci-ring.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
-diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
-index 98a7111916d3..d9e0a43381eb 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
-@@ -566,6 +566,19 @@ void xhci_ring_ep_doorbell(struct xhci_hcd *xhci,
+@@ -566,6 +566,19 @@ void xhci_ring_ep_doorbell(struct xhci_h
trace_xhci_ring_ep_doorbell(slot_id, DB_VALUE(ep_index, stream_id));
writel(DB_VALUE(ep_index, stream_id), db_addr);
/* flush the write */
readl(db_addr);
---
-2.54.0
-
drivers/iio/humidity/dht11.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
-diff --git a/drivers/iio/humidity/dht11.c b/drivers/iio/humidity/dht11.c
-index 980cb946bbf7..e6579719a512 100644
--- a/drivers/iio/humidity/dht11.c
+++ b/drivers/iio/humidity/dht11.c
-@@ -151,9 +151,9 @@ static int dht11_decode(struct dht11 *dht11, int offset)
+@@ -151,9 +151,9 @@ static int dht11_decode(struct dht11 *dh
dht11->temperature = (((temp_int & 0x7f) << 8) + temp_dec) *
((temp_int & 0x80) ? -100 : 100);
dht11->humidity = ((hum_int << 8) + hum_dec) * 100;
} else {
dev_err(dht11->dev,
"Don't know how to decode data: %d %d %d %d\n",
---
-2.54.0
-
drivers/gpu/drm/drm_connector.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
-diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c
-index 1084e7d6592a..3bfb0e668dd4 100644
--- a/drivers/gpu/drm/drm_connector.c
+++ b/drivers/gpu/drm/drm_connector.c
-@@ -307,7 +307,8 @@ static int drm_connector_init_only(struct drm_device *dev,
+@@ -307,7 +307,8 @@ static int drm_connector_init_only(struc
drm_object_attach_property(&connector->base,
config->non_desktop_property,
drm_object_attach_property(&connector->base,
config->tile_property,
0);
---
-2.54.0
-
include/drm/drm_plane.h | 4 ++--
7 files changed, 8 insertions(+), 8 deletions(-)
-diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
-index cd15cf52f0c9..4e9a84db479b 100644
--- a/drivers/gpu/drm/drm_atomic.c
+++ b/drivers/gpu/drm/drm_atomic.c
-@@ -449,7 +449,7 @@ static void drm_atomic_crtc_print_state(struct drm_printer *p,
+@@ -449,7 +449,7 @@ static void drm_atomic_crtc_print_state(
drm_printf(p, "\tactive_changed=%d\n", state->active_changed);
drm_printf(p, "\tconnectors_changed=%d\n", state->connectors_changed);
drm_printf(p, "\tcolor_mgmt_changed=%d\n", state->color_mgmt_changed);
drm_printf(p, "\tconnector_mask=%x\n", state->connector_mask);
drm_printf(p, "\tencoder_mask=%x\n", state->encoder_mask);
drm_printf(p, "\tmode: " DRM_MODE_FMT "\n", DRM_MODE_ARG(&state->mode));
-diff --git a/drivers/gpu/drm/drm_framebuffer.c b/drivers/gpu/drm/drm_framebuffer.c
-index adbb73f00d68..6d2bea563f06 100644
--- a/drivers/gpu/drm/drm_framebuffer.c
+++ b/drivers/gpu/drm/drm_framebuffer.c
-@@ -1005,7 +1005,7 @@ static int atomic_remove_fb(struct drm_framebuffer *fb)
+@@ -1005,7 +1005,7 @@ static int atomic_remove_fb(struct drm_f
struct drm_connector *conn __maybe_unused;
struct drm_connector_state *conn_state;
int i, ret;
bool disable_crtcs = false;
retry_disable:
-diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c
-index 25f376869b3a..cd0a81df3f33 100644
--- a/drivers/gpu/drm/drm_mode_config.c
+++ b/drivers/gpu/drm/drm_mode_config.c
-@@ -660,7 +660,7 @@ void drm_mode_config_validate(struct drm_device *dev)
+@@ -660,7 +660,7 @@ void drm_mode_config_validate(struct drm
struct drm_encoder *encoder;
struct drm_crtc *crtc;
struct drm_plane *plane;
unsigned int num_primary = 0;
if (!drm_core_check_feature(dev, DRIVER_MODESET))
-diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
-index 4cadea997129..c0b9ac6e5302 100644
--- a/drivers/gpu/drm/drm_plane.c
+++ b/drivers/gpu/drm/drm_plane.c
-@@ -376,7 +376,7 @@ static int __drm_universal_plane_init(struct drm_device *dev,
+@@ -376,7 +376,7 @@ static int __drm_universal_plane_init(st
int ret;
/* plane index is used with 32bit bitmasks */
return -EINVAL;
/*
-diff --git a/drivers/gpu/drm/imx/ipuv3/ipuv3-crtc.c b/drivers/gpu/drm/imx/ipuv3/ipuv3-crtc.c
-index cf7b02b2d52c..801d922cb7da 100644
--- a/drivers/gpu/drm/imx/ipuv3/ipuv3-crtc.c
+++ b/drivers/gpu/drm/imx/ipuv3/ipuv3-crtc.c
-@@ -230,7 +230,7 @@ static int ipu_crtc_atomic_check(struct drm_crtc *crtc,
+@@ -230,7 +230,7 @@ static int ipu_crtc_atomic_check(struct
{
struct drm_crtc_state *crtc_state = drm_atomic_get_new_crtc_state(state,
crtc);
if (crtc_state->active && (primary_plane_mask & crtc_state->plane_mask) == 0)
return -EINVAL;
-diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
-index caa56e039da2..c85b9f6b94f1 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -192,7 +192,7 @@ struct drm_crtc_state {
/**
* @connector_mask: Bitmask of drm_connector_mask(connector) of
-diff --git a/include/drm/drm_plane.h b/include/drm/drm_plane.h
-index 744d6b7bfe9b..8b8cc087d757 100644
--- a/include/drm/drm_plane.h
+++ b/include/drm/drm_plane.h
-@@ -960,9 +960,9 @@ static inline unsigned int drm_plane_index(const struct drm_plane *plane)
+@@ -960,9 +960,9 @@ static inline unsigned int drm_plane_ind
* drm_plane_mask - find the mask of a registered plane
* @plane: plane to find mask for
*/
}
struct drm_plane * drm_plane_from_index(struct drm_device *dev, int idx);
---
-2.54.0
-
include/uapi/drm/drm_mode.h | 1 +
2 files changed, 4 insertions(+)
-diff --git a/drivers/gpu/drm/drm_blend.c b/drivers/gpu/drm/drm_blend.c
-index 6852d73c931c..8ec7ee0745c7 100644
--- a/drivers/gpu/drm/drm_blend.c
+++ b/drivers/gpu/drm/drm_blend.c
-@@ -269,6 +269,8 @@ EXPORT_SYMBOL(drm_plane_create_alpha_property);
+@@ -269,6 +269,8 @@ EXPORT_SYMBOL(drm_plane_create_alpha_pro
* "reflect-x"
* DRM_MODE_REFLECT_Y:
* "reflect-y"
*
* Rotation is the specified amount in degrees in counter clockwise direction,
* the X and Y axis are within the source rectangle, i.e. the X/Y axis before
-@@ -286,6 +288,7 @@ int drm_plane_create_rotation_property(struct drm_plane *plane,
+@@ -286,6 +288,7 @@ int drm_plane_create_rotation_property(s
{ __builtin_ffs(DRM_MODE_ROTATE_270) - 1, "rotate-270" },
{ __builtin_ffs(DRM_MODE_REFLECT_X) - 1, "reflect-x" },
{ __builtin_ffs(DRM_MODE_REFLECT_Y) - 1, "reflect-y" },
};
struct drm_property *prop;
-diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
-index a122bea25593..6a04b6107614 100644
--- a/include/uapi/drm/drm_mode.h
+++ b/include/uapi/drm/drm_mode.h
@@ -203,6 +203,7 @@ extern "C" {
/*
* DRM_MODE_REFLECT_MASK
---
-2.54.0
-
include/drm/drm_connector.h | 11 +++++++
4 files changed, 60 insertions(+), 10 deletions(-)
-diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c
-index 67b330dbf628..142e46e1441d 100644
--- a/drivers/gpu/drm/drm_atomic_uapi.c
+++ b/drivers/gpu/drm/drm_atomic_uapi.c
-@@ -793,6 +793,8 @@ static int drm_atomic_connector_set_property(struct drm_connector *connector,
+@@ -793,6 +793,8 @@ static int drm_atomic_connector_set_prop
state->privacy_screen_sw_state = val;
} else if (property == connector->broadcast_rgb_property) {
state->hdmi.broadcast_rgb = val;
} else if (connector->funcs->atomic_set_property) {
return connector->funcs->atomic_set_property(connector,
state, property, val);
-@@ -884,6 +886,8 @@ drm_atomic_connector_get_property(struct drm_connector *connector,
+@@ -884,6 +886,8 @@ drm_atomic_connector_get_property(struct
*val = state->privacy_screen_sw_state;
} else if (property == connector->broadcast_rgb_property) {
*val = state->hdmi.broadcast_rgb;
} else if (connector->funcs->atomic_get_property) {
return connector->funcs->atomic_get_property(connector,
state, property, val);
-diff --git a/drivers/gpu/drm/drm_blend.c b/drivers/gpu/drm/drm_blend.c
-index 8ec7ee0745c7..e802c9f0331a 100644
--- a/drivers/gpu/drm/drm_blend.c
+++ b/drivers/gpu/drm/drm_blend.c
-@@ -241,6 +241,16 @@ int drm_plane_create_alpha_property(struct drm_plane *plane)
+@@ -241,6 +241,16 @@ int drm_plane_create_alpha_property(stru
}
EXPORT_SYMBOL(drm_plane_create_alpha_property);
/**
* drm_plane_create_rotation_property - create a new rotation property
* @plane: drm plane
-@@ -281,15 +291,6 @@ int drm_plane_create_rotation_property(struct drm_plane *plane,
+@@ -281,15 +291,6 @@ int drm_plane_create_rotation_property(s
unsigned int rotation,
unsigned int supported_rotations)
{
struct drm_property *prop;
WARN_ON((supported_rotations & DRM_MODE_ROTATE_MASK) == 0);
-@@ -297,7 +298,8 @@ int drm_plane_create_rotation_property(struct drm_plane *plane,
+@@ -297,7 +298,8 @@ int drm_plane_create_rotation_property(s
WARN_ON(rotation & ~supported_rotations);
prop = drm_property_create_bitmask(plane->dev, 0, "rotation",
supported_rotations);
if (!prop)
return -ENOMEM;
-@@ -313,6 +315,34 @@ int drm_plane_create_rotation_property(struct drm_plane *plane,
+@@ -313,6 +315,34 @@ int drm_plane_create_rotation_property(s
}
EXPORT_SYMBOL(drm_plane_create_rotation_property);
/**
* drm_rotation_simplify() - Try to simplify the rotation
* @rotation: Rotation to be simplified
-diff --git a/include/drm/drm_blend.h b/include/drm/drm_blend.h
-index 88bdfec3bd88..a84c58f3f13c 100644
--- a/include/drm/drm_blend.h
+++ b/include/drm/drm_blend.h
@@ -34,6 +34,7 @@
static inline bool drm_rotation_90_or_270(unsigned int rotation)
{
-@@ -58,4 +59,8 @@ int drm_atomic_normalize_zpos(struct drm_device *dev,
+@@ -58,4 +59,8 @@ int drm_atomic_normalize_zpos(struct drm
struct drm_atomic_state *state);
int drm_plane_create_blend_mode_property(struct drm_plane *plane,
unsigned int supported_modes);
+ unsigned int rotation,
+ unsigned int supported_rotations);
#endif
-diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
-index 8f34f4b8183d..bd0fe8a8b9ef 100644
--- a/include/drm/drm_connector.h
+++ b/include/drm/drm_connector.h
@@ -1149,6 +1149,11 @@ struct drm_connector_state {
#define DRM_CONNECTOR_POLL_HPD (1 << 0)
#define DRM_CONNECTOR_POLL_CONNECT (1 << 1)
#define DRM_CONNECTOR_POLL_DISCONNECT (1 << 2)
---
-2.54.0
-
drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
-diff --git a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
-index b48ad4970876..522e62932a3a 100644
--- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
+++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
-@@ -771,6 +771,18 @@ static int dw_axi_dma_set_hw_desc(struct axi_dma_chan *chan,
+@@ -769,6 +769,18 @@ static int dw_axi_dma_set_hw_desc(struct
case DMA_DEV_TO_MEM:
reg_burst_msize = axi_dma_encode_msize(chan->config.src_maxburst);
reg_width = __ffs(chan->config.src_addr_width);
device_addr = phys_to_dma(chan->chip->dev, chan->config.src_addr);
ctllo = reg_width << CH_CTL_L_SRC_WIDTH_POS |
mem_width << CH_CTL_L_DST_WIDTH_POS |
---
-2.54.0
-
drivers/spi/spi-dw-dma.c | 2 --
1 file changed, 2 deletions(-)
-diff --git a/drivers/spi/spi-dw-dma.c b/drivers/spi/spi-dw-dma.c
-index 82d752e71dd5..c34c202d617e 100644
--- a/drivers/spi/spi-dw-dma.c
+++ b/drivers/spi/spi-dw-dma.c
-@@ -330,7 +330,6 @@ static int dw_spi_dma_config_tx(struct dw_spi *dws)
+@@ -330,7 +330,6 @@ static int dw_spi_dma_config_tx(struct d
txconf.direction = DMA_MEM_TO_DEV;
txconf.dst_addr = dws->dma_addr;
txconf.dst_maxburst = dws->txburst;
txconf.dst_addr_width = dw_spi_dma_convert_width(dws->n_bytes);
txconf.device_fc = false;
-@@ -431,7 +430,6 @@ static int dw_spi_dma_config_rx(struct dw_spi *dws)
+@@ -431,7 +430,6 @@ static int dw_spi_dma_config_rx(struct d
rxconf.direction = DMA_DEV_TO_MEM;
rxconf.src_addr = dws->dma_addr;
rxconf.src_maxburst = dws->rxburst;
rxconf.src_addr_width = dw_spi_dma_convert_width(dws->n_bytes);
rxconf.device_fc = false;
---
-2.54.0
-
drivers/tty/serial/amba-pl011.c | 1 +
1 file changed, 1 insertion(+)
-diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
-index f0a28e172e54..711aace90483 100644
--- a/drivers/tty/serial/amba-pl011.c
+++ b/drivers/tty/serial/amba-pl011.c
-@@ -475,6 +475,7 @@ static void pl011_dma_probe(struct uart_amba_port *uap)
+@@ -475,6 +475,7 @@ static void pl011_dma_probe(struct uart_
.src_addr = uap->port.mapbase +
pl011_reg_to_offset(uap, REG_DR),
.src_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE,
.direction = DMA_DEV_TO_MEM,
.src_maxburst = uap->fifosize >> 2,
.device_fc = false,
---
-2.54.0
-
drivers/usb/host/xhci.h | 2 ++
2 files changed, 10 insertions(+)
-diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
-index 2d1331b238a5..c7c6e631cfc1 100644
--- a/drivers/usb/host/xhci-mem.c
+++ b/drivers/usb/host/xhci-mem.c
-@@ -738,6 +738,14 @@ void xhci_setup_streams_ep_input_ctx(struct xhci_hcd *xhci,
+@@ -738,6 +738,14 @@ void xhci_setup_streams_ep_input_ctx(str
ep_ctx->ep_info &= cpu_to_le32(~EP_MAXPSTREAMS_MASK);
ep_ctx->ep_info |= cpu_to_le32(EP_MAXPSTREAMS(max_primary_streams)
| EP_HAS_LSA);
ep_ctx->deq = cpu_to_le64(stream_info->ctx_array_dma);
}
-diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
-index e3b4df10aaf4..c170c6aa7f0b 100644
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
@@ -465,6 +465,8 @@ struct xhci_ep_ctx {
/* hosts with LEC=1 use bits 31:24 as ESIT high bits. */
#define CTX_TO_MAX_ESIT_PAYLOAD_HI(p) (((p) >> 24) & 0xff)
---
-2.54.0
-
drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
-diff --git a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
-index 522e62932a3a..204f0b1adaa3 100644
--- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
+++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
-@@ -583,9 +583,11 @@ static void dma_chan_issue_pending(struct dma_chan *dchan)
+@@ -583,9 +583,11 @@ static void dma_chan_issue_pending(struc
{
struct axi_dma_chan *chan = dchan_to_axi_dma_chan(dchan);
unsigned long flags;
axi_chan_start_first_queued(chan);
spin_unlock_irqrestore(&chan->vc.lock, flags);
}
---
-2.54.0
-
3 files changed, 217 insertions(+)
create mode 100644 drivers/mailbox/rp1-mailbox.c
-diff --git a/drivers/mailbox/Kconfig b/drivers/mailbox/Kconfig
-index 29f16f220384..61211365f9b0 100644
--- a/drivers/mailbox/Kconfig
+++ b/drivers/mailbox/Kconfig
@@ -390,4 +390,13 @@ config RISCV_SBI_MPXY_MBOX
+ Say Y here if you want to use the RP1 Mailbox.
+
endif
-diff --git a/drivers/mailbox/Makefile b/drivers/mailbox/Makefile
-index 81820a4f5528..305714eb14b1 100644
--- a/drivers/mailbox/Makefile
+++ b/drivers/mailbox/Makefile
@@ -82,3 +82,5 @@ obj-$(CONFIG_CIX_MBOX) += cix-mailbox.o
obj-$(CONFIG_RISCV_SBI_MPXY_MBOX) += riscv-sbi-mpxy-mbox.o
+
+obj-$(CONFIG_MBOX_RP1) += rp1-mailbox.o
-diff --git a/drivers/mailbox/rp1-mailbox.c b/drivers/mailbox/rp1-mailbox.c
-new file mode 100644
-index 000000000000..0e8af098b62b
--- /dev/null
+++ b/drivers/mailbox/rp1-mailbox.c
@@ -0,0 +1,206 @@
+MODULE_AUTHOR("Phil Elwell <phil@raspberrypi.com>");
+MODULE_DESCRIPTION("RP1 mailbox IPC driver");
+MODULE_LICENSE("GPL v2");
---
-2.54.0
-
create mode 100644 drivers/firmware/rp1-fw.c
create mode 100644 include/linux/rp1-firmware.h
-diff --git a/drivers/firmware/Kconfig b/drivers/firmware/Kconfig
-index bbd2155d8483..37359a5dedc2 100644
--- a/drivers/firmware/Kconfig
+++ b/drivers/firmware/Kconfig
@@ -119,6 +119,15 @@ config RASPBERRYPI_FIRMWARE
config FW_CFG_SYSFS
tristate "QEMU fw_cfg device support in sysfs"
depends on SYSFS && (ARM || ARM64 || PARISC || PPC_PMAC || RISCV || SPARC || X86)
-diff --git a/drivers/firmware/Makefile b/drivers/firmware/Makefile
-index 4ddec2820c96..710214194e46 100644
--- a/drivers/firmware/Makefile
+++ b/drivers/firmware/Makefile
@@ -15,6 +15,7 @@ obj-$(CONFIG_ISCSI_IBFT) += iscsi_ibft.o
obj-$(CONFIG_FW_CFG_SYSFS) += qemu_fw_cfg.o
obj-$(CONFIG_SYSFB) += sysfb.o
obj-$(CONFIG_SYSFB_SIMPLEFB) += sysfb_simplefb.o
-diff --git a/drivers/firmware/rp1-fw.c b/drivers/firmware/rp1-fw.c
-new file mode 100644
-index 000000000000..be33ac6ed218
--- /dev/null
+++ b/drivers/firmware/rp1-fw.c
@@ -0,0 +1,308 @@
+MODULE_AUTHOR("Phil Elwell <phil@raspberrypi.com>");
+MODULE_DESCRIPTION("RP1 firmware driver");
+MODULE_LICENSE("GPL v2");
-diff --git a/include/linux/rp1-firmware.h b/include/linux/rp1-firmware.h
-new file mode 100644
-index 000000000000..19f11d6d79b1
--- /dev/null
+++ b/include/linux/rp1-firmware.h
@@ -0,0 +1,53 @@
+#endif
+
+#endif /* __SOC_RP1_FIRMWARE_H__ */
---
-2.54.0
-
create mode 100644 include/linux/pio_rp1.h
create mode 100644 include/uapi/misc/rp1_pio_if.h
-diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
-index c59f251c7aa4..800d97088226 100644
--- a/drivers/misc/Kconfig
+++ b/drivers/misc/Kconfig
@@ -17,6 +17,14 @@ config BCM2835_SMI
config AD525X_DPOT
tristate "Analog Devices Digital Potentiometers"
depends on (I2C || SPI) && SYSFS
-diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
-index fcbf09dfee39..7a9a76cde760 100644
--- a/drivers/misc/Makefile
+++ b/drivers/misc/Makefile
@@ -20,6 +20,7 @@ obj-$(CONFIG_PHANTOM) += phantom.o
obj-$(CONFIG_SENSORS_BH1770) += bh1770glc.o
obj-$(CONFIG_SENSORS_APDS990X) += apds990x.o
obj-$(CONFIG_ENCLOSURE_SERVICES) += enclosure.o
-diff --git a/drivers/misc/rp1-fw-pio.h b/drivers/misc/rp1-fw-pio.h
-new file mode 100644
-index 000000000000..ba28cba38f84
--- /dev/null
+++ b/drivers/misc/rp1-fw-pio.h
@@ -0,0 +1,56 @@
+};
+
+#endif
-diff --git a/drivers/misc/rp1-pio.c b/drivers/misc/rp1-pio.c
-new file mode 100644
-index 000000000000..105050ca5311
--- /dev/null
+++ b/drivers/misc/rp1-pio.c
@@ -0,0 +1,1400 @@
+MODULE_DESCRIPTION("PIO controller driver for Raspberry Pi RP1");
+MODULE_AUTHOR("Phil Elwell");
+MODULE_LICENSE("GPL");
-diff --git a/include/linux/pio_instructions.h b/include/linux/pio_instructions.h
-new file mode 100644
-index 000000000000..a72934b1ed60
--- /dev/null
+++ b/include/linux/pio_instructions.h
@@ -0,0 +1,481 @@
+#endif
+
+#endif
-diff --git a/include/linux/pio_rp1.h b/include/linux/pio_rp1.h
-new file mode 100644
-index 000000000000..f262fdd9c8f1
--- /dev/null
+++ b/include/linux/pio_rp1.h
@@ -0,0 +1,1019 @@
+}
+
+#endif
-diff --git a/include/uapi/misc/rp1_pio_if.h b/include/uapi/misc/rp1_pio_if.h
-new file mode 100644
-index 000000000000..a9a54d3322ec
--- /dev/null
+++ b/include/uapi/misc/rp1_pio_if.h
@@ -0,0 +1,235 @@
+#define PIO_IOC_GPIO_SET_DRIVE_STRENGTH _IOW(PIO_IOC_MAGIC, 57, struct rp1_gpio_set_args)
+
+#endif
---
-2.54.0
-
3 files changed, 272 insertions(+)
create mode 100644 drivers/pwm/pwm-pio-rp1.c
-diff --git a/drivers/pwm/Kconfig b/drivers/pwm/Kconfig
-index 3a81b1eccbbc..0d7ea100b63f 100644
--- a/drivers/pwm/Kconfig
+++ b/drivers/pwm/Kconfig
@@ -544,6 +544,17 @@ config PWM_PCA9685
config PWM_PXA
tristate "PXA PWM support"
depends on ARCH_PXA || ARCH_MMP || ARCH_SPACEMIT || COMPILE_TEST
-diff --git a/drivers/pwm/Makefile b/drivers/pwm/Makefile
-index 3b3fb66c8b5c..6aa0a576e544 100644
--- a/drivers/pwm/Makefile
+++ b/drivers/pwm/Makefile
@@ -48,6 +48,7 @@ obj-$(CONFIG_PWM_MXS) += pwm-mxs.o
obj-$(CONFIG_PWM_PXA) += pwm-pxa.o
obj-$(CONFIG_PWM_RASPBERRYPI_POE) += pwm-raspberrypi-poe.o
obj-$(CONFIG_PWM_RENESAS_RCAR) += pwm-rcar.o
-diff --git a/drivers/pwm/pwm-pio-rp1.c b/drivers/pwm/pwm-pio-rp1.c
-new file mode 100644
-index 000000000000..4f3d1996ebc8
--- /dev/null
+++ b/drivers/pwm/pwm-pio-rp1.c
@@ -0,0 +1,260 @@
+MODULE_DESCRIPTION("PWM PIO RP1 driver");
+MODULE_AUTHOR("Phil Elwell");
+MODULE_LICENSE("GPL");
---
-2.54.0
-
3 files changed, 518 insertions(+)
create mode 100644 drivers/misc/ws2812-pio-rp1.c
-diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
-index 800d97088226..7567a4ef56c7 100644
--- a/drivers/misc/Kconfig
+++ b/drivers/misc/Kconfig
@@ -25,6 +25,16 @@ config RP1_PIO
config AD525X_DPOT
tristate "Analog Devices Digital Potentiometers"
depends on (I2C || SPI) && SYSFS
-diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
-index 7a9a76cde760..9b9eba1ef245 100644
--- a/drivers/misc/Makefile
+++ b/drivers/misc/Makefile
@@ -21,6 +21,7 @@ obj-$(CONFIG_RPMB) += rpmb-core.o
obj-$(CONFIG_SENSORS_BH1770) += bh1770glc.o
obj-$(CONFIG_SENSORS_APDS990X) += apds990x.o
obj-$(CONFIG_ENCLOSURE_SERVICES) += enclosure.o
-diff --git a/drivers/misc/ws2812-pio-rp1.c b/drivers/misc/ws2812-pio-rp1.c
-new file mode 100644
-index 000000000000..23b7028868aa
--- /dev/null
+++ b/drivers/misc/ws2812-pio-rp1.c
@@ -0,0 +1,507 @@
+MODULE_DESCRIPTION("WS2812 PIO RP1 driver");
+MODULE_AUTHOR("Phil Elwell");
+MODULE_LICENSE("GPL");
---
-2.54.0
-
drivers/gpu/drm/drm_connector.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
-diff --git a/drivers/gpu/drm/display/drm_hdmi_state_helper.c b/drivers/gpu/drm/display/drm_hdmi_state_helper.c
-index a561f124be99..f67484bff8a5 100644
--- a/drivers/gpu/drm/display/drm_hdmi_state_helper.c
+++ b/drivers/gpu/drm/display/drm_hdmi_state_helper.c
-@@ -321,7 +321,7 @@ void __drm_atomic_helper_connector_hdmi_reset(struct drm_connector *connector,
+@@ -321,7 +321,7 @@ void __drm_atomic_helper_connector_hdmi_
unsigned int max_bpc = connector->max_bpc;
new_conn_state->max_bpc = max_bpc;
new_conn_state->hdmi.broadcast_rgb = DRM_HDMI_BROADCAST_RGB_AUTO;
}
EXPORT_SYMBOL(__drm_atomic_helper_connector_hdmi_reset);
-diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c
-index 3bfb0e668dd4..82dae59606fa 100644
--- a/drivers/gpu/drm/drm_connector.c
+++ b/drivers/gpu/drm/drm_connector.c
-@@ -2839,8 +2839,8 @@ int drm_connector_attach_max_bpc_property(struct drm_connector *connector,
+@@ -2839,8 +2839,8 @@ int drm_connector_attach_max_bpc_propert
}
drm_object_attach_property(&connector->base, prop, max);
return 0;
}
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_dsi.c | 64 ++++++++++++++++++++++++-----------
1 file changed, 44 insertions(+), 20 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_dsi.c b/drivers/gpu/drm/vc4/vc4_dsi.c
-index 458e5d987964..698faa9faadf 100644
--- a/drivers/gpu/drm/vc4/vc4_dsi.c
+++ b/drivers/gpu/drm/vc4/vc4_dsi.c
@@ -44,7 +44,6 @@
const char *debugfs_name;
const struct debugfs_reg32 *regs;
-@@ -1107,10 +1111,16 @@ static void vc4_dsi_bridge_pre_enable(struct drm_bridge *bridge,
+@@ -1107,10 +1111,16 @@ static void vc4_dsi_bridge_pre_enable(st
/* Set up DISP1 for transferring long command payloads through
* the pixfifo.
*/
/* Ungate the block. */
if (dsi->variant->port == 0)
-@@ -1200,9 +1210,9 @@ static ssize_t vc4_dsi_host_transfer(struct mipi_dsi_host *host,
+@@ -1200,9 +1210,9 @@ static ssize_t vc4_dsi_host_transfer(str
pix_fifo_len = 0;
} else {
cmd_fifo_len = (packet.payload_length %
}
WARN_ON_ONCE(pix_fifo_len >= DSI_PIX_FIFO_DEPTH);
-@@ -1220,14 +1230,25 @@ static ssize_t vc4_dsi_host_transfer(struct mipi_dsi_host *host,
+@@ -1220,14 +1230,25 @@ static ssize_t vc4_dsi_host_transfer(str
for (i = 0; i < cmd_fifo_len; i++)
DSI_PORT_WRITE(TXPKT_CMD_FIFO, packet.payload[i]);
- for (i = 0; i < pix_fifo_len; i++) {
- const u8 *pix = packet.payload + cmd_fifo_len + i * 4;
--
-- DSI_PORT_WRITE(TXPKT_PIX_FIFO,
-- pix[0] |
-- pix[1] << 8 |
-- pix[2] << 16 |
-- pix[3] << 24);
+ if (dsi->variant->cmd_fifo_width == 4) {
+ for (i = 0; i < pix_fifo_len; i++) {
+ const u8 *pix = packet.payload + cmd_fifo_len + i * 4;
+ } else {
+ for (i = 0; i < pix_fifo_len; i++) {
+ const u8 *pix = packet.payload + cmd_fifo_len + i * 3;
-+
+
+- DSI_PORT_WRITE(TXPKT_PIX_FIFO,
+- pix[0] |
+- pix[1] << 8 |
+- pix[2] << 16 |
+- pix[3] << 24);
+ DSI_PORT_WRITE(TXPKT_PIX_FIFO,
+ pix[2] |
+ pix[1] << 8 |
}
if (msg->flags & MIPI_DSI_MSG_USE_LPM)
-@@ -1435,6 +1456,7 @@ static const struct drm_encoder_funcs vc4_dsi_encoder_funcs = {
+@@ -1435,6 +1456,7 @@ static const struct drm_encoder_funcs vc
static const struct vc4_dsi_variant bcm2711_dsi1_variant = {
.port = 1,
.debugfs_name = "dsi1_regs",
.regs = dsi1_regs,
.nregs = ARRAY_SIZE(dsi1_regs),
-@@ -1442,6 +1464,7 @@ static const struct vc4_dsi_variant bcm2711_dsi1_variant = {
+@@ -1442,6 +1464,7 @@ static const struct vc4_dsi_variant bcm2
static const struct vc4_dsi_variant bcm2835_dsi0_variant = {
.port = 0,
.debugfs_name = "dsi0_regs",
.regs = dsi0_regs,
.nregs = ARRAY_SIZE(dsi0_regs),
-@@ -1449,6 +1472,7 @@ static const struct vc4_dsi_variant bcm2835_dsi0_variant = {
+@@ -1449,6 +1472,7 @@ static const struct vc4_dsi_variant bcm2
static const struct vc4_dsi_variant bcm2835_dsi1_variant = {
.port = 1,
.broken_axi_workaround = true,
.debugfs_name = "dsi1_regs",
.regs = dsi1_regs,
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_hvs.c | 369 +++++++++++++++++++++++++++++++--
3 files changed, 376 insertions(+), 27 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c
-index 2a48038abe7a..4ffbfb5b1cab 100644
--- a/drivers/gpu/drm/vc4/vc4_crtc.c
+++ b/drivers/gpu/drm/vc4/vc4_crtc.c
-@@ -640,6 +640,8 @@ static void vc4_crtc_atomic_disable(struct drm_crtc *crtc,
+@@ -640,6 +640,8 @@ static void vc4_crtc_atomic_disable(stru
vc4_crtc_disable(crtc, encoder, state, old_vc4_state->assigned_channel);
/*
* Make sure we issue a vblank event after disabling the CRTC if
* someone was waiting it.
-@@ -1123,14 +1125,8 @@ void vc4_crtc_destroy_state(struct drm_crtc *crtc,
+@@ -1123,14 +1125,8 @@ void vc4_crtc_destroy_state(struct drm_c
struct vc4_dev *vc4 = to_vc4_dev(crtc->dev);
struct vc4_crtc_state *vc4_state = to_vc4_crtc_state(state);
drm_atomic_helper_crtc_destroy_state(crtc, state);
}
-diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h
-index 221d8e01d539..c1662bc1393f 100644
--- a/drivers/gpu/drm/vc4/vc4_drv.h
+++ b/drivers/gpu/drm/vc4/vc4_drv.h
@@ -322,6 +322,11 @@ struct vc4_hvs {
#define HVS_UBM_WORD_SIZE 256
struct vc4_hvs_state {
-@@ -616,10 +623,17 @@ vc4_crtc_to_vc4_pv_data(const struct vc4_crtc *crtc)
+@@ -616,10 +623,17 @@ vc4_crtc_to_vc4_pv_data(const struct vc4
struct drm_encoder *vc4_get_crtc_encoder(struct drm_crtc *crtc,
struct drm_crtc_state *state);
bool txp_armed;
unsigned int assigned_channel;
-@@ -1028,6 +1042,8 @@ struct vc4_hvs *__vc4_hvs_alloc(struct vc4_dev *vc4,
+@@ -1028,6 +1042,8 @@ struct vc4_hvs *__vc4_hvs_alloc(struct v
void vc4_hvs_stop_channel(struct vc4_hvs *hvs, unsigned int output);
int vc4_hvs_get_fifo_from_output(struct vc4_hvs *hvs, unsigned int output);
u8 vc4_hvs_get_fifo_frame_count(struct vc4_hvs *hvs, unsigned int fifo);
int vc4_hvs_atomic_check(struct drm_crtc *crtc, struct drm_atomic_state *state);
void vc4_hvs_atomic_begin(struct drm_crtc *crtc, struct drm_atomic_state *state);
void vc4_hvs_atomic_enable(struct drm_crtc *crtc, struct drm_atomic_state *state);
-diff --git a/drivers/gpu/drm/vc4/vc4_hvs.c b/drivers/gpu/drm/vc4/vc4_hvs.c
-index 4811d794001f..82b3fd71035c 100644
--- a/drivers/gpu/drm/vc4/vc4_hvs.c
+++ b/drivers/gpu/drm/vc4/vc4_hvs.c
-@@ -470,6 +470,273 @@ static void vc4_hvs_update_gamma_lut(struct vc4_hvs *hvs,
+@@ -470,6 +470,273 @@ static void vc4_hvs_update_gamma_lut(str
vc4_hvs_lut_load(hvs, vc4_crtc);
}
u8 vc4_hvs_get_fifo_frame_count(struct vc4_hvs *hvs, unsigned int fifo)
{
struct vc4_dev *vc4 = hvs->vc4;
-@@ -790,13 +1057,12 @@ int vc4_hvs_atomic_check(struct drm_crtc *crtc, struct drm_atomic_state *state)
+@@ -790,13 +1057,12 @@ int vc4_hvs_atomic_check(struct drm_crtc
{
struct drm_crtc_state *crtc_state = drm_atomic_get_new_crtc_state(state, crtc);
struct vc4_crtc_state *vc4_state = to_vc4_crtc_state(crtc_state);
/* The pixelvalve can only feed one encoder (and encoders are
* 1:1 with connectors.)
-@@ -819,14 +1085,11 @@ int vc4_hvs_atomic_check(struct drm_crtc *crtc, struct drm_atomic_state *state)
+@@ -819,14 +1085,11 @@ int vc4_hvs_atomic_check(struct drm_crtc
drm_dbg_driver(dev, "[CRTC:%d:%s] Allocating DLIST block with size: %u\n",
crtc->base.id, crtc->name, dlist_count);
return 0;
}
-@@ -842,13 +1105,17 @@ static void vc4_hvs_install_dlist(struct drm_crtc *crtc)
+@@ -842,13 +1105,17 @@ static void vc4_hvs_install_dlist(struct
if (!drm_dev_enter(dev, &idx))
return;
drm_dev_exit(idx);
}
-@@ -875,8 +1142,10 @@ static void vc4_hvs_update_dlist(struct drm_crtc *crtc)
+@@ -875,8 +1142,10 @@ static void vc4_hvs_update_dlist(struct
spin_unlock_irqrestore(&dev->event_lock, flags);
}
spin_unlock_irqrestore(&vc4_crtc->irq_lock, flags);
}
-@@ -937,8 +1206,7 @@ void vc4_hvs_atomic_flush(struct drm_crtc *crtc,
+@@ -937,8 +1206,7 @@ void vc4_hvs_atomic_flush(struct drm_crt
struct vc4_plane_state *vc4_plane_state;
bool debug_dump_regs = false;
bool enable_bg_fill = true;
unsigned int zpos = 0;
bool found = false;
int idx;
-@@ -958,6 +1226,9 @@ void vc4_hvs_atomic_flush(struct drm_crtc *crtc,
+@@ -958,6 +1226,9 @@ void vc4_hvs_atomic_flush(struct drm_crt
vc4_hvs_dump_state(hvs);
}
/* Copy all the active planes' dlist contents to the hardware dlist. */
do {
found = false;
-@@ -991,7 +1262,8 @@ void vc4_hvs_atomic_flush(struct drm_crtc *crtc,
+@@ -991,7 +1262,8 @@ void vc4_hvs_atomic_flush(struct drm_crt
writel(SCALER_CTL0_END, dlist_next);
dlist_next++;
if (vc4->gen >= VC4_GEN_6_C) {
/* This sets a black background color fill, as is the case
-@@ -1147,6 +1419,11 @@ static irqreturn_t vc4_hvs_irq_handler(int irq, void *data)
+@@ -1147,6 +1419,11 @@ static irqreturn_t vc4_hvs_irq_handler(i
irqret = IRQ_HANDLED;
}
}
/* Clear every per-channel interrupt flag. */
-@@ -1157,6 +1434,27 @@ static irqreturn_t vc4_hvs_irq_handler(int irq, void *data)
+@@ -1157,6 +1434,27 @@ static irqreturn_t vc4_hvs_irq_handler(i
return irqret;
}
int vc4_hvs_debugfs_init(struct drm_minor *minor)
{
struct drm_device *drm = minor->dev;
-@@ -1248,6 +1546,18 @@ struct vc4_hvs *__vc4_hvs_alloc(struct vc4_dev *vc4,
+@@ -1248,6 +1546,18 @@ struct vc4_hvs *__vc4_hvs_alloc(struct v
hvs->dlist_mem_size = dlist_size;
/* Set up the HVS LBM memory manager. We could have some more
* complicated data structure that allowed reuse of LBM areas
* between planes when they don't overlap on the screen, but
-@@ -1743,6 +2053,33 @@ static int vc4_hvs_bind(struct device *dev, struct device *master, void *data)
+@@ -1743,6 +2053,33 @@ static int vc4_hvs_bind(struct device *d
vc4_hvs_irq_handler, 0, "vc4 hvs", drm);
if (ret)
return ret;
}
return 0;
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_hvs.c | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
-diff --git a/drivers/gpu/drm/vc4/vc4_hvs.c b/drivers/gpu/drm/vc4/vc4_hvs.c
-index 82b3fd71035c..ea0db6e2f0f5 100644
--- a/drivers/gpu/drm/vc4/vc4_hvs.c
+++ b/drivers/gpu/drm/vc4/vc4_hvs.c
-@@ -349,6 +349,36 @@ static int vc6_hvs_debugfs_upm_allocs(struct seq_file *m, void *data)
+@@ -349,6 +349,36 @@ static int vc6_hvs_debugfs_upm_allocs(st
return 0;
}
/* The filter kernel is composed of dwords each containing 3 9-bit
* signed integers packed next to each other.
*/
-@@ -1478,6 +1508,8 @@ int vc4_hvs_debugfs_init(struct drm_minor *minor)
+@@ -1478,6 +1508,8 @@ int vc4_hvs_debugfs_init(struct drm_mino
drm_debugfs_add_file(drm, "hvs_underrun", vc4_hvs_debugfs_underrun, NULL);
vc4_debugfs_add_regset32(drm, "hvs_regs", &hvs->regset);
return 0;
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_kms.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c
-index 4ffbfb5b1cab..1e9e36dd90e1 100644
--- a/drivers/gpu/drm/vc4/vc4_crtc.c
+++ b/drivers/gpu/drm/vc4/vc4_crtc.c
-@@ -852,7 +852,7 @@ static void vc4_crtc_handle_page_flip(struct vc4_crtc *vc4_crtc)
+@@ -852,7 +852,7 @@ static void vc4_crtc_handle_page_flip(st
* the CRTC and encoder already reconfigured, leading to
* underruns. This can be seen when reconfiguring the CRTC.
*/
vc4_hvs_unmask_underrun(hvs, chan);
}
spin_unlock(&vc4_crtc->irq_lock);
-diff --git a/drivers/gpu/drm/vc4/vc4_kms.c b/drivers/gpu/drm/vc4/vc4_kms.c
-index 8f983edb81ff..31cefc1adcd6 100644
--- a/drivers/gpu/drm/vc4/vc4_kms.c
+++ b/drivers/gpu/drm/vc4/vc4_kms.c
-@@ -391,7 +391,7 @@ static void vc4_atomic_commit_tail(struct drm_atomic_state *state)
+@@ -391,7 +391,7 @@ static void vc4_atomic_commit_tail(struc
if (WARN_ON(IS_ERR(new_hvs_state)))
return;
struct drm_crtc_state *new_crtc_state;
struct drm_crtc *crtc;
int i;
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_drv.c | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_drv.c b/drivers/gpu/drm/vc4/vc4_drv.c
-index c7cb1e3a6434..d8e7090049d4 100644
--- a/drivers/gpu/drm/vc4/vc4_drv.c
+++ b/drivers/gpu/drm/vc4/vc4_drv.c
@@ -30,6 +30,7 @@
#include <drm/clients/drm_client_setup.h>
#include <drm/drm_atomic_helper.h>
-@@ -176,6 +177,19 @@ static void vc4_close(struct drm_device *dev, struct drm_file *file)
+@@ -176,6 +177,19 @@ static void vc4_close(struct drm_device
kfree(vc4file);
}
DEFINE_DRM_GEM_FOPS(vc4_drm_fops);
static const struct drm_ioctl_desc vc4_drm_ioctls[] = {
-@@ -212,8 +226,9 @@ const struct drm_driver vc4_drm_driver = {
+@@ -212,8 +226,9 @@ const struct drm_driver vc4_drm_driver =
.gem_create_object = vc4_create_object,
.ioctls = vc4_drm_ioctls,
.num_ioctls = ARRAY_SIZE(vc4_drm_ioctls),
-@@ -235,8 +250,9 @@ const struct drm_driver vc5_drm_driver = {
+@@ -235,8 +250,9 @@ const struct drm_driver vc5_drm_driver =
.debugfs_init = vc4_debugfs_init,
#endif
.fops = &vc4_drm_fops,
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_drv.h | 1 +
2 files changed, 12 insertions(+), 1 deletion(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c
-index 1e9e36dd90e1..093631e84bc1 100644
--- a/drivers/gpu/drm/vc4/vc4_crtc.c
+++ b/drivers/gpu/drm/vc4/vc4_crtc.c
-@@ -811,12 +811,15 @@ static void vc4_disable_vblank(struct drm_crtc *crtc)
+@@ -811,12 +811,15 @@ static void vc4_disable_vblank(struct dr
{
struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc);
struct drm_device *dev = crtc->dev;
drm_dev_exit(idx);
}
-@@ -861,7 +864,14 @@ static void vc4_crtc_handle_page_flip(struct vc4_crtc *vc4_crtc)
+@@ -861,7 +864,14 @@ static void vc4_crtc_handle_page_flip(st
void vc4_crtc_handle_vblank(struct vc4_crtc *crtc)
{
drm_crtc_handle_vblank(&crtc->base);
vc4_crtc_handle_page_flip(crtc);
}
-diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h
-index c1662bc1393f..0ea174bfbeb5 100644
--- a/drivers/gpu/drm/vc4/vc4_drv.h
+++ b/drivers/gpu/drm/vc4/vc4_drv.h
@@ -491,6 +491,7 @@ struct vc4_encoder {
};
#define to_vc4_encoder(_encoder) \
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_dsi.c | 30 +++++++++++++++---------------
1 file changed, 15 insertions(+), 15 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_dsi.c b/drivers/gpu/drm/vc4/vc4_dsi.c
-index 698faa9faadf..beb71f7d7d78 100644
--- a/drivers/gpu/drm/vc4/vc4_dsi.c
+++ b/drivers/gpu/drm/vc4/vc4_dsi.c
-@@ -928,6 +928,21 @@ static void vc4_dsi_bridge_pre_enable(struct drm_bridge *bridge,
+@@ -928,6 +928,21 @@ static void vc4_dsi_bridge_pre_enable(st
"Failed to set phy clock to %ld: %d\n", phy_clock, ret);
}
/* Reset the DSI and all its fifos. */
DSI_PORT_WRITE(CTRL,
DSI_CTRL_SOFT_RESET_CFG |
-@@ -986,21 +1001,6 @@ static void vc4_dsi_bridge_pre_enable(struct drm_bridge *bridge,
+@@ -986,21 +1001,6 @@ static void vc4_dsi_bridge_pre_enable(st
mdelay(1);
}
/* Yes, we set the DSI0P/DSI1P pixel clock to the byte rate,
* not the pixel clock rate. DSIxP take from the APHY's byte,
* DDR2, or DDR4 clock (we use byte) and feed into the PV at
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_dsi.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
-diff --git a/drivers/gpu/drm/vc4/vc4_dsi.c b/drivers/gpu/drm/vc4/vc4_dsi.c
-index beb71f7d7d78..69767a8fb925 100644
--- a/drivers/gpu/drm/vc4/vc4_dsi.c
+++ b/drivers/gpu/drm/vc4/vc4_dsi.c
@@ -361,6 +361,16 @@
#define DSI0_PHY_AFEC1 0x68
# define DSI0_PHY_AFEC1_IDR_DLANE1_MASK VC4_MASK(10, 8)
# define DSI0_PHY_AFEC1_IDR_DLANE1_SHIFT 8
-@@ -810,6 +820,16 @@ static void vc4_dsi_bridge_disable(struct drm_bridge *bridge,
+@@ -810,6 +820,16 @@ static void vc4_dsi_bridge_disable(struc
disp0_ctrl = DSI_PORT_READ(DISP0_CTRL);
disp0_ctrl &= ~DSI_DISP0_ENABLE;
DSI_PORT_WRITE(DISP0_CTRL, disp0_ctrl);
}
static void vc4_dsi_bridge_post_disable(struct drm_bridge *bridge,
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_dsi.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_dsi.c b/drivers/gpu/drm/vc4/vc4_dsi.c
-index 69767a8fb925..868752c8c115 100644
--- a/drivers/gpu/drm/vc4/vc4_dsi.c
+++ b/drivers/gpu/drm/vc4/vc4_dsi.c
@@ -411,7 +411,8 @@
DSI0_CTRL_CLR_PBCF | \
DSI0_CTRL_CLR_CPBCF | \
DSI0_CTRL_CLR_PDF | \
-@@ -963,12 +964,17 @@ static void vc4_dsi_bridge_pre_enable(struct drm_bridge *bridge,
+@@ -963,12 +964,17 @@ static void vc4_dsi_bridge_pre_enable(st
hs_clock = clk_get_rate(dsi->pll_phy_clock);
DSI_CTRL_HSDT_EOT_DISABLE |
DSI_CTRL_RX_LPDT_EOT_DISABLE);
-@@ -1142,12 +1148,6 @@ static void vc4_dsi_bridge_pre_enable(struct drm_bridge *bridge,
+@@ -1142,12 +1148,6 @@ static void vc4_dsi_bridge_pre_enable(st
DSI_DISP1_PFORMAT) |
DSI_DISP1_ENABLE);
/* Bring AFE out of reset. */
DSI_PORT_WRITE(PHY_AFEC0,
DSI_PORT_READ(PHY_AFEC0) &
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_dsi.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
-diff --git a/drivers/gpu/drm/vc4/vc4_dsi.c b/drivers/gpu/drm/vc4/vc4_dsi.c
-index 868752c8c115..a1f803770b61 100644
--- a/drivers/gpu/drm/vc4/vc4_dsi.c
+++ b/drivers/gpu/drm/vc4/vc4_dsi.c
-@@ -1460,6 +1460,15 @@ static const struct drm_bridge_funcs vc4_dsi_bridge_funcs = {
+@@ -1460,6 +1460,15 @@ static const struct drm_bridge_funcs vc4
.mode_fixup = vc4_dsi_bridge_mode_fixup,
};
static int vc4_dsi_late_register(struct drm_encoder *encoder)
{
struct drm_device *drm = encoder->dev;
-@@ -1690,6 +1699,9 @@ static int vc4_dsi_bind(struct device *dev, struct device *master, void *data)
+@@ -1690,6 +1699,9 @@ static int vc4_dsi_bind(struct device *d
dsi->encoder.type = dsi->variant->port ?
VC4_ENCODER_TYPE_DSI1 : VC4_ENCODER_TYPE_DSI0;
dsi->regs = vc4_ioremap_regs(pdev, 0);
if (IS_ERR(dsi->regs))
return PTR_ERR(dsi->regs);
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_dsi.c | 22 +++++++++++++++++++---
1 file changed, 19 insertions(+), 3 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_dsi.c b/drivers/gpu/drm/vc4/vc4_dsi.c
-index a1f803770b61..36fcd4ab6caf 100644
--- a/drivers/gpu/drm/vc4/vc4_dsi.c
+++ b/drivers/gpu/drm/vc4/vc4_dsi.c
-@@ -869,6 +869,7 @@ static bool vc4_dsi_bridge_mode_fixup(struct drm_bridge *bridge,
+@@ -869,6 +869,7 @@ static bool vc4_dsi_bridge_mode_fixup(st
unsigned long pixel_clock_hz = mode->clock * 1000;
unsigned long pll_clock = pixel_clock_hz * dsi->divider;
int divider;
/* Find what divider gets us a faster clock than the requested
* pixel clock.
-@@ -885,12 +886,27 @@ static bool vc4_dsi_bridge_mode_fixup(struct drm_bridge *bridge,
+@@ -885,12 +886,27 @@ static bool vc4_dsi_bridge_mode_fixup(st
pixel_clock_hz = pll_clock / dsi->divider;
adjusted_mode->clock = pixel_clock_hz / 1000;
return true;
}
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_dsi.c | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_dsi.c b/drivers/gpu/drm/vc4/vc4_dsi.c
-index 36fcd4ab6caf..c7d92cf247cb 100644
--- a/drivers/gpu/drm/vc4/vc4_dsi.c
+++ b/drivers/gpu/drm/vc4/vc4_dsi.c
-@@ -821,6 +821,13 @@ static void vc4_dsi_bridge_disable(struct drm_bridge *bridge,
+@@ -821,6 +821,13 @@ static void vc4_dsi_bridge_disable(struc
disp0_ctrl = DSI_PORT_READ(DISP0_CTRL);
disp0_ctrl &= ~DSI_DISP0_ENABLE;
DSI_PORT_WRITE(DISP0_CTRL, disp0_ctrl);
/* Reset the DSI and all its fifos. */
DSI_PORT_WRITE(CTRL, DSI_CTRL_SOFT_RESET_CFG |
-@@ -831,14 +838,6 @@ static void vc4_dsi_bridge_disable(struct drm_bridge *bridge,
+@@ -831,14 +838,6 @@ static void vc4_dsi_bridge_disable(struc
DSI_PORT_BIT(PHY_AFEC0_PD) |
DSI_PORT_BIT(AFEC0_PD_ALL_LANES));
clk_disable_unprepare(dsi->pll_phy_clock);
clk_disable_unprepare(dsi->escape_clock);
clk_disable_unprepare(dsi->pixel_clock);
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_dsi.c | 54 +++++++++++++++++++++++++++++------
1 file changed, 46 insertions(+), 8 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_dsi.c b/drivers/gpu/drm/vc4/vc4_dsi.c
-index c7d92cf247cb..94eece45a049 100644
--- a/drivers/gpu/drm/vc4/vc4_dsi.c
+++ b/drivers/gpu/drm/vc4/vc4_dsi.c
@@ -289,6 +289,8 @@
#define DSI0_HSTX_TO_CNT 0x30
#define DSI0_LPRX_TO_CNT 0x34
#define DSI0_TA_TO_CNT 0x38
-@@ -1213,10 +1215,9 @@ static int vc4_dsi_bridge_attach(struct drm_bridge *bridge,
+@@ -1213,10 +1215,9 @@ static int vc4_dsi_bridge_attach(struct
&dsi->bridge, flags);
}
struct drm_device *drm = dsi->bridge.dev;
struct mipi_dsi_packet packet;
u32 pkth = 0, pktc = 0;
-@@ -1337,10 +1338,12 @@ static ssize_t vc4_dsi_host_transfer(struct mipi_dsi_host *host,
+@@ -1337,10 +1338,12 @@ static ssize_t vc4_dsi_host_transfer(str
DSI_PORT_WRITE(TXPKT1C, pktc);
if (!wait_for_completion_timeout(&dsi->xfer_completion,
ret = -ETIMEDOUT;
} else {
ret = dsi->xfer_result;
-@@ -1383,7 +1386,8 @@ static ssize_t vc4_dsi_host_transfer(struct mipi_dsi_host *host,
+@@ -1383,7 +1386,8 @@ static ssize_t vc4_dsi_host_transfer(str
return ret;
reset_fifo_and_return:
DSI_PORT_WRITE(TXPKT1C, DSI_PORT_READ(TXPKT1C) & ~DSI_TXPKT1C_CMD_EN);
udelay(1);
-@@ -1396,6 +1400,40 @@ static ssize_t vc4_dsi_host_transfer(struct mipi_dsi_host *host,
+@@ -1396,6 +1400,40 @@ reset_fifo_and_return:
return ret;
}
static const struct component_ops vc4_dsi_ops;
static int vc4_dsi_host_attach(struct mipi_dsi_host *host,
struct mipi_dsi_device *device)
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_vec.c | 107 +++++++++++++++++++++++++---------
1 file changed, 78 insertions(+), 29 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_vec.c b/drivers/gpu/drm/vc4/vc4_vec.c
-index 67458944a2e7..723bfa0e4e3e 100644
--- a/drivers/gpu/drm/vc4/vc4_vec.c
+++ b/drivers/gpu/drm/vc4/vc4_vec.c
@@ -67,7 +67,7 @@
struct vc4_vec_variant {
u32 dac_config;
};
-@@ -383,6 +385,33 @@ static const struct drm_prop_enum_list legacy_tv_mode_names[] = {
+@@ -383,6 +385,33 @@ static const struct drm_prop_enum_list l
{ VC4_VEC_TV_MODE_MONOCHROME, "Mono", },
};
static enum drm_connector_status
vc4_vec_connector_detect(struct drm_connector *connector, bool force)
{
-@@ -448,52 +477,55 @@ vc4_vec_connector_set_property(struct drm_connector *connector,
+@@ -448,52 +477,55 @@ vc4_vec_connector_set_property(struct dr
}
static int
return 0;
}
-@@ -538,6 +570,8 @@ static const struct drm_connector_helper_funcs vc4_vec_connector_helper_funcs =
+@@ -538,6 +570,8 @@ static const struct drm_connector_helper
static int vc4_vec_connector_init(struct drm_device *dev, struct vc4_vec *vec)
{
struct drm_connector *connector = &vec->connector;
struct drm_property *prop;
int ret;
-@@ -550,9 +584,17 @@ static int vc4_vec_connector_init(struct drm_device *dev, struct vc4_vec *vec)
+@@ -550,9 +584,17 @@ static int vc4_vec_connector_init(struct
drm_connector_helper_add(connector, &vc4_vec_connector_helper_funcs);
prop = drm_property_create_enum(dev, 0, "mode",
legacy_tv_mode_names,
-@@ -561,7 +603,7 @@ static int vc4_vec_connector_init(struct drm_device *dev, struct vc4_vec *vec)
+@@ -561,7 +603,7 @@ static int vc4_vec_connector_init(struct
return -ENOMEM;
vec->legacy_tv_mode_property = prop;
drm_connector_attach_tv_margin_properties(connector);
-@@ -888,3 +930,10 @@ struct platform_driver vc4_vec_driver = {
+@@ -888,3 +930,10 @@ struct platform_driver vc4_vec_driver =
.of_match_table = vc4_vec_dt_match,
},
};
+ "\t\t\tPAL60, SECAM.\n"
+ "\t\tDefault: PAL if a 50 Hz mode has been set via video=,\n"
+ "\t\t\tNTSC otherwise");
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_vec.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_vec.c b/drivers/gpu/drm/vc4/vc4_vec.c
-index 723bfa0e4e3e..c519c0937c6d 100644
--- a/drivers/gpu/drm/vc4/vc4_vec.c
+++ b/drivers/gpu/drm/vc4/vc4_vec.c
-@@ -388,7 +388,9 @@ static const struct drm_prop_enum_list legacy_tv_mode_names[] = {
+@@ -388,7 +388,9 @@ static const struct drm_prop_enum_list l
static enum drm_connector_tv_mode
vc4_vec_get_default_mode(struct drm_connector *connector)
{
int ret;
ret = drm_get_tv_mode_from_name(vc4_vec_tv_norm, strlen(vc4_vec_tv_norm));
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_hdmi.c | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
-diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
-index 07c91b450f93..4ac3a764a8b3 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -709,6 +709,24 @@ static int vc4_hdmi_write_infoframe(struct drm_connector *connector,
+@@ -709,6 +709,24 @@ out:
return ret;
}
#define SCRAMBLING_POLLING_DELAY_MS 1000
static void vc4_hdmi_enable_scrambling(struct drm_encoder *encoder)
-@@ -1667,6 +1685,7 @@ vc4_hdmi_connector_clock_valid(const struct drm_connector *connector,
+@@ -1667,6 +1685,7 @@ vc4_hdmi_connector_clock_valid(const str
static const struct drm_connector_hdmi_funcs vc4_hdmi_hdmi_connector_funcs = {
.tmds_char_rate_valid = vc4_hdmi_connector_clock_valid,
.write_infoframe = vc4_hdmi_write_infoframe,
};
#define WIFI_2_4GHz_CH1_MIN_FREQ 2400000000ULL
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_hdmi.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
-index 4ac3a764a8b3..2e093f975ff6 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
@@ -44,6 +44,8 @@
static bool vc4_hdmi_supports_scrambling(struct vc4_hdmi *vc4_hdmi)
{
struct drm_display_info *display = &vc4_hdmi->connector.display_info;
-@@ -423,7 +429,9 @@ static int vc4_hdmi_connector_detect_ctx(struct drm_connector *connector,
+@@ -423,7 +429,9 @@ static int vc4_hdmi_connector_detect_ctx
return connector_status_unknown;
}
if (gpiod_get_value_cansleep(vc4_hdmi->hpd_gpio))
status = connector_status_connected;
} else {
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_hdmi.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
-index 2e093f975ff6..a21b78f1c9ad 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -2369,7 +2369,7 @@ static irqreturn_t vc4_hdmi_hpd_irq_thread(int irq, void *priv)
+@@ -2369,7 +2369,7 @@ static irqreturn_t vc4_hdmi_hpd_irq_thre
struct drm_connector *connector = &vc4_hdmi->connector;
struct drm_device *dev = connector->dev;
drm_connector_helper_hpd_irq_event(connector);
return IRQ_HANDLED;
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_crtc.c | 1 +
1 file changed, 1 insertion(+)
-diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c
-index 093631e84bc1..431a8e790a2a 100644
--- a/drivers/gpu/drm/vc4/vc4_crtc.c
+++ b/drivers/gpu/drm/vc4/vc4_crtc.c
-@@ -647,6 +647,7 @@ static void vc4_crtc_atomic_disable(struct drm_crtc *crtc,
+@@ -647,6 +647,7 @@ static void vc4_crtc_atomic_disable(stru
* someone was waiting it.
*/
vc4_crtc_send_vblank(crtc);
}
static void vc4_crtc_atomic_enable(struct drm_crtc *crtc,
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_hdmi_phy.c | 5 +++++
1 file changed, 5 insertions(+)
-diff --git a/drivers/gpu/drm/vc4/vc4_hdmi_phy.c b/drivers/gpu/drm/vc4/vc4_hdmi_phy.c
-index 56e6a35da357..5040f014bf7e 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi_phy.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi_phy.c
-@@ -1197,4 +1197,9 @@ void vc6_hdmi_phy_init(struct vc4_hdmi *vc4_hdmi,
+@@ -1197,4 +1197,9 @@ void vc6_hdmi_phy_init(struct vc4_hdmi *
void vc6_hdmi_phy_disable(struct vc4_hdmi *vc4_hdmi)
{
+ vc6_hdmi_reset_phy(vc4_hdmi);
+ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags);
}
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_hdmi_phy.c | 2 ++
1 file changed, 2 insertions(+)
-diff --git a/drivers/gpu/drm/vc4/vc4_hdmi_phy.c b/drivers/gpu/drm/vc4/vc4_hdmi_phy.c
-index 5040f014bf7e..4a1ab59d8810 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi_phy.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi_phy.c
@@ -137,6 +137,7 @@
#define VC6_HDMI_TX_PHY_PLL_POST_KDIV_CLK0_SEL_MASK VC4_MASK(3, 2)
#define VC6_HDMI_TX_PHY_PLL_POST_KDIV_KDIV_MASK VC4_MASK(1, 0)
-@@ -947,6 +948,7 @@ static void vc6_hdmi_reset_phy(struct vc4_hdmi *vc4_hdmi)
+@@ -947,6 +948,7 @@ static void vc6_hdmi_reset_phy(struct vc
HDMI_WRITE(HDMI_TX_PHY_RESET_CTL, 0);
HDMI_WRITE(HDMI_TX_PHY_POWERUP_CTL, 0);
}
void vc6_hdmi_phy_init(struct vc4_hdmi *vc4_hdmi,
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_dpi.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
-diff --git a/drivers/gpu/drm/vc4/vc4_dpi.c b/drivers/gpu/drm/vc4/vc4_dpi.c
-index 960550c166d9..b7773f9e18d9 100644
--- a/drivers/gpu/drm/vc4/vc4_dpi.c
+++ b/drivers/gpu/drm/vc4/vc4_dpi.c
@@ -95,6 +95,8 @@ struct vc4_dpi {
};
#define to_vc4_dpi(_encoder) \
-@@ -205,6 +207,11 @@ static void vc4_dpi_encoder_enable(struct drm_encoder *encoder)
+@@ -205,6 +207,11 @@ static void vc4_dpi_encoder_enable(struc
}
}
if (connector->display_info.bus_flags & DRM_BUS_FLAG_PIXDATA_DRIVE_NEGEDGE)
dpi_c |= DPI_PIXEL_CLK_INVERT;
-@@ -313,6 +320,7 @@ static int vc4_dpi_bind(struct device *dev, struct device *master, void *data)
+@@ -313,6 +320,7 @@ static int vc4_dpi_bind(struct device *d
{
struct platform_device *pdev = to_platform_device(dev);
struct drm_device *drm = dev_get_drvdata(master);
struct vc4_dpi *dpi;
int ret;
-@@ -361,6 +369,20 @@ static int vc4_dpi_bind(struct device *dev, struct device *master, void *data)
+@@ -361,6 +369,20 @@ static int vc4_dpi_bind(struct device *d
if (ret)
return ret;
ret = drmm_encoder_init(drm, &dpi->encoder.base,
&vc4_dpi_encoder_funcs,
DRM_MODE_ENCODER_DPI,
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_plane.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
-index 056d344c5411..0081318310ea 100644
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -597,7 +597,7 @@ static void vc4_write_tpz(struct vc4_plane_state *vc4_state, u32 src, u32 dst)
+@@ -597,7 +597,7 @@ static void vc4_write_tpz(struct vc4_pla
#define PHASE_BITS 6
static void vc4_write_ppf(struct vc4_plane_state *vc4_state, u32 src, u32 dst,
{
struct vc4_dev *vc4 = to_vc4_dev(vc4_state->base.plane->dev);
u32 scale = src / dst;
-@@ -608,7 +608,7 @@ static void vc4_write_ppf(struct vc4_plane_state *vc4_state, u32 src, u32 dst,
+@@ -608,7 +608,7 @@ static void vc4_write_ppf(struct vc4_pla
/*
* Start the phase at 1/2 pixel from the 1st pixel at src_x.
*/
if (channel) {
/*
-@@ -616,6 +616,7 @@ static void vc4_write_ppf(struct vc4_plane_state *vc4_state, u32 src, u32 dst,
+@@ -616,6 +616,7 @@ static void vc4_write_ppf(struct vc4_pla
* display list's x value
*/
offset = (xy & 0x1ffff) >> (16 - PHASE_BITS) >> 1;
offset += -(1 << PHASE_BITS >> 2);
} else {
/*
-@@ -842,13 +843,15 @@ static void vc4_write_scaling_parameters(struct drm_plane_state *state,
+@@ -842,13 +843,15 @@ static void vc4_write_scaling_parameters
/* Ch0 H-PPF Word 0: Scaling Parameters */
if (vc4_state->x_scaling[channel] == VC4_SCALING_PPF) {
vc4_write_ppf(vc4_state, vc4_state->src_w[channel],
vc4_dlist_write(vc4_state, 0xc0c0c0c0);
}
-@@ -2564,6 +2567,8 @@ struct drm_plane *vc4_plane_init(struct drm_device *dev,
+@@ -2564,6 +2567,8 @@ struct drm_plane *vc4_plane_init(struct
DRM_COLOR_YCBCR_BT709,
DRM_COLOR_YCBCR_LIMITED_RANGE);
if (type == DRM_PLANE_TYPE_PRIMARY)
drm_plane_create_zpos_immutable_property(plane, 0);
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_plane.c | 43 +++++++++++++++++++++++++++------
3 files changed, 49 insertions(+), 9 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h
-index 0ea174bfbeb5..04dd41925fe2 100644
--- a/drivers/gpu/drm/vc4/vc4_drv.h
+++ b/drivers/gpu/drm/vc4/vc4_drv.h
@@ -348,6 +348,7 @@ struct vc4_hvs {
struct debugfs_regset32 regset;
-diff --git a/drivers/gpu/drm/vc4/vc4_hvs.c b/drivers/gpu/drm/vc4/vc4_hvs.c
-index ea0db6e2f0f5..4c2af22345a1 100644
--- a/drivers/gpu/drm/vc4/vc4_hvs.c
+++ b/drivers/gpu/drm/vc4/vc4_hvs.c
-@@ -412,6 +412,9 @@ static int vc4_hvs_debugfs_dlist_allocs(struct seq_file *m, void *data)
+@@ -412,6 +412,9 @@ static int vc4_hvs_debugfs_dlist_allocs(
static const u32 mitchell_netravali_1_3_1_3_kernel[] =
VC4_LINEAR_PHASE_KERNEL(0, -2, -6, -8, -10, -8, -3, 2, 18,
50, 82, 119, 155, 187, 213, 227);
static int vc4_hvs_upload_linear_kernel(struct vc4_hvs *hvs,
struct drm_mm_node *space,
-@@ -2067,14 +2070,19 @@ static int vc4_hvs_bind(struct device *dev, struct device *master, void *data)
+@@ -2067,14 +2070,19 @@ static int vc4_hvs_bind(struct device *d
if (ret)
return ret;
ret = vc4_hvs_cob_init(hvs);
if (ret)
-@@ -2127,6 +2135,8 @@ static void vc4_hvs_unbind(struct device *dev, struct device *master,
+@@ -2127,6 +2135,8 @@ static void vc4_hvs_unbind(struct device
if (drm_mm_node_allocated(&vc4->hvs->mitchell_netravali_filter))
drm_mm_remove_node(&vc4->hvs->mitchell_netravali_filter);
drm_mm_for_each_node_safe(node, next, &vc4->hvs->dlist_mm)
drm_mm_remove_node(node);
-diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
-index 0081318310ea..a0808e93f2bf 100644
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -597,7 +597,8 @@ static void vc4_write_tpz(struct vc4_plane_state *vc4_state, u32 src, u32 dst)
+@@ -597,7 +597,8 @@ static void vc4_write_tpz(struct vc4_pla
#define PHASE_BITS 6
static void vc4_write_ppf(struct vc4_plane_state *vc4_state, u32 src, u32 dst,
{
struct vc4_dev *vc4 = to_vc4_dev(vc4_state->base.plane->dev);
u32 scale = src / dst;
-@@ -649,6 +650,7 @@ static void vc4_write_ppf(struct vc4_plane_state *vc4_state, u32 src, u32 dst,
+@@ -649,6 +650,7 @@ static void vc4_write_ppf(struct vc4_pla
phase &= SCALER_PPF_IPHASE_MASK;
vc4_dlist_write(vc4_state,
SCALER_PPF_AGC |
VC4_SET_FIELD(scale, SCALER_PPF_SCALE) |
/*
-@@ -844,14 +846,16 @@ static void vc4_write_scaling_parameters(struct drm_plane_state *state,
+@@ -844,14 +846,16 @@ static void vc4_write_scaling_parameters
if (vc4_state->x_scaling[channel] == VC4_SCALING_PPF) {
vc4_write_ppf(vc4_state, vc4_state->src_w[channel],
vc4_state->crtc_w, vc4_state->src_x, channel,
vc4_dlist_write(vc4_state, 0xc0c0c0c0);
}
-@@ -1660,7 +1664,18 @@ static int vc4_plane_mode_set(struct drm_plane *plane,
+@@ -1660,7 +1664,18 @@ static int vc4_plane_mode_set(struct drm
vc4_state->y_scaling[0] == VC4_SCALING_PPF ||
vc4_state->x_scaling[1] == VC4_SCALING_PPF ||
vc4_state->y_scaling[1] == VC4_SCALING_PPF) {
SCALER_PPF_KERNEL_OFFSET);
/* HPPF plane 0 */
-@@ -2072,9 +2087,19 @@ static int vc6_plane_mode_set(struct drm_plane *plane,
+@@ -2072,9 +2087,19 @@ static int vc6_plane_mode_set(struct drm
vc4_state->y_scaling[0] == VC4_SCALING_PPF ||
vc4_state->x_scaling[1] == VC4_SCALING_PPF ||
vc4_state->y_scaling[1] == VC4_SCALING_PPF) {
/* HPPF plane 0 */
vc4_dlist_write(vc4_state, kernel);
-@@ -2567,6 +2592,10 @@ struct drm_plane *vc4_plane_init(struct drm_device *dev,
+@@ -2567,6 +2592,10 @@ struct drm_plane *vc4_plane_init(struct
DRM_COLOR_YCBCR_BT709,
DRM_COLOR_YCBCR_LIMITED_RANGE);
drm_plane_create_chroma_siting_properties(plane, 0, 0);
if (type == DRM_PLANE_TYPE_PRIMARY)
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_plane.c | 21 +++++++++++++++------
1 file changed, 15 insertions(+), 6 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
-index a0808e93f2bf..19258c62e4b9 100644
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -265,7 +265,11 @@ static enum vc4_scaling_mode vc4_get_scaling_mode(u32 src, u32 dst)
+@@ -265,7 +265,11 @@ static enum vc4_scaling_mode vc4_get_sca
{
if (dst == src >> 16)
return VC4_SCALING_NONE;
return VC4_SCALING_PPF;
else
return VC4_SCALING_TPZ;
-@@ -574,12 +578,17 @@ static void vc4_write_tpz(struct vc4_plane_state *vc4_state, u32 src, u32 dst)
+@@ -574,12 +578,17 @@ static void vc4_write_tpz(struct vc4_pla
WARN_ON_ONCE(vc4->gen > VC4_GEN_6_D);
vc4_dlist_write(vc4_state,
/*
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_hvs.c | 18 ++++++++++--------
2 files changed, 12 insertions(+), 8 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h
-index 04dd41925fe2..0ef0e4ce77b0 100644
--- a/drivers/gpu/drm/vc4/vc4_drv.h
+++ b/drivers/gpu/drm/vc4/vc4_drv.h
@@ -327,6 +327,8 @@ struct vc4_hvs {
unsigned long max_core_rate;
/* Memory manager for CRTCs to allocate space in the display
-diff --git a/drivers/gpu/drm/vc4/vc4_hvs.c b/drivers/gpu/drm/vc4/vc4_hvs.c
-index 4c2af22345a1..517026965477 100644
--- a/drivers/gpu/drm/vc4/vc4_hvs.c
+++ b/drivers/gpu/drm/vc4/vc4_hvs.c
-@@ -1302,14 +1302,7 @@ void vc4_hvs_atomic_flush(struct drm_crtc *crtc,
+@@ -1302,14 +1302,7 @@ void vc4_hvs_atomic_flush(struct drm_crt
/* This sets a black background color fill, as is the case
* with other DRM drivers.
*/
} else {
/* we can actually run with a lower core clock when background
* fill is enabled on VC4_GEN_5 so leave it enabled always.
-@@ -1481,6 +1474,15 @@ static irqreturn_t vc6_hvs_eof_irq_handler(int irq, void *data)
+@@ -1481,6 +1474,15 @@ static irqreturn_t vc6_hvs_eof_irq_handl
if (hvs->eof_irq[i].desc != irq)
continue;
vc4_hvs_schedule_dlist_sweep(hvs, i);
return IRQ_HANDLED;
}
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_plane.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
-index 19258c62e4b9..e934ce27cd84 100644
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -2613,7 +2613,7 @@ struct drm_plane *vc4_plane_init(struct drm_device *dev,
+@@ -2613,7 +2613,7 @@ struct drm_plane *vc4_plane_init(struct
return plane;
}
int vc4_plane_create_additional_planes(struct drm_device *drm)
{
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_plane.c | 34 +++++++++++++++++++++++++++++++--
1 file changed, 32 insertions(+), 2 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
-index e934ce27cd84..d23a33e0c00b 100644
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -2613,13 +2613,28 @@ struct drm_plane *vc4_plane_init(struct drm_device *dev,
+@@ -2613,13 +2613,28 @@ struct drm_plane *vc4_plane_init(struct
return plane;
}
/* Set up some arbitrary number of planes. We're not limited
* by a set number of physical registers, just the space in
-@@ -2633,7 +2648,22 @@ int vc4_plane_create_additional_planes(struct drm_device *drm)
+@@ -2633,7 +2648,22 @@ int vc4_plane_create_additional_planes(s
for (i = 0; i < VC4_NUM_OVERLAY_PLANES; i++) {
struct drm_plane *plane =
vc4_plane_init(drm, DRM_PLANE_TYPE_OVERLAY,
if (IS_ERR(plane))
continue;
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_kms.c | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_kms.c b/drivers/gpu/drm/vc4/vc4_kms.c
-index 31cefc1adcd6..ddc3249fc1c8 100644
--- a/drivers/gpu/drm/vc4/vc4_kms.c
+++ b/drivers/gpu/drm/vc4/vc4_kms.c
-@@ -661,17 +661,26 @@ static int vc4_load_tracker_atomic_check(struct drm_atomic_state *state)
+@@ -661,17 +661,26 @@ static int vc4_load_tracker_atomic_check
for_each_oldnew_plane_in_state(state, plane, old_plane_state,
new_plane_state, i) {
struct vc4_plane_state *vc4_plane_state;
}
}
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_kms.c | 21 ++++++++++++++-------
1 file changed, 14 insertions(+), 7 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_kms.c b/drivers/gpu/drm/vc4/vc4_kms.c
-index ddc3249fc1c8..95e7ce0dc9f7 100644
--- a/drivers/gpu/drm/vc4/vc4_kms.c
+++ b/drivers/gpu/drm/vc4/vc4_kms.c
-@@ -221,7 +221,7 @@ static void vc4_hvs_pv_muxing_commit(struct vc4_dev *vc4,
+@@ -221,7 +221,7 @@ static void vc4_hvs_pv_muxing_commit(str
struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc);
struct vc4_crtc_state *vc4_state = to_vc4_crtc_state(crtc_state);
u32 dispctrl;
if (!crtc_state->active)
continue;
-@@ -238,15 +238,22 @@ static void vc4_hvs_pv_muxing_commit(struct vc4_dev *vc4,
+@@ -238,15 +238,22 @@ static void vc4_hvs_pv_muxing_commit(str
* enabled. In this case, FIFO 2 is directly accessed by the
* TXP IP, and we need to disable the FIFO2 -> pixelvalve1
* route.
}
}
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_txp.c | 28 ++++++++++++++++++++++++----
1 file changed, 24 insertions(+), 4 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_txp.c b/drivers/gpu/drm/vc4/vc4_txp.c
-index 42acac05fe47..a14205d40cb7 100644
--- a/drivers/gpu/drm/vc4/vc4_txp.c
+++ b/drivers/gpu/drm/vc4/vc4_txp.c
@@ -15,6 +15,7 @@
#include <drm/drm_drv.h>
#include <drm/drm_edid.h>
#include <drm/drm_fb_dma_helper.h>
-@@ -259,10 +260,22 @@ static int vc4_txp_connector_atomic_check(struct drm_connector *conn,
+@@ -259,10 +260,22 @@ static int vc4_txp_connector_atomic_chec
crtc_state = drm_atomic_get_new_crtc_state(state, conn_state->crtc);
fb = conn_state->writeback_job->fb;
return -EINVAL;
}
-@@ -330,6 +343,9 @@ static void vc4_txp_connector_atomic_commit(struct drm_connector *conn,
+@@ -330,6 +343,9 @@ static void vc4_txp_connector_atomic_com
*/
ctrl |= TXP_ALPHA_INVERT;
if (!drm_dev_enter(drm, &idx))
return;
-@@ -608,6 +624,10 @@ static int vc4_txp_bind(struct device *dev, struct device *master, void *data)
+@@ -608,6 +624,10 @@ static int vc4_txp_bind(struct device *d
if (ret)
return ret;
ret = devm_request_irq(dev, irq, vc4_txp_interrupt, 0,
dev_name(dev), txp);
if (ret)
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_v3d.c | 2 ++
3 files changed, 9 insertions(+)
-diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
-index a21b78f1c9ad..ed4994004694 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -896,6 +896,8 @@ static void vc4_hdmi_encoder_post_crtc_powerdown(struct drm_encoder *encoder,
+@@ -896,6 +896,8 @@ static void vc4_hdmi_encoder_post_crtc_p
if (vc4_hdmi->variant->phy_disable)
vc4_hdmi->variant->phy_disable(vc4_hdmi);
clk_disable_unprepare(vc4_hdmi->pixel_bvb_clock);
clk_disable_unprepare(vc4_hdmi->pixel_clock);
-@@ -3095,6 +3097,8 @@ static int vc4_hdmi_runtime_suspend(struct device *dev)
+@@ -3101,6 +3103,8 @@ static int vc4_hdmi_runtime_suspend(stru
struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev);
clk_disable_unprepare(vc4_hdmi->audio_clock);
clk_disable_unprepare(vc4_hdmi->hsm_clock);
return 0;
-diff --git a/drivers/gpu/drm/vc4/vc4_hvs.c b/drivers/gpu/drm/vc4/vc4_hvs.c
-index 517026965477..82d9e0484d61 100644
--- a/drivers/gpu/drm/vc4/vc4_hvs.c
+++ b/drivers/gpu/drm/vc4/vc4_hvs.c
-@@ -2149,7 +2149,10 @@ static void vc4_hvs_unbind(struct device *dev, struct device *master,
+@@ -2149,7 +2149,10 @@ static void vc4_hvs_unbind(struct device
drm_mm_remove_node(node);
drm_mm_takedown(&vc4->hvs->lbm_mm);
clk_disable_unprepare(hvs->core_clk);
vc4->hvs = NULL;
-diff --git a/drivers/gpu/drm/vc4/vc4_v3d.c b/drivers/gpu/drm/vc4/vc4_v3d.c
-index bb09df5000bd..ebffbb248931 100644
--- a/drivers/gpu/drm/vc4/vc4_v3d.c
+++ b/drivers/gpu/drm/vc4/vc4_v3d.c
-@@ -376,6 +376,8 @@ static int vc4_v3d_runtime_suspend(struct device *dev)
+@@ -376,6 +376,8 @@ static int vc4_v3d_runtime_suspend(struc
vc4_irq_disable(&vc4->base);
clk_disable_unprepare(v3d->clk);
return 0;
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_hdmi.h | 4 ++++
4 files changed, 30 insertions(+), 4 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c
-index 431a8e790a2a..5ee7bb927fd0 100644
--- a/drivers/gpu/drm/vc4/vc4_crtc.c
+++ b/drivers/gpu/drm/vc4/vc4_crtc.c
-@@ -361,7 +361,9 @@ static void vc4_crtc_config_pv(struct drm_crtc *crtc, struct drm_encoder *encode
+@@ -361,7 +361,9 @@ static void vc4_crtc_config_pv(struct dr
bool is_dsi1 = vc4_encoder->type == VC4_ENCODER_TYPE_DSI1;
bool is_vec = vc4_encoder->type == VC4_ENCODER_TYPE_VEC;
u32 format = is_dsi1 ? PV_CONTROL_FORMAT_DSIV_24 : PV_CONTROL_FORMAT_24;
u16 vert_bp = mode->crtc_vtotal - mode->crtc_vsync_end;
u16 vert_sync = mode->crtc_vsync_end - mode->crtc_vsync_start;
-@@ -426,7 +428,8 @@ static void vc4_crtc_config_pv(struct drm_crtc *crtc, struct drm_encoder *encode
+@@ -426,7 +428,8 @@ static void vc4_crtc_config_pv(struct dr
*/
CRTC_WRITE(PV_V_CONTROL,
PV_VCONTROL_CONTINUOUS |
(is_dsi ? PV_VCONTROL_DSI : 0) |
PV_VCONTROL_INTERLACE |
(odd_field_first
-@@ -438,7 +441,8 @@ static void vc4_crtc_config_pv(struct drm_crtc *crtc, struct drm_encoder *encode
+@@ -438,7 +441,8 @@ static void vc4_crtc_config_pv(struct dr
} else {
CRTC_WRITE(PV_V_CONTROL,
PV_VCONTROL_CONTINUOUS |
(is_dsi ? PV_VCONTROL_DSI : 0));
CRTC_WRITE(PV_VSYNCD_EVEN, 0);
}
-@@ -1205,6 +1209,7 @@ const struct vc4_pv_data bcm2835_pv0_data = {
+@@ -1205,6 +1209,7 @@ const struct vc4_pv_data bcm2835_pv0_dat
},
.fifo_depth = 64,
.pixels_per_clock = 1,
.encoder_types = {
[PV_CONTROL_CLK_SELECT_DSI] = VC4_ENCODER_TYPE_DSI0,
[PV_CONTROL_CLK_SELECT_DPI_SMI_HDMI] = VC4_ENCODER_TYPE_DPI,
-@@ -1220,6 +1225,7 @@ const struct vc4_pv_data bcm2835_pv1_data = {
+@@ -1220,6 +1225,7 @@ const struct vc4_pv_data bcm2835_pv1_dat
},
.fifo_depth = 64,
.pixels_per_clock = 1,
.encoder_types = {
[PV_CONTROL_CLK_SELECT_DSI] = VC4_ENCODER_TYPE_DSI1,
[PV_CONTROL_CLK_SELECT_DPI_SMI_HDMI] = VC4_ENCODER_TYPE_SMI,
-@@ -1235,6 +1241,7 @@ const struct vc4_pv_data bcm2835_pv2_data = {
+@@ -1235,6 +1241,7 @@ const struct vc4_pv_data bcm2835_pv2_dat
},
.fifo_depth = 64,
.pixels_per_clock = 1,
.encoder_types = {
[PV_CONTROL_CLK_SELECT_DPI_SMI_HDMI] = VC4_ENCODER_TYPE_HDMI0,
[PV_CONTROL_CLK_SELECT_VEC] = VC4_ENCODER_TYPE_VEC,
-@@ -1250,6 +1257,7 @@ const struct vc4_pv_data bcm2711_pv0_data = {
+@@ -1250,6 +1257,7 @@ const struct vc4_pv_data bcm2711_pv0_dat
},
.fifo_depth = 64,
.pixels_per_clock = 1,
.encoder_types = {
[0] = VC4_ENCODER_TYPE_DSI0,
[1] = VC4_ENCODER_TYPE_DPI,
-@@ -1265,6 +1273,7 @@ const struct vc4_pv_data bcm2711_pv1_data = {
+@@ -1265,6 +1273,7 @@ const struct vc4_pv_data bcm2711_pv1_dat
},
.fifo_depth = 64,
.pixels_per_clock = 1,
.encoder_types = {
[0] = VC4_ENCODER_TYPE_DSI1,
[1] = VC4_ENCODER_TYPE_SMI,
-@@ -1280,6 +1289,7 @@ const struct vc4_pv_data bcm2711_pv2_data = {
+@@ -1280,6 +1289,7 @@ const struct vc4_pv_data bcm2711_pv2_dat
},
.fifo_depth = 256,
.pixels_per_clock = 2,
.encoder_types = {
[0] = VC4_ENCODER_TYPE_HDMI0,
},
-@@ -1294,6 +1304,7 @@ const struct vc4_pv_data bcm2711_pv3_data = {
+@@ -1294,6 +1304,7 @@ const struct vc4_pv_data bcm2711_pv3_dat
},
.fifo_depth = 64,
.pixels_per_clock = 1,
.encoder_types = {
[PV_CONTROL_CLK_SELECT_VEC] = VC4_ENCODER_TYPE_VEC,
},
-@@ -1308,6 +1319,7 @@ const struct vc4_pv_data bcm2711_pv4_data = {
+@@ -1308,6 +1319,7 @@ const struct vc4_pv_data bcm2711_pv4_dat
},
.fifo_depth = 64,
.pixels_per_clock = 2,
.encoder_types = {
[0] = VC4_ENCODER_TYPE_HDMI1,
},
-@@ -1321,6 +1333,7 @@ const struct vc4_pv_data bcm2712_pv0_data = {
+@@ -1321,6 +1333,7 @@ const struct vc4_pv_data bcm2712_pv0_dat
},
.fifo_depth = 64,
.pixels_per_clock = 1,
.encoder_types = {
[0] = VC4_ENCODER_TYPE_HDMI0,
},
-@@ -1334,6 +1347,7 @@ const struct vc4_pv_data bcm2712_pv1_data = {
+@@ -1334,6 +1347,7 @@ const struct vc4_pv_data bcm2712_pv1_dat
},
.fifo_depth = 64,
.pixels_per_clock = 1,
.encoder_types = {
[0] = VC4_ENCODER_TYPE_HDMI1,
},
-diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h
-index 0ef0e4ce77b0..b5486c8d6bc7 100644
--- a/drivers/gpu/drm/vc4/vc4_drv.h
+++ b/drivers/gpu/drm/vc4/vc4_drv.h
@@ -547,6 +547,8 @@ struct vc4_pv_data {
enum vc4_encoder_type encoder_types[4];
};
-diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
-index ed4994004694..93c0b067a9c6 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -1710,7 +1710,9 @@ static int vc4_hdmi_encoder_atomic_check(struct drm_encoder *encoder,
+@@ -1710,7 +1710,9 @@ static int vc4_hdmi_encoder_atomic_check
unsigned long long tmds_char_rate = mode->clock * 1000;
unsigned long long tmds_bit_rate;
if (mode->flags & DRM_MODE_FLAG_DBLCLK) {
/* Only try to fixup DBLCLK modes to get 480i and 576i
* working.
-@@ -3347,6 +3349,7 @@ static const struct vc4_hdmi_variant bcm2711_hdmi0_variant = {
+@@ -3353,6 +3355,7 @@ static const struct vc4_hdmi_variant bcm
PHY_LANE_CK,
},
.unsupported_odd_h_timings = true,
.external_irq_controller = true,
.init_resources = vc5_hdmi_init_resources,
-@@ -3376,6 +3379,7 @@ static const struct vc4_hdmi_variant bcm2711_hdmi1_variant = {
+@@ -3382,6 +3385,7 @@ static const struct vc4_hdmi_variant bcm
PHY_LANE_2,
},
.unsupported_odd_h_timings = true,
.external_irq_controller = true,
.init_resources = vc5_hdmi_init_resources,
-@@ -3405,6 +3409,7 @@ static const struct vc4_hdmi_variant bcm2712_hdmi0_variant = {
+@@ -3411,6 +3415,7 @@ static const struct vc4_hdmi_variant bcm
PHY_LANE_CK,
},
.unsupported_odd_h_timings = false,
.external_irq_controller = true,
.init_resources = vc5_hdmi_init_resources,
-@@ -3432,6 +3437,7 @@ static const struct vc4_hdmi_variant bcm2712_hdmi1_variant = {
+@@ -3438,6 +3443,7 @@ static const struct vc4_hdmi_variant bcm
PHY_LANE_CK,
},
.unsupported_odd_h_timings = false,
.external_irq_controller = true,
.init_resources = vc5_hdmi_init_resources,
-diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.h b/drivers/gpu/drm/vc4/vc4_hdmi.h
-index a31157c99bee..a68aeca04583 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.h
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.h
@@ -47,6 +47,10 @@ struct vc4_hdmi_variant {
/*
* The BCM2711 CEC/hotplug IRQ controller is shared between the
---
-2.54.0
-
create mode 100644 drivers/gpu/drm/vc4/vc4_firmware_kms.c
create mode 100644 drivers/gpu/drm/vc4/vc_image_types.h
-diff --git a/drivers/gpu/drm/vc4/Makefile b/drivers/gpu/drm/vc4/Makefile
-index c41f89a15a55..1c0ce156b0aa 100644
--- a/drivers/gpu/drm/vc4/Makefile
+++ b/drivers/gpu/drm/vc4/Makefile
@@ -9,6 +9,7 @@ vc4-y := \
vc4_kms.o \
vc4_gem.o \
vc4_hdmi.o \
-diff --git a/drivers/gpu/drm/vc4/vc4_debugfs.c b/drivers/gpu/drm/vc4/vc4_debugfs.c
-index fac624a663ea..8144dedf2248 100644
--- a/drivers/gpu/drm/vc4/vc4_debugfs.c
+++ b/drivers/gpu/drm/vc4/vc4_debugfs.c
-@@ -24,7 +24,8 @@ vc4_debugfs_init(struct drm_minor *minor)
+@@ -24,7 +24,8 @@ vc4_debugfs_init(struct drm_minor *minor
struct vc4_dev *vc4 = to_vc4_dev(minor->dev);
struct drm_device *drm = &vc4->base;
if (vc4->v3d) {
drm_WARN_ON(drm, vc4_bo_debugfs_init(minor));
-diff --git a/drivers/gpu/drm/vc4/vc4_drv.c b/drivers/gpu/drm/vc4/vc4_drv.c
-index d8e7090049d4..038e551654ea 100644
--- a/drivers/gpu/drm/vc4/vc4_drv.c
+++ b/drivers/gpu/drm/vc4/vc4_drv.c
-@@ -300,6 +300,18 @@ static const struct of_device_id vc4_dma_range_matches[] = {
+@@ -300,6 +300,18 @@ static const struct of_device_id vc4_dma
{}
};
static int vc4_drm_bind(struct device *dev)
{
struct platform_device *pdev = to_platform_device(dev);
-@@ -380,7 +392,7 @@ static int vc4_drm_bind(struct device *dev)
+@@ -380,7 +392,7 @@ static int vc4_drm_bind(struct device *d
if (ret)
goto err;
ret = rpi_firmware_property(firmware,
RPI_FIRMWARE_NOTIFY_DISPLAY_DONE,
NULL, 0);
-@@ -398,16 +410,20 @@ static int vc4_drm_bind(struct device *dev)
+@@ -398,16 +410,20 @@ static int vc4_drm_bind(struct device *d
if (ret)
goto err;
ret = drm_dev_register(drm, 0);
if (ret < 0)
-@@ -453,6 +469,7 @@ static struct platform_driver *const component_drivers[] = {
+@@ -453,6 +469,7 @@ static struct platform_driver *const com
&vc4_dsi_driver,
&vc4_txp_driver,
&vc4_crtc_driver,
&vc4_v3d_driver,
};
-diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h
-index b5486c8d6bc7..30eb4f6a2396 100644
--- a/drivers/gpu/drm/vc4/vc4_drv.h
+++ b/drivers/gpu/drm/vc4/vc4_drv.h
@@ -96,8 +96,12 @@ struct vc4_dev {
struct vc4_hang_state *hang_state;
-@@ -1007,6 +1011,9 @@ extern struct platform_driver vc4_dsi_driver;
+@@ -1007,6 +1011,9 @@ extern struct platform_driver vc4_dsi_dr
/* vc4_fence.c */
extern const struct dma_fence_ops vc4_fence_ops;
/* vc4_gem.c */
int vc4_gem_init(struct drm_device *dev);
int vc4_submit_cl_ioctl(struct drm_device *dev, void *data,
-diff --git a/drivers/gpu/drm/vc4/vc4_firmware_kms.c b/drivers/gpu/drm/vc4/vc4_firmware_kms.c
-new file mode 100644
-index 000000000000..724f8bc72c80
--- /dev/null
+++ b/drivers/gpu/drm/vc4/vc4_firmware_kms.c
@@ -0,0 +1,2079 @@
+ .of_match_table = vc4_firmware_kms_dt_match,
+ },
+};
-diff --git a/drivers/gpu/drm/vc4/vc4_kms.c b/drivers/gpu/drm/vc4/vc4_kms.c
-index 95e7ce0dc9f7..7efcdc1e8d18 100644
--- a/drivers/gpu/drm/vc4/vc4_kms.c
+++ b/drivers/gpu/drm/vc4/vc4_kms.c
-@@ -138,6 +138,9 @@ vc4_ctm_commit(struct vc4_dev *vc4, struct drm_atomic_state *state)
+@@ -138,6 +138,9 @@ vc4_ctm_commit(struct vc4_dev *vc4, stru
struct vc4_ctm_state *ctm_state = to_vc4_ctm_state(vc4->ctm_manager.state);
struct drm_color_ctm *ctm = ctm_state->ctm;
WARN_ON_ONCE(vc4->gen > VC4_GEN_5);
if (ctm_state->fifo) {
-@@ -406,9 +409,10 @@ static void vc4_atomic_commit_tail(struct drm_atomic_state *state)
+@@ -406,9 +409,10 @@ static void vc4_atomic_commit_tail(struc
for_each_new_crtc_in_state(state, crtc, new_crtc_state, i) {
struct vc4_crtc_state *vc4_crtc_state;
vc4_crtc_state = to_vc4_crtc_state(new_crtc_state);
vc4_hvs_mask_underrun(hvs, vc4_crtc_state->assigned_channel);
}
-@@ -433,7 +437,7 @@ static void vc4_atomic_commit_tail(struct drm_atomic_state *state)
+@@ -433,7 +437,7 @@ static void vc4_atomic_commit_tail(struc
old_hvs_state->fifo_state[channel].pending_commit = NULL;
}
unsigned long state_rate = max(old_hvs_state->core_clock_rate,
new_hvs_state->core_clock_rate);
unsigned long core_rate = clamp_t(unsigned long, state_rate,
-@@ -454,23 +458,25 @@ static void vc4_atomic_commit_tail(struct drm_atomic_state *state)
+@@ -454,23 +458,25 @@ static void vc4_atomic_commit_tail(struc
if (vc4->gen <= VC4_GEN_5)
vc4_ctm_commit(vc4, state);
- case VC4_GEN_4:
- vc4_hvs_pv_muxing_commit(vc4, state);
- break;
+-
+- case VC4_GEN_5:
+- vc5_hvs_pv_muxing_commit(vc4, state);
+- break;
+-
+- case VC4_GEN_6_C:
+- case VC4_GEN_6_D:
+- vc6_hvs_pv_muxing_commit(vc4, state);
+- break;
+-
+- default:
+- drm_err(dev, "Unknown VC4 generation: %d", vc4->gen);
+- break;
+ if (!vc4->firmware_kms) {
+ switch (vc4->gen) {
+ case VC4_GEN_4:
+ vc4_hvs_pv_muxing_commit(vc4, state);
+ break;
-
-- case VC4_GEN_5:
-- vc5_hvs_pv_muxing_commit(vc4, state);
-- break;
++
+ case VC4_GEN_5:
+ vc5_hvs_pv_muxing_commit(vc4, state);
+ break;
-
-- case VC4_GEN_6_C:
-- case VC4_GEN_6_D:
-- vc6_hvs_pv_muxing_commit(vc4, state);
-- break;
++
+ case VC4_GEN_6_C:
+ case VC4_GEN_6_D:
+ vc6_hvs_pv_muxing_commit(vc4, state);
+ break;
-
-- default:
-- drm_err(dev, "Unknown VC4 generation: %d", vc4->gen);
-- break;
++
+ default:
+ drm_err(dev, "Unknown VC4 generation: %d", vc4->gen);
+ break;
}
drm_atomic_helper_commit_planes(dev, state,
-@@ -486,7 +492,7 @@ static void vc4_atomic_commit_tail(struct drm_atomic_state *state)
+@@ -486,7 +492,7 @@ static void vc4_atomic_commit_tail(struc
drm_atomic_helper_cleanup_planes(dev, state);
unsigned long core_rate = min_t(unsigned long,
hvs->max_core_rate,
new_hvs_state->core_clock_rate);
-@@ -507,11 +513,21 @@ static void vc4_atomic_commit_tail(struct drm_atomic_state *state)
+@@ -507,11 +513,21 @@ static void vc4_atomic_commit_tail(struc
static int vc4_atomic_commit_setup(struct drm_atomic_state *state)
{
hvs_state = vc4_hvs_get_new_global_state(state);
if (WARN_ON(IS_ERR(hvs_state)))
return PTR_ERR(hvs_state);
-@@ -890,6 +906,7 @@ static int cmp_vc4_crtc_hvs_output(const void *a, const void *b)
+@@ -890,6 +906,7 @@ static int cmp_vc4_crtc_hvs_output(const
static int vc4_pv_muxing_atomic_check(struct drm_device *dev,
struct drm_atomic_state *state)
{
struct vc4_hvs_state *hvs_new_state;
struct drm_crtc **sorted_crtcs;
struct drm_crtc *crtc;
-@@ -897,6 +914,9 @@ static int vc4_pv_muxing_atomic_check(struct drm_device *dev,
+@@ -897,6 +914,9 @@ static int vc4_pv_muxing_atomic_check(st
unsigned int i;
int ret;
hvs_new_state = vc4_hvs_get_global_state(state);
if (IS_ERR(hvs_new_state))
return PTR_ERR(hvs_new_state);
-diff --git a/drivers/gpu/drm/vc4/vc_image_types.h b/drivers/gpu/drm/vc4/vc_image_types.h
-new file mode 100644
-index 000000000000..e8d2b4b162f7
--- /dev/null
+++ b/drivers/gpu/drm/vc4/vc_image_types.h
@@ -0,0 +1,175 @@
+ /* Rec 2020 */
+ VC_IMAGE_YUVINFO_CSC_REC_2020 = 9,
+};
---
-2.54.0
-
drivers/gpu/drm/vc4/tests/vc4_mock.c | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/tests/vc4_mock.c b/drivers/gpu/drm/vc4/tests/vc4_mock.c
-index e276a957b01c..cbcf8edc831f 100644
--- a/drivers/gpu/drm/vc4/tests/vc4_mock.c
+++ b/drivers/gpu/drm/vc4/tests/vc4_mock.c
-@@ -157,13 +157,27 @@ KUNIT_DEFINE_ACTION_WRAPPER(kunit_action_drm_dev_unregister,
+@@ -157,13 +157,27 @@ KUNIT_DEFINE_ACTION_WRAPPER(kunit_action
static struct vc4_dev *__mock_device(struct kunit *test, enum vc4_gen gen)
{
dev = drm_kunit_helper_alloc_device(test);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, dev);
---
-2.54.0
-
drivers/gpu/drm/vc4/tests/vc4_test_pv_muxing.c | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/tests/vc4_mock.h b/drivers/gpu/drm/vc4/tests/vc4_mock.h
-index 002b6218960c..8b150a065e1c 100644
--- a/drivers/gpu/drm/vc4/tests/vc4_mock.h
+++ b/drivers/gpu/drm/vc4/tests/vc4_mock.h
@@ -7,9 +7,9 @@
struct drm_crtc *crtc;
KUNIT_ASSERT_EQ(test, hweight32(encoder->possible_crtcs), 1);
-diff --git a/drivers/gpu/drm/vc4/tests/vc4_mock_output.c b/drivers/gpu/drm/vc4/tests/vc4_mock_output.c
-index 577d9a956369..ff2168895749 100644
--- a/drivers/gpu/drm/vc4/tests/vc4_mock_output.c
+++ b/drivers/gpu/drm/vc4/tests/vc4_mock_output.c
-@@ -91,7 +91,7 @@ int vc4_mock_atomic_add_output(struct kunit *test,
+@@ -91,7 +91,7 @@ int vc4_mock_atomic_add_output(struct ku
if (!encoder)
return -ENODEV;
if (!crtc)
return -ENODEV;
-@@ -148,7 +148,7 @@ int vc4_mock_atomic_del_output(struct kunit *test,
+@@ -148,7 +148,7 @@ int vc4_mock_atomic_del_output(struct ku
if (!encoder)
return -ENODEV;
if (!crtc)
return -ENODEV;
-diff --git a/drivers/gpu/drm/vc4/tests/vc4_test_pv_muxing.c b/drivers/gpu/drm/vc4/tests/vc4_test_pv_muxing.c
-index d1f694029169..cfcab3dc392e 100644
--- a/drivers/gpu/drm/vc4/tests/vc4_test_pv_muxing.c
+++ b/drivers/gpu/drm/vc4/tests/vc4_test_pv_muxing.c
-@@ -130,7 +130,7 @@ get_vc4_crtc_state_for_encoder(struct kunit *test,
+@@ -130,7 +130,7 @@ get_vc4_crtc_state_for_encoder(struct ku
encoder = vc4_find_encoder_by_type(drm, type);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, encoder);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, crtc);
new_crtc_state = drm_atomic_get_new_crtc_state(state, crtc);
---
-2.54.0
-
.../gpu/drm/vc4/tests/vc4_test_pv_muxing.c | 53 ++++++++++---------
3 files changed, 38 insertions(+), 31 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/tests/vc4_mock.h b/drivers/gpu/drm/vc4/tests/vc4_mock.h
-index 8b150a065e1c..c8652c84d502 100644
--- a/drivers/gpu/drm/vc4/tests/vc4_mock.h
+++ b/drivers/gpu/drm/vc4/tests/vc4_mock.h
-@@ -51,9 +51,10 @@ struct vc4_dummy_output *vc4_dummy_output(struct kunit *test,
+@@ -51,9 +51,10 @@ struct vc4_dummy_output *vc4_dummy_outpu
struct vc4_dev *vc4_mock_device(struct kunit *test);
struct vc4_dev *vc5_mock_device(struct kunit *test);
int vc4_mock_atomic_del_output(struct kunit *test,
struct drm_atomic_state *state,
enum vc4_encoder_type type);
-diff --git a/drivers/gpu/drm/vc4/tests/vc4_mock_output.c b/drivers/gpu/drm/vc4/tests/vc4_mock_output.c
-index ff2168895749..a00a0cb44fbe 100644
--- a/drivers/gpu/drm/vc4/tests/vc4_mock_output.c
+++ b/drivers/gpu/drm/vc4/tests/vc4_mock_output.c
-@@ -74,9 +74,10 @@ static const struct drm_display_mode default_mode = {
+@@ -74,9 +74,10 @@ static const struct drm_display_mode def
* EDEADLK, the entire atomic sequence must be restarted. All other
* errors are fatal.
*/
{
struct drm_device *drm = state->dev;
struct drm_connector_state *conn_state;
-@@ -115,7 +116,7 @@ int vc4_mock_atomic_add_output(struct kunit *test,
+@@ -115,7 +116,7 @@ int vc4_mock_atomic_add_output(struct ku
crtc_state->active = true;
}
/**
-diff --git a/drivers/gpu/drm/vc4/tests/vc4_test_pv_muxing.c b/drivers/gpu/drm/vc4/tests/vc4_test_pv_muxing.c
-index cfcab3dc392e..5e0f8af75fe0 100644
--- a/drivers/gpu/drm/vc4/tests/vc4_test_pv_muxing.c
+++ b/drivers/gpu/drm/vc4/tests/vc4_test_pv_muxing.c
-@@ -692,16 +692,17 @@ static void drm_vc4_test_pv_muxing(struct kunit *test)
+@@ -692,16 +692,17 @@ retry:
state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
for (i = 0; i < params->nencoders; i++) {
}
ret = drm_atomic_check_only(state);
-@@ -748,16 +749,17 @@ static void drm_vc4_test_pv_muxing_invalid(struct kunit *test)
+@@ -748,16 +749,17 @@ retry:
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
for (i = 0; i < params->nencoders; i++) {
}
ret = drm_atomic_check_only(state);
-@@ -827,6 +829,7 @@ static void drm_test_vc5_pv_muxing_bugs_subsequent_crtc_enable(struct kunit *tes
+@@ -827,6 +829,7 @@ static void drm_test_vc5_pv_muxing_bugs_
{
struct drm_modeset_acquire_ctx ctx;
struct drm_atomic_state *state;
struct vc4_crtc_state *new_vc4_crtc_state;
struct vc4_hvs_state *new_hvs_state;
unsigned int hdmi0_channel;
-@@ -845,14 +848,14 @@ static void drm_test_vc5_pv_muxing_bugs_subsequent_crtc_enable(struct kunit *tes
+@@ -845,14 +848,14 @@ retry_first:
state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
ret = drm_atomic_check_only(state);
if (ret == -EDEADLK) {
-@@ -881,14 +884,14 @@ static void drm_test_vc5_pv_muxing_bugs_subsequent_crtc_enable(struct kunit *tes
+@@ -881,14 +884,14 @@ retry_second:
state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
ret = drm_atomic_check_only(state);
if (ret == -EDEADLK) {
-@@ -927,6 +930,7 @@ static void drm_test_vc5_pv_muxing_bugs_stable_fifo(struct kunit *test)
+@@ -927,6 +930,7 @@ static void drm_test_vc5_pv_muxing_bugs_
{
struct drm_modeset_acquire_ctx ctx;
struct drm_atomic_state *state;
struct vc4_crtc_state *new_vc4_crtc_state;
struct vc4_hvs_state *new_hvs_state;
unsigned int old_hdmi0_channel;
-@@ -945,23 +949,23 @@ static void drm_test_vc5_pv_muxing_bugs_stable_fifo(struct kunit *test)
+@@ -945,23 +949,23 @@ retry_first:
state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
ret = drm_atomic_check_only(state);
if (ret == -EDEADLK) {
-@@ -1056,6 +1060,7 @@ drm_test_vc5_pv_muxing_bugs_subsequent_crtc_enable_too_many_crtc_state(struct ku
+@@ -1056,6 +1060,7 @@ drm_test_vc5_pv_muxing_bugs_subsequent_c
{
struct drm_modeset_acquire_ctx ctx;
struct drm_atomic_state *state;
struct vc4_crtc_state *new_vc4_crtc_state;
struct drm_device *drm;
struct vc4_dev *vc4;
-@@ -1071,14 +1076,14 @@ drm_test_vc5_pv_muxing_bugs_subsequent_crtc_enable_too_many_crtc_state(struct ku
+@@ -1071,14 +1076,14 @@ retry_first:
state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
ret = drm_atomic_check_only(state);
if (ret == -EDEADLK) {
-@@ -1095,14 +1100,14 @@ drm_test_vc5_pv_muxing_bugs_subsequent_crtc_enable_too_many_crtc_state(struct ku
+@@ -1095,14 +1100,14 @@ retry_second:
state = drm_kunit_helper_atomic_state_alloc(test, drm, &ctx);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, state);
ret = drm_atomic_check_only(state);
if (ret == -EDEADLK) {
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_txp.c | 4 ++--
4 files changed, 34 insertions(+), 2 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/tests/vc4_mock.c b/drivers/gpu/drm/vc4/tests/vc4_mock.c
-index cbcf8edc831f..be427069f165 100644
--- a/drivers/gpu/drm/vc4/tests/vc4_mock.c
+++ b/drivers/gpu/drm/vc4/tests/vc4_mock.c
-@@ -106,6 +106,26 @@ static const struct vc4_mock_desc vc5_mock =
+@@ -106,6 +106,26 @@ static const struct vc4_mock_desc vc5_mo
DRM_MODE_CONNECTOR_HDMIA)),
);
static int __build_one_pipe(struct kunit *test, struct drm_device *drm,
const struct vc4_mock_pipe_desc *pipe)
{
-@@ -173,6 +193,10 @@ static struct vc4_dev *__mock_device(struct kunit *test, enum vc4_gen gen)
+@@ -173,6 +193,10 @@ static struct vc4_dev *__mock_device(str
drv = &vc5_drm_driver;
desc = &vc5_mock;
break;
default:
return NULL;
-@@ -219,3 +243,8 @@ struct vc4_dev *vc5_mock_device(struct kunit *test)
+@@ -219,3 +243,8 @@ struct vc4_dev *vc5_mock_device(struct k
{
return __mock_device(test, VC4_GEN_5);
}
+{
+ return __mock_device(test, VC4_GEN_6_C);
+}
-diff --git a/drivers/gpu/drm/vc4/tests/vc4_mock.h b/drivers/gpu/drm/vc4/tests/vc4_mock.h
-index c8652c84d502..30ddfb6a2a59 100644
--- a/drivers/gpu/drm/vc4/tests/vc4_mock.h
+++ b/drivers/gpu/drm/vc4/tests/vc4_mock.h
-@@ -50,6 +50,7 @@ struct vc4_dummy_output *vc4_dummy_output(struct kunit *test,
+@@ -50,6 +50,7 @@ struct vc4_dummy_output *vc4_dummy_outpu
struct vc4_dev *vc4_mock_device(struct kunit *test);
struct vc4_dev *vc5_mock_device(struct kunit *test);
struct vc4_dummy_output *
vc4_mock_atomic_add_output(struct kunit *test,
-diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h
-index 30eb4f6a2396..7892077ce83a 100644
--- a/drivers/gpu/drm/vc4/vc4_drv.h
+++ b/drivers/gpu/drm/vc4/vc4_drv.h
@@ -541,6 +541,8 @@ struct vc4_txp_data {
extern const struct vc4_txp_data bcm2835_txp_data;
struct vc4_pv_data {
-diff --git a/drivers/gpu/drm/vc4/vc4_txp.c b/drivers/gpu/drm/vc4/vc4_txp.c
-index a14205d40cb7..fae31e56346d 100644
--- a/drivers/gpu/drm/vc4/vc4_txp.c
+++ b/drivers/gpu/drm/vc4/vc4_txp.c
-@@ -526,7 +526,7 @@ static irqreturn_t vc4_txp_interrupt(int irq, void *data)
+@@ -526,7 +526,7 @@ static irqreturn_t vc4_txp_interrupt(int
return IRQ_HANDLED;
}
.base = {
.name = "mop",
.debugfs_name = "mop_regs",
-@@ -540,7 +540,7 @@ static const struct vc4_txp_data bcm2712_mop_data = {
+@@ -540,7 +540,7 @@ static const struct vc4_txp_data bcm2712
.supports_40bit_addresses = true,
};
.base = {
.name = "moplet",
.debugfs_name = "moplet_regs",
---
-2.54.0
-
.../gpu/drm/vc4/tests/vc4_test_pv_muxing.c | 81 +++++++++++++++++++
1 file changed, 81 insertions(+)
-diff --git a/drivers/gpu/drm/vc4/tests/vc4_test_pv_muxing.c b/drivers/gpu/drm/vc4/tests/vc4_test_pv_muxing.c
-index 5e0f8af75fe0..69a5e68195cc 100644
--- a/drivers/gpu/drm/vc4/tests/vc4_test_pv_muxing.c
+++ b/drivers/gpu/drm/vc4/tests/vc4_test_pv_muxing.c
-@@ -103,6 +103,13 @@ static const struct encoder_constraint vc5_encoder_constraints[] = {
+@@ -103,6 +103,13 @@ static const struct encoder_constraint v
ENCODER_CONSTRAINT(VC4_ENCODER_TYPE_HDMI1, 0, 1, 2),
};
static bool check_vc4_encoder_constraints(enum vc4_encoder_type type, unsigned int channel)
{
return __check_encoder_constraints(vc4_encoder_constraints,
-@@ -117,6 +124,13 @@ static bool check_vc5_encoder_constraints(enum vc4_encoder_type type, unsigned i
+@@ -117,6 +124,13 @@ static bool check_vc5_encoder_constraint
type, channel);
}
static struct vc4_crtc_state *
get_vc4_crtc_state_for_encoder(struct kunit *test,
const struct drm_atomic_state *state,
-@@ -194,6 +208,9 @@ static void vc4_test_pv_muxing_desc(const struct pv_muxing_param *t, char *desc)
+@@ -194,6 +208,9 @@ static void vc4_test_pv_muxing_desc(cons
#define VC5_PV_MUXING_TEST(_name, ...) \
PV_MUXING_TEST(_name, vc5_mock_device, check_vc5_encoder_constraints, __VA_ARGS__)
static const struct pv_muxing_param vc4_test_pv_muxing_params[] = {
VC4_PV_MUXING_TEST("1 output: DSI0",
VC4_ENCODER_TYPE_DSI0),
-@@ -672,6 +689,54 @@ KUNIT_ARRAY_PARAM(vc5_test_pv_muxing_invalid,
+@@ -672,6 +689,54 @@ KUNIT_ARRAY_PARAM(vc5_test_pv_muxing_inv
vc5_test_pv_muxing_invalid_params,
vc4_test_pv_muxing_desc);
static void drm_vc4_test_pv_muxing(struct kunit *test)
{
const struct pv_muxing_param *params = test->param_value;
-@@ -820,6 +885,21 @@ static struct kunit_suite vc5_pv_muxing_test_suite = {
+@@ -820,6 +885,21 @@ static struct kunit_suite vc5_pv_muxing_
.test_cases = vc5_pv_muxing_tests,
};
/* See
* https://lore.kernel.org/all/3e113525-aa89-b1e2-56b7-ca55bd41d057@samsung.com/
* and
-@@ -1141,5 +1221,6 @@ static struct kunit_suite vc5_pv_muxing_bugs_test_suite = {
+@@ -1141,5 +1221,6 @@ static struct kunit_suite vc5_pv_muxing_
kunit_test_suites(
&vc4_pv_muxing_test_suite,
&vc5_pv_muxing_test_suite,
+ &vc6_pv_muxing_test_suite,
&vc5_pv_muxing_bugs_test_suite
);
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_plane.c | 12 ++++++------
3 files changed, 26 insertions(+), 6 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/tests/vc4_mock_plane.c b/drivers/gpu/drm/vc4/tests/vc4_mock_plane.c
-index 14357db82238..65e255bd9bd7 100644
--- a/drivers/gpu/drm/vc4/tests/vc4_mock_plane.c
+++ b/drivers/gpu/drm/vc4/tests/vc4_mock_plane.c
@@ -7,6 +7,20 @@
struct drm_plane *vc4_dummy_plane(struct kunit *test, struct drm_device *drm,
enum drm_plane_type type)
{
-diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h
-index 7892077ce83a..882ebeccd299 100644
--- a/drivers/gpu/drm/vc4/vc4_drv.h
+++ b/drivers/gpu/drm/vc4/vc4_drv.h
-@@ -1076,6 +1076,12 @@ int vc4_kms_load(struct drm_device *dev);
+@@ -1076,6 +1076,12 @@ int vc4_kms_load(struct drm_device *dev)
struct drm_plane *vc4_plane_init(struct drm_device *dev,
enum drm_plane_type type,
uint32_t possible_crtcs);
int vc4_plane_create_additional_planes(struct drm_device *dev);
u32 vc4_plane_write_dlist(struct drm_plane *plane, u32 __iomem *dlist);
u32 vc4_plane_dlist_size(const struct drm_plane_state *state);
-diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
-index d23a33e0c00b..37c9f5ff7b00 100644
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -280,7 +280,7 @@ static bool plane_enabled(struct drm_plane_state *state)
+@@ -280,7 +280,7 @@ static bool plane_enabled(struct drm_pla
return state->fb && !WARN_ON(!state->crtc);
}
{
struct vc4_dev *vc4 = to_vc4_dev(plane->dev);
struct vc4_hvs *hvs = vc4->hvs;
-@@ -334,8 +334,8 @@ static void vc4_plane_release_upm_ida(struct vc4_hvs *hvs, unsigned int upm_hand
+@@ -334,8 +334,8 @@ static void vc4_plane_release_upm_ida(st
ida_free(&hvs->upm_handles, upm_handle);
}
{
struct vc4_dev *vc4 = to_vc4_dev(plane->dev);
struct vc4_hvs *hvs = vc4->hvs;
-@@ -368,7 +368,7 @@ static void vc4_plane_destroy_state(struct drm_plane *plane,
+@@ -368,7 +368,7 @@ static void vc4_plane_destroy_state(stru
}
/* Called during init to allocate the plane's atomic state. */
{
struct vc4_plane_state *vc4_state;
-@@ -2162,8 +2162,8 @@ static int vc6_plane_mode_set(struct drm_plane *plane,
+@@ -2162,8 +2162,8 @@ static int vc6_plane_mode_set(struct drm
* compute the dlist here and have all active plane dlists get updated
* in the CRTC's flush.
*/
{
struct vc4_dev *vc4 = to_vc4_dev(plane->dev);
struct drm_plane_state *new_plane_state = drm_atomic_get_new_plane_state(state,
---
-2.54.0
-
drivers/gpu/drm/vc4/tests/vc4_mock.h | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
-diff --git a/drivers/gpu/drm/vc4/tests/vc4_mock.h b/drivers/gpu/drm/vc4/tests/vc4_mock.h
-index 30ddfb6a2a59..1e87e3a0ed7e 100644
--- a/drivers/gpu/drm/vc4/tests/vc4_mock.h
+++ b/drivers/gpu/drm/vc4/tests/vc4_mock.h
-@@ -21,6 +21,24 @@ struct drm_crtc *vc4_find_crtc_for_encoder(struct kunit *test,
+@@ -21,6 +21,24 @@ struct drm_crtc *vc4_find_crtc_for_encod
return NULL;
}
struct drm_plane *vc4_dummy_plane(struct kunit *test, struct drm_device *drm,
enum drm_plane_type type);
---
-2.54.0
-
drivers/gpu/drm/vc4/tests/vc4_mock_plane.c | 22 ++++++++++++++++++++++
2 files changed, 25 insertions(+)
-diff --git a/drivers/gpu/drm/vc4/tests/vc4_mock.h b/drivers/gpu/drm/vc4/tests/vc4_mock.h
-index 1e87e3a0ed7e..1d84dd1adedf 100644
--- a/drivers/gpu/drm/vc4/tests/vc4_mock.h
+++ b/drivers/gpu/drm/vc4/tests/vc4_mock.h
@@ -39,6 +39,9 @@ struct vc4_dummy_plane {
struct drm_plane *vc4_dummy_plane(struct kunit *test, struct drm_device *drm,
enum drm_plane_type type);
-diff --git a/drivers/gpu/drm/vc4/tests/vc4_mock_plane.c b/drivers/gpu/drm/vc4/tests/vc4_mock_plane.c
-index 65e255bd9bd7..bf4a56ba63c4 100644
--- a/drivers/gpu/drm/vc4/tests/vc4_mock_plane.c
+++ b/drivers/gpu/drm/vc4/tests/vc4_mock_plane.c
@@ -1,6 +1,7 @@
#include <drm/drm_plane.h>
#include <kunit/test.h>
-@@ -37,3 +38,24 @@ struct drm_plane *vc4_dummy_plane(struct kunit *test, struct drm_device *drm,
+@@ -37,3 +38,24 @@ struct drm_plane *vc4_dummy_plane(struct
return plane;
}
+
+ return plane;
+}
---
-2.54.0
-
drivers/gpu/drm/vc4/tests/vc4_mock_plane.c | 3 +++
1 file changed, 3 insertions(+)
-diff --git a/drivers/gpu/drm/vc4/tests/vc4_mock_plane.c b/drivers/gpu/drm/vc4/tests/vc4_mock_plane.c
-index bf4a56ba63c4..e0babdc58302 100644
--- a/drivers/gpu/drm/vc4/tests/vc4_mock_plane.c
+++ b/drivers/gpu/drm/vc4/tests/vc4_mock_plane.c
-@@ -19,7 +19,10 @@ static const struct drm_plane_funcs vc4_dummy_plane_funcs = {
+@@ -19,7 +19,10 @@ static const struct drm_plane_funcs vc4_
};
static const uint32_t vc4_dummy_plane_formats[] = {
};
struct drm_plane *vc4_dummy_plane(struct kunit *test, struct drm_device *drm,
---
-2.54.0
-
3 files changed, 310 insertions(+), 2 deletions(-)
create mode 100644 drivers/gpu/drm/vc4/tests/vc4_test_lbm_size.c
-diff --git a/drivers/gpu/drm/vc4/Makefile b/drivers/gpu/drm/vc4/Makefile
-index 1c0ce156b0aa..823ffbe0b78d 100644
--- a/drivers/gpu/drm/vc4/Makefile
+++ b/drivers/gpu/drm/vc4/Makefile
@@ -31,7 +31,8 @@ vc4-$(CONFIG_DRM_VC4_KUNIT_TEST) += \
vc4-$(CONFIG_DEBUG_FS) += vc4_debugfs.o
-diff --git a/drivers/gpu/drm/vc4/tests/vc4_test_lbm_size.c b/drivers/gpu/drm/vc4/tests/vc4_test_lbm_size.c
-new file mode 100644
-index 000000000000..c1479cf7515f
--- /dev/null
+++ b/drivers/gpu/drm/vc4/tests/vc4_test_lbm_size.c
@@ -0,0 +1,308 @@
+};
+
+kunit_test_suite(vc4_lbm_size_test_suite);
-diff --git a/drivers/gpu/drm/vc4/tests/vc4_test_pv_muxing.c b/drivers/gpu/drm/vc4/tests/vc4_test_pv_muxing.c
-index 69a5e68195cc..7fcb94370d94 100644
--- a/drivers/gpu/drm/vc4/tests/vc4_test_pv_muxing.c
+++ b/drivers/gpu/drm/vc4/tests/vc4_test_pv_muxing.c
-@@ -896,7 +896,6 @@ static struct kunit_case vc6_pv_muxing_tests[] = {
+@@ -896,7 +896,6 @@ static struct kunit_case vc6_pv_muxing_t
static struct kunit_suite vc6_pv_muxing_test_suite = {
.name = "vc6-pv-muxing-combinations",
.init = vc4_pv_muxing_test_init,
.test_cases = vc6_pv_muxing_tests,
};
---
-2.54.0
-
.../gpu/drm/vc4/tests/vc4_test_pv_muxing.c | 24 +++++++++++++++----
1 file changed, 20 insertions(+), 4 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/tests/vc4_test_pv_muxing.c b/drivers/gpu/drm/vc4/tests/vc4_test_pv_muxing.c
-index 7fcb94370d94..ed645d83b852 100644
--- a/drivers/gpu/drm/vc4/tests/vc4_test_pv_muxing.c
+++ b/drivers/gpu/drm/vc4/tests/vc4_test_pv_muxing.c
-@@ -90,7 +90,7 @@ static const struct encoder_constraint vc4_encoder_constraints[] = {
+@@ -90,7 +90,7 @@ static const struct encoder_constraint v
ENCODER_CONSTRAINT(VC4_ENCODER_TYPE_HDMI0, 1),
ENCODER_CONSTRAINT(VC4_ENCODER_TYPE_VEC, 1),
ENCODER_CONSTRAINT(VC4_ENCODER_TYPE_TXP0, 2),
};
static const struct encoder_constraint vc5_encoder_constraints[] = {
-@@ -257,6 +257,9 @@ static const struct pv_muxing_param vc4_test_pv_muxing_params[] = {
+@@ -257,6 +257,9 @@ static const struct pv_muxing_param vc4_
VC4_PV_MUXING_TEST("2 outputs: VEC, DSI1",
VC4_ENCODER_TYPE_VEC,
VC4_ENCODER_TYPE_DSI1),
VC4_PV_MUXING_TEST("2 outputs: VEC, TXP",
VC4_ENCODER_TYPE_VEC,
VC4_ENCODER_TYPE_TXP0),
-@@ -292,6 +295,22 @@ static const struct pv_muxing_param vc4_test_pv_muxing_params[] = {
+@@ -292,6 +295,22 @@ static const struct pv_muxing_param vc4_
VC4_ENCODER_TYPE_DPI,
VC4_ENCODER_TYPE_VEC,
VC4_ENCODER_TYPE_TXP0),
};
KUNIT_ARRAY_PARAM(vc4_test_pv_muxing,
-@@ -302,9 +321,6 @@ static const struct pv_muxing_param vc4_test_pv_muxing_invalid_params[] = {
+@@ -302,9 +321,6 @@ static const struct pv_muxing_param vc4_
VC4_PV_MUXING_TEST("DPI/DSI0 Conflict",
VC4_ENCODER_TYPE_DPI,
VC4_ENCODER_TYPE_DSI0),
VC4_PV_MUXING_TEST("HDMI0/VEC Conflict",
VC4_ENCODER_TYPE_HDMI0,
VC4_ENCODER_TYPE_VEC),
---
-2.54.0
-
drivers/gpu/drm/vc4/tests/vc4_test_lbm_size.c | 24 ++++++++++---------
1 file changed, 13 insertions(+), 11 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/tests/vc4_test_lbm_size.c b/drivers/gpu/drm/vc4/tests/vc4_test_lbm_size.c
-index c1479cf7515f..7d1956c00e78 100644
--- a/drivers/gpu/drm/vc4/tests/vc4_test_lbm_size.c
+++ b/drivers/gpu/drm/vc4/tests/vc4_test_lbm_size.c
@@ -23,7 +23,6 @@ struct vc4_lbm_size_priv {
};
struct vc4_lbm_size_param {
-@@ -181,16 +180,25 @@ static void drm_vc4_test_vc4_lbm_size(struct kunit *test)
+@@ -181,16 +180,25 @@ static void drm_vc4_test_vc4_lbm_size(st
const struct vc4_lbm_size_priv *priv = test->priv;
const struct drm_format_info *info;
struct drm_mode_fb_cmd2 fb_req = { };
info = drm_format_info(params->fourcc);
KUNIT_ASSERT_NOT_NULL(test, info);
-@@ -263,6 +271,9 @@ static void drm_vc4_test_vc4_lbm_size(struct kunit *test)
+@@ -263,6 +271,9 @@ static void drm_vc4_test_vc4_lbm_size(st
for (i = 0; i < info->num_planes; i++)
drm_mode_destroy_dumb(state->dev, fb_req.handles[i], priv->file);
}
static struct kunit_case vc4_lbm_size_tests[] = {
-@@ -273,9 +284,7 @@ static struct kunit_case vc4_lbm_size_tests[] = {
+@@ -273,9 +284,7 @@ static struct kunit_case vc4_lbm_size_te
static int vc4_lbm_size_test_init(struct kunit *test)
{
struct vc4_dev *vc4;
priv = kunit_kzalloc(test, sizeof(*priv), GFP_KERNEL);
-@@ -289,13 +298,6 @@ static int vc4_lbm_size_test_init(struct kunit *test)
+@@ -289,13 +298,6 @@ static int vc4_lbm_size_test_init(struct
priv->file = drm_file_alloc(priv->vc4->base.primary);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, priv->file);
return 0;
}
---
-2.54.0
-
drivers/gpu/drm/vc4/tests/vc4_mock_plane.c | 8 +++++---
2 files changed, 10 insertions(+), 10 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/tests/vc4_mock.h b/drivers/gpu/drm/vc4/tests/vc4_mock.h
-index 1d84dd1adedf..37f6db2e4ff8 100644
--- a/drivers/gpu/drm/vc4/tests/vc4_mock.h
+++ b/drivers/gpu/drm/vc4/tests/vc4_mock.h
-@@ -35,16 +35,14 @@ struct drm_plane *vc4_mock_find_plane_for_crtc(struct kunit *test,
+@@ -35,16 +35,14 @@ struct drm_plane *vc4_mock_find_plane_fo
return NULL;
}
struct vc4_dummy_crtc {
struct vc4_crtc crtc;
};
-diff --git a/drivers/gpu/drm/vc4/tests/vc4_mock_plane.c b/drivers/gpu/drm/vc4/tests/vc4_mock_plane.c
-index e0babdc58302..32e2a57de378 100644
--- a/drivers/gpu/drm/vc4/tests/vc4_mock_plane.c
+++ b/drivers/gpu/drm/vc4/tests/vc4_mock_plane.c
@@ -1,5 +1,6 @@
#include <drm/drm_kunit_helpers.h>
#include <drm/drm_atomic_uapi.h>
#include <drm/drm_plane.h>
-@@ -33,9 +34,10 @@ struct drm_plane *vc4_dummy_plane(struct kunit *test, struct drm_device *drm,
+@@ -33,9 +34,10 @@ struct drm_plane *vc4_dummy_plane(struct
KUNIT_ASSERT_EQ(test, type, DRM_PLANE_TYPE_PRIMARY);
plane = drm_kunit_helper_create_primary_plane(test, drm,
NULL);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, plane);
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_plane.c | 99 +++++++++++++++----
4 files changed, 128 insertions(+), 20 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/tests/vc4_test_lbm_size.c b/drivers/gpu/drm/vc4/tests/vc4_test_lbm_size.c
-index 7d1956c00e78..5e6214836f19 100644
--- a/drivers/gpu/drm/vc4/tests/vc4_test_lbm_size.c
+++ b/drivers/gpu/drm/vc4/tests/vc4_test_lbm_size.c
-@@ -189,6 +189,7 @@ static void drm_vc4_test_vc4_lbm_size(struct kunit *test)
+@@ -189,6 +189,7 @@ static void drm_vc4_test_vc4_lbm_size(st
struct drm_plane *plane;
struct drm_device *drm;
struct drm_crtc *crtc;
unsigned int i;
int ret;
-@@ -256,7 +257,12 @@ static void drm_vc4_test_vc4_lbm_size(struct kunit *test)
+@@ -256,7 +257,12 @@ static void drm_vc4_test_vc4_lbm_size(st
ret = drm_atomic_check_only(state);
KUNIT_ASSERT_EQ(test, ret, 0);
for (i = 0; i < 2; i++) {
KUNIT_EXPECT_EQ(test,
-diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h
-index 882ebeccd299..a9f3b0dba71d 100644
--- a/drivers/gpu/drm/vc4/vc4_drv.h
+++ b/drivers/gpu/drm/vc4/vc4_drv.h
@@ -301,6 +301,19 @@ struct vc4_v3d {
/* The Unified Pre-Fetcher Handle */
unsigned int upm_handle[DRM_FORMAT_MAX_PLANES];
-diff --git a/drivers/gpu/drm/vc4/vc4_hvs.c b/drivers/gpu/drm/vc4/vc4_hvs.c
-index 82d9e0484d61..59ad3264ee87 100644
--- a/drivers/gpu/drm/vc4/vc4_hvs.c
+++ b/drivers/gpu/drm/vc4/vc4_hvs.c
-@@ -379,6 +379,27 @@ static int vc4_hvs_debugfs_dlist_allocs(struct seq_file *m, void *data)
+@@ -379,6 +379,27 @@ static int vc4_hvs_debugfs_dlist_allocs(
return 0;
}
/* The filter kernel is composed of dwords each containing 3 9-bit
* signed integers packed next to each other.
*/
-@@ -1511,6 +1532,8 @@ int vc4_hvs_debugfs_init(struct drm_minor *minor)
+@@ -1511,6 +1532,8 @@ int vc4_hvs_debugfs_init(struct drm_mino
drm_debugfs_add_file(drm, "hvs_dlists", vc4_hvs_debugfs_dlist, NULL);
}
drm_debugfs_add_file(drm, "hvs_underrun", vc4_hvs_debugfs_underrun, NULL);
drm_debugfs_add_file(drm, "hvs_dlist_allocs", vc4_hvs_debugfs_dlist_allocs, NULL);
-@@ -1627,6 +1650,7 @@ struct vc4_hvs *__vc4_hvs_alloc(struct vc4_dev *vc4,
+@@ -1627,6 +1650,7 @@ struct vc4_hvs *__vc4_hvs_alloc(struct v
}
drm_mm_init(&hvs->lbm_mm, 0, lbm_size);
if (vc4->gen >= VC4_GEN_6_C) {
ida_init(&hvs->upm_handles);
-diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
-index 37c9f5ff7b00..1f68cf0ab493 100644
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -294,12 +294,12 @@ struct drm_plane_state *vc4_plane_duplicate_state(struct drm_plane *plane)
+@@ -294,12 +294,12 @@ struct drm_plane_state *vc4_plane_duplic
if (!vc4_state)
return NULL;
vc4_state->dlist_initialized = 0;
-@@ -319,6 +319,21 @@ struct drm_plane_state *vc4_plane_duplicate_state(struct drm_plane *plane)
+@@ -319,6 +319,21 @@ struct drm_plane_state *vc4_plane_duplic
return &vc4_state->base;
}
static void vc4_plane_release_upm_ida(struct vc4_hvs *hvs, unsigned int upm_handle)
{
struct vc4_upm_refcounts *refcount = &hvs->upm_refcounts[upm_handle];
-@@ -342,12 +357,13 @@ void vc4_plane_destroy_state(struct drm_plane *plane,
+@@ -342,12 +357,13 @@ void vc4_plane_destroy_state(struct drm_
struct vc4_plane_state *vc4_state = to_vc4_plane_state(state);
unsigned int i;
}
for (i = 0; i < DRM_FORMAT_MAX_PLANES; i++) {
-@@ -942,10 +958,14 @@ static int vc4_plane_allocate_lbm(struct drm_plane_state *state)
+@@ -942,10 +958,14 @@ static int vc4_plane_allocate_lbm(struct
{
struct drm_device *drm = state->plane->dev;
struct vc4_dev *vc4 = to_vc4_dev(drm);
lbm_size = vc4_lbm_size(state);
if (!lbm_size)
-@@ -969,29 +989,71 @@ static int vc4_plane_allocate_lbm(struct drm_plane_state *state)
+@@ -969,29 +989,71 @@ static int vc4_plane_allocate_lbm(struct
/* Allocate the LBM memory that the HVS will use for temporary
* storage due to our scaling/format conversion.
*/
static int vc6_plane_allocate_upm(struct drm_plane_state *state)
{
const struct drm_format_info *info = state->fb->format;
-@@ -2177,9 +2239,10 @@ int vc4_plane_atomic_check(struct drm_plane *plane,
+@@ -2177,9 +2239,10 @@ int vc4_plane_atomic_check(struct drm_pl
struct drm_plane_state *old_plane_state =
drm_atomic_get_old_plane_state(state, plane);
}
return 0;
}
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_hdmi.c | 8 ++++++++
1 file changed, 8 insertions(+)
-diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
-index 93c0b067a9c6..6dea2490a540 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -365,6 +365,12 @@ static void vc4_hdmi_handle_hotplug(struct vc4_hdmi *vc4_hdmi,
- struct drm_connector *connector = &vc4_hdmi->connector;
+@@ -366,6 +366,12 @@ static void vc4_hdmi_handle_hotplug(stru
int ret;
-+ /*
+ /*
+ * Needs to be called for both connects and disconnects for HDMI
+ * audio hotplug to work correctly.
+ */
+ drm_atomic_helper_connector_hdmi_hotplug(connector, status);
+
- /*
++ /*
* NOTE: This function should really be called with vc4_hdmi->mutex
* held, but doing so results in reentrancy issues since
-@@ -2344,6 +2350,8 @@ static int vc4_hdmi_audio_init(struct vc4_hdmi *vc4_hdmi)
+ * cec_s_phys_addr() might call .adap_enable, which leads to that
+@@ -2344,6 +2350,8 @@ static int vc4_hdmi_audio_init(struct vc
dai_link->platforms->name = dev_name(dev);
dai_link->init = vc4_hdmi_codec_init;
card->dai_link = dai_link;
card->num_links = 1;
card->name = vc4_hdmi->variant->card_name;
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_hdmi.c | 14 +++++---------
1 file changed, 5 insertions(+), 9 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
-index 6dea2490a540..3a1ff5cb9582 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -2236,7 +2236,7 @@ static int vc4_hdmi_audio_init(struct vc4_hdmi *vc4_hdmi)
+@@ -2236,7 +2236,7 @@ static int vc4_hdmi_audio_init(struct vc
struct snd_soc_dai_link *dai_link = &vc4_hdmi->audio.link;
struct snd_soc_card *card = &vc4_hdmi->audio.card;
struct device *dev = &vc4_hdmi->pdev->dev;
int index, len;
int ret;
-@@ -2272,22 +2272,18 @@ static int vc4_hdmi_audio_init(struct vc4_hdmi *vc4_hdmi)
+@@ -2272,22 +2272,18 @@ static int vc4_hdmi_audio_init(struct vc
}
/*
vc4_hdmi->audio.dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
vc4_hdmi->audio.dma_data.maxburst = 2;
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_kms.c | 29 +++++++++++++++--------------
2 files changed, 16 insertions(+), 15 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c
-index 5ee7bb927fd0..5ce7ad53e184 100644
--- a/drivers/gpu/drm/vc4/vc4_crtc.c
+++ b/drivers/gpu/drm/vc4/vc4_crtc.c
-@@ -1220,7 +1220,7 @@ const struct vc4_pv_data bcm2835_pv1_data = {
+@@ -1220,7 +1220,7 @@ const struct vc4_pv_data bcm2835_pv1_dat
.base = {
.name = "pixelvalve-1",
.debugfs_name = "crtc1_regs",
.hvs_output = 2,
},
.fifo_depth = 64,
-diff --git a/drivers/gpu/drm/vc4/vc4_kms.c b/drivers/gpu/drm/vc4/vc4_kms.c
-index 7efcdc1e8d18..2def516bb2b7 100644
--- a/drivers/gpu/drm/vc4/vc4_kms.c
+++ b/drivers/gpu/drm/vc4/vc4_kms.c
-@@ -224,12 +224,11 @@ static void vc4_hvs_pv_muxing_commit(struct vc4_dev *vc4,
+@@ -224,12 +224,11 @@ static void vc4_hvs_pv_muxing_commit(str
struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc);
struct vc4_crtc_state *vc4_state = to_vc4_crtc_state(crtc_state);
u32 dispctrl;
continue;
/*
-@@ -237,26 +236,28 @@ static void vc4_hvs_pv_muxing_commit(struct vc4_dev *vc4,
+@@ -237,26 +236,28 @@ static void vc4_hvs_pv_muxing_commit(str
* FIFO X'.
* SCALER_DISPCTRL_DSP3 = 3 means 'disable DSP 3'.
*
}
}
---
-2.54.0
-
drivers/gpu/drm/drm_edid.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
-diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
-index e2e85345aa9a..28069e586367 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
-@@ -6609,7 +6609,11 @@ static void drm_reset_display_info(struct drm_connector *connector)
+@@ -6609,7 +6609,11 @@ static void drm_reset_display_info(struc
info->height_mm = 0;
info->bpc = 0;
info->cea_rev = 0;
info->max_tmds_clock = 0;
info->dvi_dual = false;
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_hdmi.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
-index 3a1ff5cb9582..2e387c051e76 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -3229,7 +3229,7 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data)
+@@ -3235,7 +3235,7 @@ static int vc4_hdmi_bind(struct device *
vc4_hdmi->ddc = of_find_i2c_adapter_by_node(ddc_node);
of_node_put(ddc_node);
if (!vc4_hdmi->ddc) {
return -EPROBE_DEFER;
}
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_hvs.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_hvs.c b/drivers/gpu/drm/vc4/vc4_hvs.c
-index 59ad3264ee87..c8dfa2f426f8 100644
--- a/drivers/gpu/drm/vc4/vc4_hvs.c
+++ b/drivers/gpu/drm/vc4/vc4_hvs.c
-@@ -281,8 +281,8 @@ static int vc4_hvs_debugfs_dlist(struct seq_file *m, void *data)
+@@ -281,8 +281,8 @@ static int vc4_hvs_debugfs_dlist(struct
static int vc6_hvs_debugfs_dlist(struct seq_file *m, void *data)
{
struct vc4_dev *vc4 = to_vc4_dev(dev);
struct vc4_hvs *hvs = vc4->hvs;
struct drm_printer p = drm_seq_file_printer(m);
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_plane.c | 121 +++++++++++++++++---------------
1 file changed, 63 insertions(+), 58 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
-index 1f68cf0ab493..cb5d04763bd8 100644
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -1296,7 +1296,7 @@ static int vc4_plane_mode_set(struct drm_plane *plane,
+@@ -1296,7 +1296,7 @@ static int vc4_plane_mode_set(struct drm
u32 v_subsample = fb->format->vsub;
bool mix_plane_alpha;
bool covers_screen;
u32 tiling, src_x, src_y;
u32 width, height;
u32 hvs_format = format->hvs;
-@@ -1350,7 +1350,7 @@ static int vc4_plane_mode_set(struct drm_plane *plane,
+@@ -1350,7 +1350,7 @@ static int vc4_plane_mode_set(struct drm
switch (base_format_mod) {
case DRM_FORMAT_MOD_LINEAR:
tiling = SCALER_CTL0_TILING_LINEAR;
/* Adjust the base pointer to the first pixel to be scanned
* out.
-@@ -1402,23 +1402,23 @@ static int vc4_plane_mode_set(struct drm_plane *plane,
+@@ -1402,23 +1402,23 @@ static int vc4_plane_mode_set(struct drm
*/
if (rotation & DRM_MODE_REFLECT_Y) {
y_off = tile_h_mask - y_off;
offsets[0] += (tiles_w - tiles_l) << tile_size_shift;
offsets[0] -= (1 + !tile_y) << 10;
} else {
-@@ -1433,6 +1433,7 @@ static int vc4_plane_mode_set(struct drm_plane *plane,
+@@ -1433,6 +1433,7 @@ static int vc4_plane_mode_set(struct drm
case DRM_FORMAT_MOD_BROADCOM_SAND128:
case DRM_FORMAT_MOD_BROADCOM_SAND256: {
uint32_t param = fourcc_mod_broadcom_param(fb->modifier);
if (param > SCALER_TILE_HEIGHT_MASK) {
DRM_DEBUG_KMS("SAND height too large (%d)\n",
-@@ -1443,18 +1444,22 @@ static int vc4_plane_mode_set(struct drm_plane *plane,
+@@ -1443,18 +1444,22 @@ static int vc4_plane_mode_set(struct drm
if (fb->format->format == DRM_FORMAT_P030) {
hvs_format = HVS_PIXEL_FORMAT_YCBCR_10BIT;
tiling = SCALER_CTL0_TILING_128B;
break;
default:
return -EINVAL;
-@@ -1472,7 +1477,16 @@ static int vc4_plane_mode_set(struct drm_plane *plane,
+@@ -1472,7 +1477,16 @@ static int vc4_plane_mode_set(struct drm
* should be 6.
*/
for (i = 0; i < num_planes; i++) {
if (fb->format->format == DRM_FORMAT_P030) {
/*
-@@ -1488,23 +1502,9 @@ static int vc4_plane_mode_set(struct drm_plane *plane,
+@@ -1488,23 +1502,9 @@ static int vc4_plane_mode_set(struct drm
u32 last_bits = remaining_pixels % 12;
x_off = aligned * 16 + last_bits;
x_off = (src_x % pix_per_tile) /
(i ? h_subsample : 1) *
fb->format->cpp[i];
-@@ -1512,12 +1512,10 @@ static int vc4_plane_mode_set(struct drm_plane *plane,
+@@ -1512,12 +1512,10 @@ static int vc4_plane_mode_set(struct drm
tile = src_x / pix_per_tile;
break;
}
-@@ -1672,7 +1670,7 @@ static int vc4_plane_mode_set(struct drm_plane *plane,
+@@ -1672,7 +1670,7 @@ static int vc4_plane_mode_set(struct drm
vc4_dlist_write(vc4_state, 0xc0c0c0c0);
/* Pitch word 0 */
/* Pitch word 1/2 */
for (i = 1; i < num_planes; i++) {
-@@ -1682,7 +1680,7 @@ static int vc4_plane_mode_set(struct drm_plane *plane,
+@@ -1682,7 +1680,7 @@ static int vc4_plane_mode_set(struct drm
VC4_SET_FIELD(fb->pitches[i],
SCALER_SRC_PITCH));
} else {
}
}
-@@ -1837,7 +1835,7 @@ static int vc6_plane_mode_set(struct drm_plane *plane,
+@@ -1837,7 +1835,7 @@ static int vc6_plane_mode_set(struct drm
u32 v_subsample = fb->format->vsub;
bool mix_plane_alpha;
bool covers_screen;
u32 tiling, src_x, src_y;
u32 width, height;
u32 hvs_format = format->hvs;
-@@ -1907,6 +1905,7 @@ static int vc6_plane_mode_set(struct drm_plane *plane,
+@@ -1907,6 +1905,7 @@ static int vc6_plane_mode_set(struct drm
case DRM_FORMAT_MOD_BROADCOM_SAND128:
case DRM_FORMAT_MOD_BROADCOM_SAND256: {
uint32_t param = fourcc_mod_broadcom_param(fb->modifier);
u32 components_per_word;
u32 starting_offset;
u32 fetch_count;
-@@ -1920,21 +1919,29 @@ static int vc6_plane_mode_set(struct drm_plane *plane,
+@@ -1920,21 +1919,29 @@ static int vc6_plane_mode_set(struct drm
if (fb->format->format == DRM_FORMAT_P030) {
hvs_format = HVS_PIXEL_FORMAT_YCBCR_10BIT;
tiling = SCALER6_CTL0_ADDR_MODE_128B;
/* Adjust the base pointer to the first pixel to be scanned
* out.
*
-@@ -1946,7 +1953,16 @@ static int vc6_plane_mode_set(struct drm_plane *plane,
+@@ -1946,7 +1953,16 @@ static int vc6_plane_mode_set(struct drm
* should be 6.
*/
for (i = 0; i < num_planes; i++) {
if (fb->format->format == DRM_FORMAT_P030) {
/*
-@@ -1962,20 +1978,9 @@ static int vc6_plane_mode_set(struct drm_plane *plane,
+@@ -1962,20 +1978,9 @@ static int vc6_plane_mode_set(struct drm
u32 last_bits = remaining_pixels % 12;
x_off = aligned * 16 + last_bits;
x_off = (src_x % pix_per_tile) /
(i ? h_subsample : 1) *
fb->format->cpp[i];
-@@ -1983,18 +1988,18 @@ static int vc6_plane_mode_set(struct drm_plane *plane,
+@@ -1983,18 +1988,18 @@ static int vc6_plane_mode_set(struct drm
tile = src_x / pix_per_tile;
break;
}
-@@ -2107,7 +2112,7 @@ static int vc6_plane_mode_set(struct drm_plane *plane,
+@@ -2107,7 +2112,7 @@ static int vc6_plane_mode_set(struct drm
VC4_SET_FIELD(fb->pitches[i],
SCALER6_PTR2_PITCH));
} else {
}
}
-@@ -2616,9 +2621,9 @@ struct drm_plane *vc4_plane_init(struct drm_device *dev,
+@@ -2616,9 +2621,9 @@ struct drm_plane *vc4_plane_init(struct
unsigned i;
static const uint64_t modifiers[] = {
DRM_FORMAT_MOD_BROADCOM_VC4_T_TILED,
DRM_FORMAT_MOD_LINEAR,
DRM_FORMAT_MOD_INVALID
};
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_plane.c | 7 +++++++
1 file changed, 7 insertions(+)
-diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
-index cb5d04763bd8..074dbd80dc91 100644
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -846,7 +846,14 @@ static size_t vc6_upm_size(const struct drm_plane_state *state,
+@@ -846,7 +846,14 @@ static size_t vc6_upm_size(const struct
{
const struct vc4_plane_state *vc4_state = to_vc4_plane_state(state);
unsigned int stride = state->fb->pitches[plane];
/*
* TODO: This only works for raster formats, and is sub-optimal
* for buffers with a stride aligned on 32 bytes.
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_plane.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
-index 074dbd80dc91..6e5278faae25 100644
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -1519,7 +1519,7 @@ static int vc4_plane_mode_set(struct drm_plane *plane,
+@@ -1519,7 +1519,7 @@ static int vc4_plane_mode_set(struct drm
tile = src_x / pix_per_tile;
offsets[i] += src_y / (i ? v_subsample : 1) * tile_width;
offsets[i] += x_off & ~(i ? 1 : 0);
}
-@@ -1995,7 +1995,7 @@ static int vc6_plane_mode_set(struct drm_plane *plane,
+@@ -1995,7 +1995,7 @@ static int vc6_plane_mode_set(struct drm
tile = src_x / pix_per_tile;
offsets[i] += src_y / (i ? v_subsample : 1) * tile_width;
offsets[i] += x_off & ~(i ? 1 : 0);
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_plane.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
-index 6e5278faae25..8c2da1a8712c 100644
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -1973,18 +1973,18 @@ static int vc6_plane_mode_set(struct drm_plane *plane,
+@@ -1973,18 +1973,18 @@ static int vc6_plane_mode_set(struct drm
if (fb->format->format == DRM_FORMAT_P030) {
/*
pix_per_tile = 96;
} else {
pix_per_tile = tile_width / fb->format->cpp[0];
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_plane.c | 36 ++++++++++++++++-----------------
1 file changed, 18 insertions(+), 18 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
-index 8c2da1a8712c..c133a71978d1 100644
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -1895,6 +1895,24 @@ static int vc6_plane_mode_set(struct drm_plane *plane,
+@@ -1895,6 +1895,24 @@ static int vc6_plane_mode_set(struct drm
src_x = vc4_state->src_x >> 16;
switch (base_format_mod) {
case DRM_FORMAT_MOD_LINEAR:
tiling = SCALER6_CTL0_ADDR_MODE_LINEAR;
-@@ -2016,24 +2034,6 @@ static int vc6_plane_mode_set(struct drm_plane *plane,
+@@ -2016,24 +2034,6 @@ static int vc6_plane_mode_set(struct drm
return -EINVAL;
}
/* for YUV444 hardware wants double the width, otherwise it doesn't
* fetch full width of chroma
*/
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_plane.c | 3 +++
1 file changed, 3 insertions(+)
-diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
-index c133a71978d1..36487765cef0 100644
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -854,6 +854,9 @@ static size_t vc6_upm_size(const struct drm_plane_state *state,
+@@ -854,6 +854,9 @@ static size_t vc6_upm_size(const struct
else
stride = ALIGN(state->fb->width, 128);
}
/*
* TODO: This only works for raster formats, and is sub-optimal
* for buffers with a stride aligned on 32 bytes.
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_plane.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
-diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
-index 36487765cef0..6de682535788 100644
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -1860,6 +1860,24 @@ static int vc6_plane_mode_set(struct drm_plane *plane,
+@@ -1860,6 +1860,24 @@ static int vc6_plane_mode_set(struct drm
if (ret)
return ret;
if (!vc4_state->src_w[0] || !vc4_state->src_h[0] ||
!vc4_state->crtc_w || !vc4_state->crtc_h) {
/* 0 source size probably means the plane is offscreen.
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_plane.c | 19 +++++++++++++++++--
2 files changed, 21 insertions(+), 2 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h
-index a9f3b0dba71d..13c88b7a241b 100644
--- a/drivers/gpu/drm/vc4/vc4_drv.h
+++ b/drivers/gpu/drm/vc4/vc4_drv.h
@@ -454,6 +454,10 @@ struct vc4_plane_state {
/* Our allocation in LBM for temporary storage during scaling. */
unsigned int lbm_handle;
-diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
-index 6de682535788..ccaeb0f6e9bf 100644
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -302,6 +302,7 @@ struct drm_plane_state *vc4_plane_duplicate_state(struct drm_plane *plane)
+@@ -302,6 +302,7 @@ struct drm_plane_state *vc4_plane_duplic
refcount_inc(&hvs->lbm_refcounts[vc4_state->lbm_handle].refcount);
vc4_state->dlist_initialized = 0;
__drm_atomic_helper_plane_duplicate_state(plane, &vc4_state->base);
-@@ -874,6 +875,10 @@ static void vc4_write_scaling_parameters(struct drm_plane_state *state,
+@@ -874,6 +875,10 @@ static void vc4_write_scaling_parameters
{
struct vc4_dev *vc4 = to_vc4_dev(state->plane->dev);
struct vc4_plane_state *vc4_state = to_vc4_plane_state(state);
WARN_ON_ONCE(vc4->gen > VC4_GEN_6_D);
-@@ -882,7 +887,7 @@ static void vc4_write_scaling_parameters(struct drm_plane_state *state,
+@@ -882,7 +887,7 @@ static void vc4_write_scaling_parameters
vc4_write_ppf(vc4_state, vc4_state->src_w[channel],
vc4_state->crtc_w, vc4_state->src_x, channel,
state->chroma_siting_h,
}
/* Ch0 V-PPF Words 0-1: Scaling Parameters, Context */
-@@ -890,7 +895,7 @@ static void vc4_write_scaling_parameters(struct drm_plane_state *state,
+@@ -890,7 +895,7 @@ static void vc4_write_scaling_parameters
vc4_write_ppf(vc4_state, vc4_state->src_h[channel],
vc4_state->crtc_h, vc4_state->src_y, channel,
state->chroma_siting_v,
vc4_dlist_write(vc4_state, 0xc0c0c0c0);
}
-@@ -1870,12 +1875,19 @@ static int vc6_plane_mode_set(struct drm_plane *plane,
+@@ -1870,12 +1875,19 @@ static int vc6_plane_mode_set(struct drm
if (vc4_state->x_scaling[0] == VC4_SCALING_NONE) {
vc4_state->x_scaling[0] = VC4_SCALING_PPF;
vc4_state->is_unity = false;
}
if (!vc4_state->src_w[0] || !vc4_state->src_h[0] ||
-@@ -2202,6 +2214,9 @@ static int vc6_plane_mode_set(struct drm_plane *plane,
+@@ -2202,6 +2214,9 @@ static int vc6_plane_mode_set(struct drm
filter = &vc4->hvs->nearest_neighbour_filter;
break;
}
u32 kernel = VC4_SET_FIELD(filter->start,
SCALER_PPF_KERNEL_OFFSET);
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_plane.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
-index ccaeb0f6e9bf..0f0e4677cdb9 100644
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -2376,7 +2376,7 @@ void vc4_plane_async_set_fb(struct drm_plane *plane, struct drm_framebuffer *fb)
+@@ -2376,7 +2376,7 @@ void vc4_plane_async_set_fb(struct drm_p
*/
WARN_ON_ONCE(plane->state->crtc_x < 0 || plane->state->crtc_y < 0);
u32 value;
value = vc4_state->dlist[vc4_state->ptr0_offset[0]] &
---
-2.54.0
-
drivers/gpu/drm/vc4/tests/vc4_mock_output.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/tests/vc4_mock_output.c b/drivers/gpu/drm/vc4/tests/vc4_mock_output.c
-index a00a0cb44fbe..e71980470784 100644
--- a/drivers/gpu/drm/vc4/tests/vc4_mock_output.c
+++ b/drivers/gpu/drm/vc4/tests/vc4_mock_output.c
-@@ -90,29 +90,29 @@ vc4_mock_atomic_add_output(struct kunit *test,
+@@ -90,29 +90,29 @@ vc4_mock_atomic_add_output(struct kunit
encoder = vc4_find_encoder_by_type(drm, type);
if (!encoder)
crtc_state->active = true;
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_regs.h | 9 ++++++
2 files changed, 59 insertions(+), 4 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
-index 0f0e4677cdb9..6bd6ff90e7e3 100644
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
@@ -36,6 +36,7 @@ static const struct hvs_format {
};
static const struct hvs_format *vc4_get_hvs_format(u32 drm_format)
-@@ -2638,6 +2675,12 @@ static bool vc4_format_mod_supported(struct drm_plane *plane,
+@@ -2638,6 +2675,12 @@ static bool vc4_format_mod_supported(str
case DRM_FORMAT_YVU420:
case DRM_FORMAT_NV16:
case DRM_FORMAT_NV61:
default:
return (modifier == DRM_FORMAT_MOD_LINEAR);
}
-@@ -2672,10 +2715,13 @@ struct drm_plane *vc4_plane_init(struct drm_device *dev,
+@@ -2672,10 +2715,13 @@ struct drm_plane *vc4_plane_init(struct
};
for (i = 0; i < ARRAY_SIZE(hvs_formats); i++) {
}
vc4_plane = drmm_universal_plane_alloc(dev, struct vc4_plane, base,
-diff --git a/drivers/gpu/drm/vc4/vc4_regs.h b/drivers/gpu/drm/vc4/vc4_regs.h
-index 27158be19952..68d83d27c32a 100644
--- a/drivers/gpu/drm/vc4/vc4_regs.h
+++ b/drivers/gpu/drm/vc4/vc4_regs.h
@@ -1079,6 +1079,15 @@ enum hvs_pixel_format {
};
/* Note: the LSB is the rightmost character shown. Only valid for
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_hvs.c | 79 +++++++++++++++++++++++++++++++----
1 file changed, 71 insertions(+), 8 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_hvs.c b/drivers/gpu/drm/vc4/vc4_hvs.c
-index c8dfa2f426f8..9f7cff04a6ef 100644
--- a/drivers/gpu/drm/vc4/vc4_hvs.c
+++ b/drivers/gpu/drm/vc4/vc4_hvs.c
-@@ -1845,9 +1845,71 @@ static const struct vc6_csc_coeff_entry csc_coeffs[2][3] = {
+@@ -1845,9 +1845,71 @@ static const struct vc6_csc_coeff_entry
}
};
unsigned int i;
HVS_WRITE(SCALER6_CONTROL,
-@@ -1884,16 +1946,17 @@ static int vc6_hvs_hw_init(struct vc4_hvs *hvs)
+@@ -1884,16 +1946,17 @@ static int vc6_hvs_hw_init(struct vc4_hv
HVS_WRITE(CFC1_N_NL_CSC_CTRL(i), BIT(15));
}
} else {
HVS_WRITE(SCALER_PI_CMP_CSC_BLUE_CLAMP(i), 0xfff00000);
}
}
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_plane.c | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
-index 6bd6ff90e7e3..7825565be7d5 100644
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
@@ -37,6 +37,7 @@ static const struct hvs_format {
},
{
.drm = DRM_FORMAT_NV12,
-@@ -1873,6 +1877,14 @@ static u32 vc6_plane_get_csc_mode(struct vc4_plane_state *vc4_state)
+@@ -1873,6 +1877,14 @@ static u32 vc6_plane_get_csc_mode(struct
return ret;
}
static int vc6_plane_mode_set(struct drm_plane *plane,
struct drm_plane_state *state)
{
-@@ -2165,8 +2177,10 @@ static int vc6_plane_mode_set(struct drm_plane *plane,
+@@ -2165,8 +2177,10 @@ static int vc6_plane_mode_set(struct drm
* TODO: This only covers Raster Scan Order planes
*/
for (i = 0; i < num_planes; i++) {
/* Pointer Word 0 */
vc4_state->ptr0_offset[i] = vc4_state->dlist_count;
---
-2.54.0
-
drivers/gpu/drm/drm_modes.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
-diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c
-index e72f855fc495..c9f210ef87d0 100644
--- a/drivers/gpu/drm/drm_modes.c
+++ b/drivers/gpu/drm/drm_modes.c
-@@ -2172,12 +2172,15 @@ static int drm_mode_parse_cmdline_options(const char *str,
+@@ -2172,12 +2172,15 @@ static int drm_mode_parse_cmdline_option
option = str;
do {
}
if (!strncmp(option, "rotate", delim - option)) {
---
-2.54.0
-
.../gpu/drm/tests/drm_cmdline_parser_test.c | 24 +++++++++++++++++++
1 file changed, 24 insertions(+)
-diff --git a/drivers/gpu/drm/tests/drm_cmdline_parser_test.c b/drivers/gpu/drm/tests/drm_cmdline_parser_test.c
-index 1cfcb597b088..2d29eca448f6 100644
--- a/drivers/gpu/drm/tests/drm_cmdline_parser_test.c
+++ b/drivers/gpu/drm/tests/drm_cmdline_parser_test.c
-@@ -724,6 +724,29 @@ static void drm_test_cmdline_multiple_options(struct kunit *test)
+@@ -724,6 +724,29 @@ static void drm_test_cmdline_multiple_op
KUNIT_EXPECT_EQ(test, mode.force, DRM_FORCE_UNSPECIFIED);
}
static void drm_test_cmdline_bpp_extra_and_option(struct kunit *test)
{
struct drm_cmdline_mode mode = { };
-@@ -1057,6 +1080,7 @@ static struct kunit_case drm_cmdline_parser_tests[] = {
+@@ -1057,6 +1080,7 @@ static struct kunit_case drm_cmdline_par
KUNIT_CASE(drm_test_cmdline_vmirror),
KUNIT_CASE(drm_test_cmdline_margin_options),
KUNIT_CASE(drm_test_cmdline_multiple_options),
KUNIT_CASE(drm_test_cmdline_bpp_extra_and_option),
KUNIT_CASE(drm_test_cmdline_extra_and_option),
KUNIT_CASE(drm_test_cmdline_freestanding_options),
---
-2.54.0
-
include/uapi/linux/serial_core.h | 3 +++
1 file changed, 3 insertions(+)
-diff --git a/include/uapi/linux/serial_core.h b/include/uapi/linux/serial_core.h
-index 9c007a106330..e0ca374c0db8 100644
--- a/include/uapi/linux/serial_core.h
+++ b/include/uapi/linux/serial_core.h
@@ -231,6 +231,9 @@
/* Generic type identifier for ports which type is not important to userspace. */
#define PORT_GENERIC (-1)
---
-2.54.0
-
3 files changed, 574 insertions(+)
create mode 100644 drivers/tty/serial/rpi-fw-uart.c
-diff --git a/drivers/tty/serial/Kconfig b/drivers/tty/serial/Kconfig
-index 2b9c8b39d68f..b45e30a2c168 100644
--- a/drivers/tty/serial/Kconfig
+++ b/drivers/tty/serial/Kconfig
@@ -1619,6 +1619,17 @@ config SERIAL_ESP32_ACM
endmenu
config SERIAL_MCTRL_GPIO
-diff --git a/drivers/tty/serial/Makefile b/drivers/tty/serial/Makefile
-index a2ccbc508ec5..f8a4c7491eb0 100644
--- a/drivers/tty/serial/Makefile
+++ b/drivers/tty/serial/Makefile
-@@ -10,6 +10,7 @@ obj-$(CONFIG_SERIAL_EARLYCON) += earlycon.o
+@@ -10,6 +10,7 @@ obj-$(CONFIG_SERIAL_EARLYCON) += earlyco
obj-$(CONFIG_SERIAL_EARLYCON_SEMIHOST) += earlycon-semihost.o
obj-$(CONFIG_SERIAL_EARLYCON_RISCV_SBI) += earlycon-riscv-sbi.o
# These Sparc drivers have to appear before others such as 8250
# which share ttySx minor node space. Otherwise console device
# names change and other unplesantries.
-@@ -71,6 +72,7 @@ obj-$(CONFIG_SERIAL_QCOM_GENI) += qcom_geni_serial.o
+@@ -71,6 +72,7 @@ obj-$(CONFIG_SERIAL_QCOM_GENI) += qcom_
obj-$(CONFIG_SERIAL_QE) += ucc_uart.o
obj-$(CONFIG_SERIAL_RDA) += rda-uart.o
obj-$(CONFIG_SERIAL_RP2) += rp2.o
obj-$(CONFIG_SERIAL_RSCI) += rsci.o
obj-$(CONFIG_SERIAL_SA1100) += sa1100.o
obj-$(CONFIG_SERIAL_SAMSUNG) += samsung_tty.o
-diff --git a/drivers/tty/serial/rpi-fw-uart.c b/drivers/tty/serial/rpi-fw-uart.c
-new file mode 100644
-index 000000000000..075f68ae81ac
--- /dev/null
+++ b/drivers/tty/serial/rpi-fw-uart.c
@@ -0,0 +1,561 @@
+MODULE_AUTHOR("Tim Gover <tim.gover@rasberrypi.com>");
+MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("Raspberry Pi Firmware Software UART driver");
---
-2.54.0
-
drivers/input/touchscreen/ili210x.c | 63 ++++++++++++++++++++++++-----
1 file changed, 52 insertions(+), 11 deletions(-)
-diff --git a/drivers/input/touchscreen/ili210x.c b/drivers/input/touchscreen/ili210x.c
-index fa38d70aded7..3f6e05db14ce 100644
--- a/drivers/input/touchscreen/ili210x.c
+++ b/drivers/input/touchscreen/ili210x.c
@@ -67,6 +67,8 @@ struct ili210x {
};
static int ili210x_read_reg(struct i2c_client *client,
-@@ -360,6 +362,34 @@ static irqreturn_t ili210x_irq(int irq, void *irq_data)
+@@ -360,6 +362,34 @@ static irqreturn_t ili210x_irq(int irq,
return IRQ_HANDLED;
}
static int ili251x_firmware_update_resolution(struct device *dev)
{
struct i2c_client *client = to_i2c_client(dev);
-@@ -947,11 +977,6 @@ static int ili210x_i2c_probe(struct i2c_client *client)
+@@ -947,11 +977,6 @@ static int ili210x_i2c_probe(struct i2c_
return -ENODEV;
}
reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH);
if (IS_ERR(reset_gpio))
return PTR_ERR(reset_gpio);
-@@ -1003,12 +1028,17 @@ static int ili210x_i2c_probe(struct i2c_client *client)
+@@ -1003,12 +1028,17 @@ static int ili210x_i2c_probe(struct i2c_
return error;
}
}
error = devm_add_action_or_reset(dev, ili210x_stop, priv);
-@@ -1024,6 +1054,16 @@ static int ili210x_i2c_probe(struct i2c_client *client)
+@@ -1024,6 +1054,16 @@ static int ili210x_i2c_probe(struct i2c_
return 0;
}
static const struct i2c_device_id ili210x_i2c_id[] = {
{ "ili210x", (long)&ili210x_chip },
{ "ili2117", (long)&ili211x_chip },
-@@ -1050,6 +1090,7 @@ static struct i2c_driver ili210x_ts_driver = {
+@@ -1050,6 +1090,7 @@ static struct i2c_driver ili210x_ts_driv
},
.id_table = ili210x_i2c_id,
.probe = ili210x_i2c_probe,
};
module_i2c_driver(ili210x_ts_driver);
---
-2.54.0
-
kernel/cgroup/cgroup.c | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
-diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c
-index da5f6f5400af..39825f925c11 100644
--- a/kernel/cgroup/cgroup.c
+++ b/kernel/cgroup/cgroup.c
-@@ -7067,6 +7067,39 @@ static int __init cgroup_disable(char *str)
+@@ -7077,6 +7077,39 @@ static int __init cgroup_disable(char *s
}
__setup("cgroup_disable=", cgroup_disable);
void __init __weak enable_debug_cgroup(void) { }
static int __init enable_cgroup_debug(char *str)
---
-2.54.0
-
drivers/gpu/drm/bridge/panel.c | 2 ++
1 file changed, 2 insertions(+)
-diff --git a/drivers/gpu/drm/bridge/panel.c b/drivers/gpu/drm/bridge/panel.c
-index 4c5f961343d9..0c671d0ed3fe 100644
--- a/drivers/gpu/drm/bridge/panel.c
+++ b/drivers/gpu/drm/bridge/panel.c
-@@ -81,6 +81,8 @@ static int panel_bridge_attach(struct drm_bridge *bridge,
+@@ -81,6 +81,8 @@ static int panel_bridge_attach(struct dr
return ret;
}
drm_panel_bridge_set_orientation(connector, bridge);
drm_connector_attach_encoder(&panel_bridge->connector,
---
-2.54.0
-
drivers/gpu/drm/drm_atomic_uapi.c | 6 ++++++
1 file changed, 6 insertions(+)
-diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c
-index 142e46e1441d..d1556527cca3 100644
--- a/drivers/gpu/drm/drm_atomic_uapi.c
+++ b/drivers/gpu/drm/drm_atomic_uapi.c
-@@ -794,6 +794,12 @@ static int drm_atomic_connector_set_property(struct drm_connector *connector,
+@@ -794,6 +794,12 @@ static int drm_atomic_connector_set_prop
} else if (property == connector->broadcast_rgb_property) {
state->hdmi.broadcast_rgb = val;
} else if (property == connector->rotation_property) {
state->rotation = val;
} else if (connector->funcs->atomic_set_property) {
return connector->funcs->atomic_set_property(connector,
---
-2.54.0
-
Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml | 8 ++++++++
1 file changed, 8 insertions(+)
-diff --git a/Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml b/Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml
-index 0b4f003989a4..d8ffcdd38281 100644
--- a/Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml
+++ b/Documentation/devicetree/bindings/sound/ti,pcm3168a.yaml
@@ -58,6 +58,14 @@ properties:
ports:
$ref: audio-graph-port.yaml#/definitions/port-base
unevaluatedProperties: false
---
-2.54.0
-
drivers/media/i2c/imx290.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
-diff --git a/drivers/media/i2c/imx290.c b/drivers/media/i2c/imx290.c
-index 21cbc81cb2ed..f9fae76a0e77 100644
--- a/drivers/media/i2c/imx290.c
+++ b/drivers/media/i2c/imx290.c
@@ -13,6 +13,7 @@
enum imx290_colour_variant {
IMX290_VARIANT_COLOUR,
IMX290_VARIANT_MONO,
-@@ -695,7 +703,8 @@ static int imx290_set_data_lanes(struct imx290 *imx290)
+@@ -695,7 +703,8 @@ static int imx290_set_data_lanes(struct
&ret);
cci_write(imx290->regmap, IMX290_CSI_LANE_MODE, imx290->nlanes - 1,
&ret);
return ret;
}
---
-2.54.0
-
include/linux/mmc/card.h | 1 +
3 files changed, 10 insertions(+)
-diff --git a/drivers/mmc/core/card.h b/drivers/mmc/core/card.h
-index a5bf97da19b1..caf5b23ba549 100644
--- a/drivers/mmc/core/card.h
+++ b/drivers/mmc/core/card.h
-@@ -306,4 +306,9 @@ static inline int mmc_card_no_uhs_ddr50_tuning(const struct mmc_card *c)
- return c->quirks & MMC_QUIRK_NO_UHS_DDR50_TUNING;
+@@ -317,4 +317,9 @@ static inline int mmc_card_fixed_secure_
+ return c->quirks & MMC_QUIRK_FIXED_SECURE_ERASE_TRIM_TIME;
}
+static inline int mmc_card_working_sd_cq(const struct mmc_card *c)
+}
+
#endif
-diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
-index d557e2ed333d..5f21cc270b48 100644
--- a/drivers/mmc/core/sd.c
+++ b/drivers/mmc/core/sd.c
-@@ -1527,6 +1527,10 @@ static int mmc_sd_init_card(struct mmc_host *host, u32 ocr,
+@@ -1527,6 +1527,10 @@ cont:
goto free_card;
}
/* Enable command queueing if supported */
if (card->ext_csd.cmdq_support && host->caps2 & MMC_CAP2_CQE) {
/*
-diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h
-index 5d2b5e99ab2c..67661fb3db60 100644
--- a/include/linux/mmc/card.h
+++ b/include/linux/mmc/card.h
-@@ -330,6 +330,7 @@ struct mmc_card {
- #define MMC_QUIRK_BROKEN_CACHE_FLUSH (1<<16) /* Don't flush cache until the write has occurred */
- #define MMC_QUIRK_BROKEN_SD_POWEROFF_NOTIFY (1<<17) /* Disable broken SD poweroff notify support */
+@@ -332,6 +332,7 @@ struct mmc_card {
#define MMC_QUIRK_NO_UHS_DDR50_TUNING (1<<18) /* Disable DDR50 tuning */
+ #define MMC_QUIRK_BROKEN_MDT (1<<19) /* Wrong manufacturing year */
+ #define MMC_QUIRK_FIXED_SECURE_ERASE_TRIM_TIME (1<<20) /* Secure erase/trim time is fixed regardless of size */
+#define MMC_QUIRK_WORKING_SD_CQ (1<<30) /* SD card has known-good CQ implementation */
#define MMC_QUIRK_ERASE_BROKEN (1<<31) /* Skip erase */
bool written_flag; /* Indicates eMMC has been written since power on */
---
-2.54.0
-
drivers/mmc/core/quirks.h | 6 ++++++
2 files changed, 7 insertions(+)
-diff --git a/drivers/mmc/core/card.h b/drivers/mmc/core/card.h
-index caf5b23ba549..ce00466411fa 100644
--- a/drivers/mmc/core/card.h
+++ b/drivers/mmc/core/card.h
-@@ -94,6 +94,7 @@ struct mmc_fixup {
+@@ -95,6 +95,7 @@ struct mmc_fixup {
#define CID_MANFID_KINGSTON 0x70
#define CID_MANFID_HYNIX 0x90
#define CID_MANFID_KINGSTON_SD 0x9F
#define CID_MANFID_NUMONYX 0xFE
#define END_FIXUP { NULL }
-diff --git a/drivers/mmc/core/quirks.h b/drivers/mmc/core/quirks.h
-index d29d213e90a5..40469584bf9c 100644
--- a/drivers/mmc/core/quirks.h
+++ b/drivers/mmc/core/quirks.h
-@@ -82,6 +82,12 @@ static const struct mmc_fixup __maybe_unused mmc_sd_fixups[] = {
+@@ -82,6 +82,12 @@ static const struct mmc_fixup __maybe_un
0, -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd,
MMC_QUIRK_BROKEN_SD_CACHE, EXT_CSD_REV_ANY),
END_FIXUP
};
---
-2.54.0
-
include/linux/mmc/host.h | 1 +
4 files changed, 17 insertions(+), 5 deletions(-)
-diff --git a/drivers/mmc/core/host.c b/drivers/mmc/core/host.c
-index 88c95dbfd9cf..049ec4867268 100644
--- a/drivers/mmc/core/host.c
+++ b/drivers/mmc/core/host.c
@@ -271,7 +271,7 @@ EXPORT_SYMBOL(mmc_of_parse_clk_phase);
/* Must be after "non-removable" check */
if (device_property_read_u32(dev, "fixed-emmc-driver-type", &drv_type) == 0) {
if (host->caps & MMC_CAP_NONREMOVABLE)
-diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
-index 5f21cc270b48..a6d43acd46ba 100644
--- a/drivers/mmc/core/sd.c
+++ b/drivers/mmc/core/sd.c
-@@ -1527,8 +1527,8 @@ static int mmc_sd_init_card(struct mmc_host *host, u32 ocr,
+@@ -1527,8 +1527,8 @@ cont:
goto free_card;
}
card->ext_csd.cmdq_support = false;
/* Enable command queueing if supported */
-diff --git a/drivers/mmc/host/sdhci-brcmstb.c b/drivers/mmc/host/sdhci-brcmstb.c
-index 1bbc9634c903..0b1823ec06c1 100644
--- a/drivers/mmc/host/sdhci-brcmstb.c
+++ b/drivers/mmc/host/sdhci-brcmstb.c
-@@ -571,7 +571,7 @@ static int sdhci_brcmstb_probe(struct platform_device *pdev)
+@@ -571,7 +571,7 @@ static int sdhci_brcmstb_probe(struct pl
struct sdhci_pltfm_host *pltfm_host;
const struct of_device_id *match;
struct sdhci_brcmstb_priv *priv;
struct sdhci_host *host;
struct resource *iomem;
bool no_pinctrl = false;
-@@ -600,7 +600,9 @@ static int sdhci_brcmstb_probe(struct platform_device *pdev)
+@@ -600,7 +600,9 @@ static int sdhci_brcmstb_probe(struct pl
pltfm_host->clk = clk;
priv = sdhci_pltfm_priv(pltfm_host);
priv->flags |= BRCMSTB_PRIV_FLAGS_HAS_CQE;
match_priv->ops->irq = sdhci_brcmstb_cqhci_irq;
}
-diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h
-index ba84f02c2a10..5c09162f070f 100644
--- a/include/linux/mmc/host.h
+++ b/include/linux/mmc/host.h
@@ -463,6 +463,7 @@ struct mmc_host {
bool uhs2_sd_tran; /* UHS-II flag for SD_TRAN state */
bool uhs2_app_cmd; /* UHS-II flag for APP command */
---
-2.54.0
-
create mode 100644 drivers/media/platform/raspberrypi/rp1_cfe/pisp_statistics.h
create mode 100644 drivers/media/platform/raspberrypi/rp1_cfe/pisp_types.h
-diff --git a/drivers/media/platform/raspberrypi/Kconfig b/drivers/media/platform/raspberrypi/Kconfig
-index bd5101ffefb5..64181cecb5d4 100644
--- a/drivers/media/platform/raspberrypi/Kconfig
+++ b/drivers/media/platform/raspberrypi/Kconfig
-@@ -4,3 +4,4 @@ comment "Raspberry Pi media platform drivers"
+@@ -4,3 +4,4 @@ comment "Raspberry Pi media platform dri
source "drivers/media/platform/raspberrypi/pisp_be/Kconfig"
source "drivers/media/platform/raspberrypi/rp1-cfe/Kconfig"
+source "drivers/media/platform/raspberrypi/rp1_cfe/Kconfig"
-diff --git a/drivers/media/platform/raspberrypi/Makefile b/drivers/media/platform/raspberrypi/Makefile
-index af7fde84eefe..ec91c50a985c 100644
--- a/drivers/media/platform/raspberrypi/Makefile
+++ b/drivers/media/platform/raspberrypi/Makefile
@@ -2,3 +2,4 @@
obj-y += pisp_be/
obj-y += rp1-cfe/
+obj-y += rp1_cfe/
-diff --git a/drivers/media/platform/raspberrypi/pisp_be/pisp_be_config.h b/drivers/media/platform/raspberrypi/pisp_be/pisp_be_config.h
-new file mode 100644
-index 000000000000..bddb6e5d4670
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/pisp_be/pisp_be_config.h
@@ -0,0 +1,533 @@
+};
+
+#endif /* _PISP_BE_CONFIG_H_ */
-diff --git a/drivers/media/platform/raspberrypi/rp1-cfe/cfe.c b/drivers/media/platform/raspberrypi/rp1-cfe/cfe.c
-index 62dca76b468d..795601eaa1df 100644
--- a/drivers/media/platform/raspberrypi/rp1-cfe/cfe.c
+++ b/drivers/media/platform/raspberrypi/rp1-cfe/cfe.c
-@@ -2482,7 +2482,7 @@ static const struct dev_pm_ops cfe_pm_ops = {
+@@ -2482,7 +2482,7 @@ static const struct dev_pm_ops cfe_pm_op
};
static const struct of_device_id cfe_of_match[] = {
{ /* sentinel */ },
};
MODULE_DEVICE_TABLE(of, cfe_of_match);
-diff --git a/drivers/media/platform/raspberrypi/rp1_cfe/Kconfig b/drivers/media/platform/raspberrypi/rp1_cfe/Kconfig
-new file mode 100644
-index 000000000000..e2c86122a3cd
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/rp1_cfe/Kconfig
@@ -0,0 +1,15 @@
+
+ To compile this driver as a module, choose M here. The module will be
+ called rp1-cfe-downstream.
-diff --git a/drivers/media/platform/raspberrypi/rp1_cfe/Makefile b/drivers/media/platform/raspberrypi/rp1_cfe/Makefile
-new file mode 100644
-index 000000000000..1d4f88f64baf
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/rp1_cfe/Makefile
@@ -0,0 +1,6 @@
+#
+rp1-cfe-downstream-objs := cfe.o csi2.o pisp_fe.o dphy.o
+obj-$(CONFIG_VIDEO_RP1_CFE_DOWNSTREAM) += rp1-cfe-downstream.o
-diff --git a/drivers/media/platform/raspberrypi/rp1_cfe/cfe.c b/drivers/media/platform/raspberrypi/rp1_cfe/cfe.c
-new file mode 100644
-index 000000000000..f18715a97f82
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/rp1_cfe/cfe.c
@@ -0,0 +1,2471 @@
+MODULE_DESCRIPTION("RP1 Camera Front End driver");
+MODULE_LICENSE("GPL");
+MODULE_VERSION(CFE_VERSION);
-diff --git a/drivers/media/platform/raspberrypi/rp1_cfe/cfe.h b/drivers/media/platform/raspberrypi/rp1_cfe/cfe.h
-new file mode 100644
-index 000000000000..637b63a838c4
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/rp1_cfe/cfe.h
@@ -0,0 +1,43 @@
+u32 cfe_find_compressed_code(u32 code);
+
+#endif
-diff --git a/drivers/media/platform/raspberrypi/rp1_cfe/cfe_fmts.h b/drivers/media/platform/raspberrypi/rp1_cfe/cfe_fmts.h
-new file mode 100644
-index 000000000000..e192f211abde
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/rp1_cfe/cfe_fmts.h
@@ -0,0 +1,318 @@
+};
+
+#endif /* _CFE_FMTS_H_ */
-diff --git a/drivers/media/platform/raspberrypi/rp1_cfe/csi2.c b/drivers/media/platform/raspberrypi/rp1_cfe/csi2.c
-new file mode 100644
-index 000000000000..25dc4354c67d
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/rp1_cfe/csi2.c
@@ -0,0 +1,628 @@
+ v4l2_subdev_cleanup(&csi2->sd);
+ media_entity_cleanup(&csi2->sd.entity);
+}
-diff --git a/drivers/media/platform/raspberrypi/rp1_cfe/csi2.h b/drivers/media/platform/raspberrypi/rp1_cfe/csi2.h
-new file mode 100644
-index 000000000000..4fff16ee9407
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/rp1_cfe/csi2.h
@@ -0,0 +1,90 @@
+void csi2_uninit(struct csi2_device *csi2);
+
+#endif
-diff --git a/drivers/media/platform/raspberrypi/rp1_cfe/dphy.c b/drivers/media/platform/raspberrypi/rp1_cfe/dphy.c
-new file mode 100644
-index 000000000000..7eec3e77109e
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/rp1_cfe/dphy.c
@@ -0,0 +1,187 @@
+
+ dphy_info("DW dphy Host HW v%u.%u\n", host_ver_major, host_ver_minor);
+}
-diff --git a/drivers/media/platform/raspberrypi/rp1_cfe/dphy.h b/drivers/media/platform/raspberrypi/rp1_cfe/dphy.h
-new file mode 100644
-index 000000000000..9d7a80b3f684
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/rp1_cfe/dphy.h
@@ -0,0 +1,27 @@
+void dphy_stop(struct dphy_data *dphy);
+
+#endif
-diff --git a/drivers/media/platform/raspberrypi/rp1_cfe/pisp_common.h b/drivers/media/platform/raspberrypi/rp1_cfe/pisp_common.h
-new file mode 100644
-index 000000000000..e91aa2ed3659
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/rp1_cfe/pisp_common.h
@@ -0,0 +1,69 @@
+};
+
+#endif /* _PISP_COMMON_H_ */
-diff --git a/drivers/media/platform/raspberrypi/rp1_cfe/pisp_fe.c b/drivers/media/platform/raspberrypi/rp1_cfe/pisp_fe.c
-new file mode 100644
-index 000000000000..07bc550deea7
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/rp1_cfe/pisp_fe.c
@@ -0,0 +1,569 @@
+ v4l2_subdev_cleanup(&fe->sd);
+ media_entity_cleanup(&fe->sd.entity);
+}
-diff --git a/drivers/media/platform/raspberrypi/rp1_cfe/pisp_fe.h b/drivers/media/platform/raspberrypi/rp1_cfe/pisp_fe.h
-new file mode 100644
-index 000000000000..12760cb55af4
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/rp1_cfe/pisp_fe.h
@@ -0,0 +1,53 @@
+void pisp_fe_uninit(struct pisp_fe_device *fe);
+
+#endif
-diff --git a/drivers/media/platform/raspberrypi/rp1_cfe/pisp_fe_config.h b/drivers/media/platform/raspberrypi/rp1_cfe/pisp_fe_config.h
-new file mode 100644
-index 000000000000..35ffda72986f
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/rp1_cfe/pisp_fe_config.h
@@ -0,0 +1,272 @@
+};
+
+#endif /* _PISP_FE_CONFIG_ */
-diff --git a/drivers/media/platform/raspberrypi/rp1_cfe/pisp_statistics.h b/drivers/media/platform/raspberrypi/rp1_cfe/pisp_statistics.h
-new file mode 100644
-index 000000000000..d8d7fcb57fec
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/rp1_cfe/pisp_statistics.h
@@ -0,0 +1,62 @@
+};
+
+#endif /* _PISP_FE_STATISTICS_H_ */
-diff --git a/drivers/media/platform/raspberrypi/rp1_cfe/pisp_types.h b/drivers/media/platform/raspberrypi/rp1_cfe/pisp_types.h
-new file mode 100644
-index 000000000000..93d2d3c27a56
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/rp1_cfe/pisp_types.h
@@ -0,0 +1,144 @@
+#define PISP_WALLPAPER_WIDTH 128 // in bytes
+
+#endif /* _PISP_FE_TYPES_H_ */
---
-2.54.0
-
drivers/mmc/host/bcm2835.c | 169 +++++++++++++++++++++++++++++++------
1 file changed, 143 insertions(+), 26 deletions(-)
-diff --git a/drivers/mmc/host/bcm2835.c b/drivers/mmc/host/bcm2835.c
-index bae88c3b45b5..2278caee3650 100644
--- a/drivers/mmc/host/bcm2835.c
+++ b/drivers/mmc/host/bcm2835.c
@@ -49,6 +49,8 @@
};
static void bcm2835_dumpcmd(struct bcm2835_host *host, struct mmc_command *cmd,
-@@ -242,8 +252,11 @@ static void bcm2835_dumpregs(struct bcm2835_host *host)
+@@ -242,8 +252,11 @@ static void bcm2835_dumpregs(struct bcm2
static void bcm2835_reset_internal(struct bcm2835_host *host)
{
writel(SDVDD_POWER_OFF, host->ioaddr + SDVDD);
writel(0, host->ioaddr + SDCMD);
writel(0, host->ioaddr + SDARG);
-@@ -264,9 +277,8 @@ static void bcm2835_reset_internal(struct bcm2835_host *host)
+@@ -264,9 +277,8 @@ static void bcm2835_reset_internal(struc
msleep(20);
writel(SDVDD_POWER_ON, host->ioaddr + SDVDD);
msleep(20);
}
static void bcm2835_reset(struct mmc_host *mmc)
-@@ -597,6 +609,25 @@ static void bcm2835_finish_request(struct bcm2835_host *host)
+@@ -597,6 +609,25 @@ static void bcm2835_finish_request(struc
mrq = host->mrq;
host->mrq = NULL;
host->cmd = NULL;
host->data = NULL;
-@@ -1093,8 +1124,13 @@ static void bcm2835_dma_complete_work(struct work_struct *work)
+@@ -1093,8 +1124,13 @@ static void bcm2835_dma_complete_work(st
static void bcm2835_set_clock(struct bcm2835_host *host, unsigned int clock)
{
struct mmc_host *mmc = mmc_from_priv(host);
/* The SDCDIV register has 11 bits, and holds (div - 2). But
* in data mode the max is 50MHz wihout a minimum, and only
* the bottom 3 bits are used. Since the switch over is
-@@ -1116,38 +1152,78 @@ static void bcm2835_set_clock(struct bcm2835_host *host, unsigned int clock)
+@@ -1116,38 +1152,78 @@ static void bcm2835_set_clock(struct bcm
* clock divisor at all times.
*/
}
static void bcm2835_request(struct mmc_host *mmc, struct mmc_request *mrq)
-@@ -1177,6 +1253,9 @@ static void bcm2835_request(struct mmc_host *mmc, struct mmc_request *mrq)
+@@ -1177,6 +1253,9 @@ static void bcm2835_request(struct mmc_h
return;
}
mutex_lock(&host->mutex);
WARN_ON(host->mrq);
-@@ -1200,7 +1279,7 @@ static void bcm2835_request(struct mmc_host *mmc, struct mmc_request *mrq)
+@@ -1200,7 +1279,7 @@ static void bcm2835_request(struct mmc_h
return;
}
bcm2835_prepare_dma(host, mrq->data);
host->use_sbc = !!mrq->sbc && host->mrq->data &&
-@@ -1335,8 +1414,8 @@ static int bcm2835_add_host(struct bcm2835_host *host)
+@@ -1335,8 +1414,8 @@ static int bcm2835_add_host(struct bcm28
}
pio_limit_string[0] = '\0';
dev_info(dev, "loaded - DMA %s%s\n",
host->use_dma ? "enabled" : "disabled", pio_limit_string);
-@@ -1365,8 +1444,11 @@ static DEFINE_SIMPLE_DEV_PM_OPS(bcm2835_pm_ops, bcm2835_suspend,
+@@ -1365,8 +1444,11 @@ static DEFINE_SIMPLE_DEV_PM_OPS(bcm2835_
static int bcm2835_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
struct mmc_host *mmc;
int ret;
-@@ -1387,6 +1469,23 @@ static int bcm2835_probe(struct platform_device *pdev)
+@@ -1387,6 +1469,23 @@ static int bcm2835_probe(struct platform
}
host->phys_addr = iomem->start;
host->dma_chan = NULL;
host->dma_desc = NULL;
-@@ -1402,6 +1501,24 @@ static int bcm2835_probe(struct platform_device *pdev)
+@@ -1402,6 +1501,24 @@ static int bcm2835_probe(struct platform
/* Ignore errors to fall back to PIO mode */
}
host->irq = platform_get_irq(pdev, 0);
if (host->irq < 0) {
ret = host->irq;
---
-2.54.0
-
.../platform/raspberrypi/pisp_be/pisp_be_formats.h | 10 ++++++++++
1 file changed, 10 insertions(+)
-diff --git a/drivers/media/platform/raspberrypi/pisp_be/pisp_be_formats.h b/drivers/media/platform/raspberrypi/pisp_be/pisp_be_formats.h
-index b5cb7b8c7531..09edc2774668 100644
--- a/drivers/media/platform/raspberrypi/pisp_be/pisp_be_formats.h
+++ b/drivers/media/platform/raspberrypi/pisp_be/pisp_be_formats.h
-@@ -129,6 +129,16 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -129,6 +129,16 @@ static const struct pisp_be_format suppo
.colorspace_mask = V4L2_COLORSPACE_MASK_ALL_SRGB,
.colorspace_default = V4L2_COLORSPACE_SMPTE170M,
},
/* Multiplane YUV formats */
{
.fourcc = V4L2_PIX_FMT_YUV420M,
---
-2.54.0
-
.../linux/media/raspberrypi/pisp_be_config.h | 42 ++-----------------
1 file changed, 4 insertions(+), 38 deletions(-)
-diff --git a/include/uapi/linux/media/raspberrypi/pisp_be_config.h b/include/uapi/linux/media/raspberrypi/pisp_be_config.h
-index 2ad3b90684d7..83456e8f63ef 100644
--- a/include/uapi/linux/media/raspberrypi/pisp_be_config.h
+++ b/include/uapi/linux/media/raspberrypi/pisp_be_config.h
@@ -717,13 +717,6 @@ struct pisp_be_hog_buffer_config {
} __attribute__((packed));
/**
---
-2.54.0
-
drivers/dma/bcm2835-dma.c | 4 ++++
1 file changed, 4 insertions(+)
-diff --git a/drivers/dma/bcm2835-dma.c b/drivers/dma/bcm2835-dma.c
-index 45169efe6a7d..67e9636e2049 100644
--- a/drivers/dma/bcm2835-dma.c
+++ b/drivers/dma/bcm2835-dma.c
-@@ -1253,6 +1253,7 @@ static struct dma_chan *bcm2835_dma_xlate(struct of_phandle_args *spec,
+@@ -1253,6 +1253,7 @@ static struct dma_chan *bcm2835_dma_xlat
return chan;
}
static int bcm2835_dma_suspend_late(struct device *dev)
{
struct bcm2835_dmadev *od = dev_get_drvdata(dev);
-@@ -1269,6 +1270,9 @@ static int bcm2835_dma_suspend_late(struct device *dev)
+@@ -1269,6 +1270,9 @@ static int bcm2835_dma_suspend_late(stru
return 0;
}
static const struct dev_pm_ops bcm2835_dma_pm_ops = {
LATE_SYSTEM_SLEEP_PM_OPS(bcm2835_dma_suspend_late, NULL)
---
-2.54.0
-
drivers/spi/spi-dw-dma.c | 6 ++++++
1 file changed, 6 insertions(+)
-diff --git a/drivers/spi/spi-dw-dma.c b/drivers/spi/spi-dw-dma.c
-index c34c202d617e..d9c790eda039 100644
--- a/drivers/spi/spi-dw-dma.c
+++ b/drivers/spi/spi-dw-dma.c
-@@ -304,6 +304,12 @@ static int dw_spi_dma_wait_tx_done(struct dw_spi *dws,
+@@ -304,6 +304,12 @@ static int dw_spi_dma_wait_tx_done(struc
return -EIO;
}
return 0;
}
---
-2.54.0
-
include/media/media-request.h | 36 ++++++++++++++++++++++++++++++++-
2 files changed, 71 insertions(+), 3 deletions(-)
-diff --git a/drivers/media/mc/mc-request.c b/drivers/media/mc/mc-request.c
-index 4188d4c8f1d4..48045ee3cc7f 100644
--- a/drivers/media/mc/mc-request.c
+++ b/drivers/media/mc/mc-request.c
-@@ -54,6 +54,7 @@ static void media_request_clean(struct media_request *req)
+@@ -54,6 +54,7 @@ static void media_request_clean(struct m
req->access_count = 0;
WARN_ON(req->num_incomplete_objects);
req->num_incomplete_objects = 0;
wake_up_interruptible_all(&req->poll_wait);
}
-@@ -318,6 +319,7 @@ int media_request_alloc(struct media_device *mdev, int *alloc_fd)
+@@ -318,6 +319,7 @@ int media_request_alloc(struct media_dev
req->mdev = mdev;
req->state = MEDIA_REQUEST_STATE_IDLE;
req->num_incomplete_objects = 0;
kref_init(&req->kref);
INIT_LIST_HEAD(&req->objects);
spin_lock_init(&req->lock);
-@@ -464,7 +466,7 @@ void media_request_object_unbind(struct media_request_object *obj)
+@@ -464,7 +466,7 @@ void media_request_object_unbind(struct
req->num_incomplete_objects--;
if (req->state == MEDIA_REQUEST_STATE_QUEUED &&
req->state = MEDIA_REQUEST_STATE_COMPLETE;
completed = true;
wake_up_interruptible_all(&req->poll_wait);
-@@ -493,7 +495,7 @@ void media_request_object_complete(struct media_request_object *obj)
+@@ -493,7 +495,7 @@ void media_request_object_complete(struc
WARN_ON(req->state != MEDIA_REQUEST_STATE_QUEUED))
goto unlock;
req->state = MEDIA_REQUEST_STATE_COMPLETE;
wake_up_interruptible_all(&req->poll_wait);
completed = true;
-@@ -504,3 +506,35 @@ void media_request_object_complete(struct media_request_object *obj)
+@@ -504,3 +506,35 @@ unlock:
media_request_put(req);
}
EXPORT_SYMBOL_GPL(media_request_object_complete);
+ media_request_put(req);
+}
+EXPORT_SYMBOL_GPL(media_request_manual_complete);
-diff --git a/include/media/media-request.h b/include/media/media-request.h
-index bb500b2f9da4..e4bfb1cf157e 100644
--- a/include/media/media-request.h
+++ b/include/media/media-request.h
@@ -56,6 +56,10 @@ struct media_request_object;
wait_queue_head_t poll_wait;
spinlock_t lock;
};
-@@ -218,6 +223,35 @@ media_request_get_by_fd(struct media_device *mdev, int request_fd);
+@@ -218,6 +223,35 @@ media_request_get_by_fd(struct media_dev
int media_request_alloc(struct media_device *mdev,
int *alloc_fd);
#else
static inline void media_request_get(struct media_request *req)
-@@ -336,7 +370,7 @@ void media_request_object_init(struct media_request_object *obj);
+@@ -336,7 +370,7 @@ void media_request_object_init(struct me
* @req: The media request
* @ops: The object ops for this object
* @priv: A driver-specific priv pointer associated with this object
* @obj: The object
*
* Bind this object to the request and set the ops and priv values of
---
-2.54.0
-
.../media/test-drivers/vicodec/vicodec-core.c | 21 +++++++++++++++----
1 file changed, 17 insertions(+), 4 deletions(-)
-diff --git a/drivers/media/test-drivers/vicodec/vicodec-core.c b/drivers/media/test-drivers/vicodec/vicodec-core.c
-index a3df3a33237e..a9becd8578fe 100644
--- a/drivers/media/test-drivers/vicodec/vicodec-core.c
+++ b/drivers/media/test-drivers/vicodec/vicodec-core.c
@@ -448,8 +448,10 @@ static void device_run(void *priv)
if (ctx->is_enc)
v4l2_m2m_job_finish(dev->stateful_enc.m2m_dev, ctx->fh.m2m_ctx);
-@@ -1525,8 +1527,12 @@ static void vicodec_return_bufs(struct vb2_queue *q, u32 state)
+@@ -1525,8 +1527,12 @@ static void vicodec_return_bufs(struct v
vbuf = v4l2_m2m_dst_buf_remove(ctx->fh.m2m_ctx);
if (vbuf == NULL)
return;
spin_lock(ctx->lock);
v4l2_m2m_buf_done(vbuf, state);
spin_unlock(ctx->lock);
-@@ -1679,6 +1685,7 @@ static void vicodec_buf_request_complete(struct vb2_buffer *vb)
+@@ -1679,6 +1685,7 @@ static void vicodec_buf_request_complete
struct vicodec_ctx *ctx = vb2_get_drv_priv(vb->vb2_queue);
v4l2_ctrl_request_complete(vb->req_obj.req, &ctx->hdl);
}
-@@ -2009,6 +2016,12 @@ static int vicodec_request_validate(struct media_request *req)
+@@ -2009,6 +2016,12 @@ static int vicodec_request_validate(stru
return vb2_request_validate(req);
}
static const struct v4l2_file_operations vicodec_fops = {
.owner = THIS_MODULE,
.open = vicodec_open,
-@@ -2029,7 +2042,7 @@ static const struct video_device vicodec_videodev = {
+@@ -2029,7 +2042,7 @@ static const struct video_device vicodec
static const struct media_device_ops vicodec_m2m_media_ops = {
.req_validate = vicodec_request_validate,
};
static const struct v4l2_m2m_ops m2m_ops = {
---
-2.54.0
-
include/media/media-request.h | 2 ++
6 files changed, 56 insertions(+)
-diff --git a/drivers/media/mc/mc-device.c b/drivers/media/mc/mc-device.c
-index c0dd4ae57227..5a458160200a 100644
--- a/drivers/media/mc/mc-device.c
+++ b/drivers/media/mc/mc-device.c
-@@ -679,6 +679,23 @@ void media_device_unregister_entity(struct media_entity *entity)
+@@ -679,6 +679,23 @@ void media_device_unregister_entity(stru
}
EXPORT_SYMBOL_GPL(media_device_unregister_entity);
void media_device_init(struct media_device *mdev)
{
INIT_LIST_HEAD(&mdev->entities);
-@@ -697,6 +714,9 @@ void media_device_init(struct media_device *mdev)
+@@ -697,6 +714,9 @@ void media_device_init(struct media_devi
media_set_bus_info(mdev->bus_info, sizeof(mdev->bus_info),
mdev->dev);
dev_dbg(mdev->dev, "Media device initialized\n");
}
EXPORT_SYMBOL_GPL(media_device_init);
-@@ -748,6 +768,15 @@ int __must_check __media_device_register(struct media_device *mdev,
+@@ -748,6 +768,15 @@ int __must_check __media_device_register
dev_dbg(mdev->dev, "Media device registered\n");
return 0;
}
EXPORT_SYMBOL_GPL(__media_device_register);
-@@ -824,6 +853,7 @@ void media_device_unregister(struct media_device *mdev)
+@@ -824,6 +853,7 @@ void media_device_unregister(struct medi
dev_dbg(mdev->dev, "Media device unregistered\n");
device_remove_file(&mdev->devnode->dev, &dev_attr_model);
media_devnode_unregister(mdev->devnode);
/* devnode free is handled in media_devnode_*() */
-diff --git a/drivers/media/mc/mc-devnode.c b/drivers/media/mc/mc-devnode.c
-index 6daa7aa99442..51260a7d6921 100644
--- a/drivers/media/mc/mc-devnode.c
+++ b/drivers/media/mc/mc-devnode.c
@@ -45,6 +45,9 @@ static dev_t media_dev_t;
/* Called when the last user of the media device exits. */
static void media_devnode_release(struct device *cd)
{
-@@ -231,6 +234,7 @@ int __must_check media_devnode_register(struct media_device *mdev,
+@@ -231,6 +234,7 @@ int __must_check media_devnode_register(
if (devnode->parent)
devnode->dev.parent = devnode->parent;
dev_set_name(&devnode->dev, "media%d", devnode->minor);
device_initialize(&devnode->dev);
/* Part 2: Initialize the character device */
-@@ -309,6 +313,7 @@ static int __init media_devnode_init(void)
+@@ -309,6 +313,7 @@ static int __init media_devnode_init(voi
static void __exit media_devnode_exit(void)
{
bus_unregister(&media_bus_type);
unregister_chrdev_region(media_dev_t, MEDIA_NUM_DEVICES);
}
-diff --git a/drivers/media/mc/mc-request.c b/drivers/media/mc/mc-request.c
-index 48045ee3cc7f..4d94fde750e8 100644
--- a/drivers/media/mc/mc-request.c
+++ b/drivers/media/mc/mc-request.c
-@@ -75,6 +75,7 @@ static void media_request_release(struct kref *kref)
+@@ -75,6 +75,7 @@ static void media_request_release(struct
mdev->ops->req_free(req);
else
kfree(req);
}
void media_request_put(struct media_request *req)
-@@ -331,6 +332,7 @@ int media_request_alloc(struct media_device *mdev, int *alloc_fd)
+@@ -331,6 +332,7 @@ int media_request_alloc(struct media_dev
snprintf(req->debug_str, sizeof(req->debug_str), "%u:%d",
atomic_inc_return(&mdev->request_id), fd);
dev_dbg(mdev->dev, "request: allocated %s\n", req->debug_str);
fd_install(fd, filp);
-@@ -354,10 +356,12 @@ static void media_request_object_release(struct kref *kref)
+@@ -354,10 +356,12 @@ static void media_request_object_release
struct media_request_object *obj =
container_of(kref, struct media_request_object, kref);
struct media_request *req = obj->req;
}
struct media_request_object *
-@@ -422,6 +426,7 @@ int media_request_object_bind(struct media_request *req,
+@@ -422,6 +426,7 @@ int media_request_object_bind(struct med
obj->req = req;
obj->ops = ops;
obj->priv = priv;
if (is_buffer)
list_add_tail(&obj->list, &req->objects);
-@@ -429,6 +434,7 @@ int media_request_object_bind(struct media_request *req,
+@@ -429,6 +434,7 @@ int media_request_object_bind(struct med
list_add(&obj->list, &req->objects);
req->num_incomplete_objects++;
ret = 0;
unlock:
spin_unlock_irqrestore(&req->lock, flags);
-diff --git a/include/media/media-device.h b/include/media/media-device.h
-index 53d2a16a70b0..749c327e3c58 100644
--- a/include/media/media-device.h
+++ b/include/media/media-device.h
@@ -11,6 +11,7 @@
atomic_t request_id;
};
-diff --git a/include/media/media-devnode.h b/include/media/media-devnode.h
-index d27c1c646c28..dbcabeffcb57 100644
--- a/include/media/media-devnode.h
+++ b/include/media/media-devnode.h
@@ -20,9 +20,13 @@
/*
* Flag to mark the media_devnode struct as registered. Drivers must not touch
* this flag directly, it will be set and cleared by media_devnode_register and
-diff --git a/include/media/media-request.h b/include/media/media-request.h
-index e4bfb1cf157e..2d58f274d482 100644
--- a/include/media/media-request.h
+++ b/include/media/media-request.h
@@ -290,6 +290,7 @@ struct media_request_object_ops {
const struct media_request_object_ops *ops;
void *priv;
struct media_request *req;
---
-2.54.0
-
.../media/v4l/pixfmt-yuv-planar.rst | 42 +++++++++++++++++++
1 file changed, 42 insertions(+)
-diff --git a/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst b/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst
-index 6e4f399f1f88..772f6dbabcfd 100644
--- a/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst
+++ b/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst
-@@ -955,6 +955,48 @@ Data in the 12 high bits, zeros in the 4 low bits, arranged in little endian ord
+@@ -955,6 +955,48 @@ Data in the 12 high bits, zeros in the 4
- Cb\ :sub:`11`
- Cr\ :sub:`11`
Fully Planar YUV Formats
========================
---
-2.54.0
-
include/uapi/linux/videodev2.h | 4 ++++
2 files changed, 6 insertions(+)
-diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
-index 9fb5528fa807..48ed60b41a34 100644
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
-@@ -1379,7 +1379,9 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt)
+@@ -1379,7 +1379,9 @@ static void v4l_fill_fmtdesc(struct v4l2
case V4L2_PIX_FMT_NV16M: descr = "Y/UV 4:2:2 (N-C)"; break;
case V4L2_PIX_FMT_NV61M: descr = "Y/VU 4:2:2 (N-C)"; break;
case V4L2_PIX_FMT_NV12MT: descr = "Y/UV 4:2:0 (64x32 MB, N-C)"; break;
case V4L2_PIX_FMT_P012M: descr = "12-bit Y/UV 4:2:0 (N-C)"; break;
case V4L2_PIX_FMT_YUV420M: descr = "Planar YUV 4:2:0 (N-C)"; break;
case V4L2_PIX_FMT_YVU420M: descr = "Planar YVU 4:2:0 (N-C)"; break;
-diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
-index c73999fa011b..a12907cde6fa 100644
--- a/include/uapi/linux/videodev2.h
+++ b/include/uapi/linux/videodev2.h
@@ -702,6 +702,10 @@ struct v4l2_pix_format {
/* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */
#define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1') /* 8 BGBG.. GRGR.. */
---
-2.54.0
-
1 file changed, 70 insertions(+)
create mode 100644 Documentation/devicetree/bindings/media/raspberrypi,hevc-dec.yaml
-diff --git a/Documentation/devicetree/bindings/media/raspberrypi,hevc-dec.yaml b/Documentation/devicetree/bindings/media/raspberrypi,hevc-dec.yaml
-new file mode 100644
-index 000000000000..b86534f2689f
--- /dev/null
+++ b/Documentation/devicetree/bindings/media/raspberrypi,hevc-dec.yaml
@@ -0,0 +1,70 @@
+ };
+
+...
---
-2.54.0
-
create mode 100644 drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c
create mode 100644 drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.h
-diff --git a/MAINTAINERS b/MAINTAINERS
-index 52ede0718fd1..203e45741c1a 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -21519,6 +21519,16 @@ S: Maintained
+@@ -21528,6 +21528,16 @@ S: Maintained
F: Documentation/devicetree/bindings/spi/raspberrypi,rp2040-gpio-bridge.yaml
F: drivers/spi/spi-rp2040-gpio-bridge.c
RASPBERRY PI PISP BACK END
M: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
R: Raspberry Pi Kernel Maintenance <kernel-list@raspberrypi.com>
-diff --git a/drivers/media/platform/raspberrypi/Kconfig b/drivers/media/platform/raspberrypi/Kconfig
-index 64181cecb5d4..1d1106713aff 100644
--- a/drivers/media/platform/raspberrypi/Kconfig
+++ b/drivers/media/platform/raspberrypi/Kconfig
@@ -2,6 +2,7 @@
source "drivers/media/platform/raspberrypi/pisp_be/Kconfig"
source "drivers/media/platform/raspberrypi/rp1-cfe/Kconfig"
source "drivers/media/platform/raspberrypi/rp1_cfe/Kconfig"
-diff --git a/drivers/media/platform/raspberrypi/Makefile b/drivers/media/platform/raspberrypi/Makefile
-index ec91c50a985c..69f801a5ca7c 100644
--- a/drivers/media/platform/raspberrypi/Makefile
+++ b/drivers/media/platform/raspberrypi/Makefile
@@ -1,5 +1,6 @@
obj-y += pisp_be/
obj-y += rp1-cfe/
obj-y += rp1_cfe/
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/Kconfig b/drivers/media/platform/raspberrypi/hevc_dec/Kconfig
-new file mode 100644
-index 000000000000..ae1fd079e5c9
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/hevc_dec/Kconfig
@@ -0,0 +1,17 @@
+ To compile this driver as a module, choose M here: the module
+ will be called rpi-hevc-dec.
+
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/Makefile b/drivers/media/platform/raspberrypi/hevc_dec/Makefile
-new file mode 100644
-index 000000000000..b6506bf2e00d
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/hevc_dec/Makefile
@@ -0,0 +1,5 @@
+
+rpi-hevc-dec-y = hevc_d.o hevc_d_video.o hevc_d_hw.o\
+ hevc_d_h265.o
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d.c b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d.c
-new file mode 100644
-index 000000000000..6ff8d37fb1e3
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d.c
@@ -0,0 +1,459 @@
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("John Cox <john.cox@raspberrypi.com>");
+MODULE_DESCRIPTION("Raspberry Pi HEVC V4L2 driver");
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d.h b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d.h
-new file mode 100644
-index 000000000000..37c2d1612d2a
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d.h
@@ -0,0 +1,189 @@
+void *hevc_d_find_control_data(struct hevc_d_ctx *ctx, u32 id);
+
+#endif
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_h265.c b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_h265.c
-new file mode 100644
-index 000000000000..6c9a9d6db15a
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_h265.c
@@ -0,0 +1,2585 @@
+ VB2_BUF_STATE_ERROR);
+ media_request_manual_complete(src_req);
+}
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_h265.h b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_h265.h
-new file mode 100644
-index 000000000000..775fe7de5dd6
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_h265.h
@@ -0,0 +1,23 @@
+void hevc_d_device_run(void *priv);
+
+#endif
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_hw.c b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_hw.c
-new file mode 100644
-index 000000000000..5030a6909301
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_hw.c
@@ -0,0 +1,376 @@
+ ictl_uninit(&dev->ic_active2);
+}
+
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_hw.h b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_hw.h
-new file mode 100644
-index 000000000000..8d91931aadf2
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_hw.h
@@ -0,0 +1,303 @@
+void hevc_d_hw_remove(struct hevc_d_dev *dev);
+
+#endif
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c
-new file mode 100644
-index 000000000000..cc5e5b888a56
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c
@@ -0,0 +1,749 @@
+
+ return vb2_queue_init(dst_vq);
+}
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.h b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.h
-new file mode 100644
-index 000000000000..3ea193423194
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.h
@@ -0,0 +1,38 @@
+void hevc_d_prepare_src_format(struct v4l2_pix_format_mplane *pix_fmt);
+
+#endif
---
-2.54.0
-
drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c
-index cc5e5b888a56..274af191d9e6 100644
--- a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c
+++ b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c
-@@ -284,8 +284,8 @@ static u32 pixelformat_from_sps(const struct v4l2_ctrl_hevc_sps * const sps,
+@@ -284,8 +284,8 @@ static u32 pixelformat_from_sps(const st
const int index)
{
static const u32 all_formats[] = {
V4L2_PIX_FMT_NV12_COL128,
V4L2_PIX_FMT_NV12_10_COL128,
};
-@@ -298,11 +298,12 @@ static u32 pixelformat_from_sps(const struct v4l2_ctrl_hevc_sps * const sps,
+@@ -298,11 +298,12 @@ static u32 pixelformat_from_sps(const st
pf = all_formats[index];
} else {
if (index == 0) {
if (sps->bit_depth_luma_minus8 == 0)
pf = V4L2_PIX_FMT_NV12_COL128;
else if (sps->bit_depth_luma_minus8 == 2)
---
-2.54.0
-
include/uapi/linux/videodev2.h | 4 ++++
2 files changed, 6 insertions(+)
-diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
-index 48ed60b41a34..69fdc766dddb 100644
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
-@@ -1372,6 +1372,8 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt)
+@@ -1372,6 +1372,8 @@ static void v4l_fill_fmtdesc(struct v4l2
case V4L2_PIX_FMT_NV12_4L4: descr = "Y/UV 4:2:0 (4x4 Linear)"; break;
case V4L2_PIX_FMT_NV12_16L16: descr = "Y/UV 4:2:0 (16x16 Linear)"; break;
case V4L2_PIX_FMT_NV12_32L32: descr = "Y/UV 4:2:0 (32x32 Linear)"; break;
case V4L2_PIX_FMT_NV15_4L4: descr = "10-bit Y/UV 4:2:0 (4x4 Linear)"; break;
case V4L2_PIX_FMT_P010_4L4: descr = "10-bit Y/UV 4:2:0 (4x4 Linear)"; break;
case V4L2_PIX_FMT_NV12M: descr = "Y/UV 4:2:0 (N-C)"; break;
-diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
-index a12907cde6fa..6dff9542a5d7 100644
--- a/include/uapi/linux/videodev2.h
+++ b/include/uapi/linux/videodev2.h
@@ -696,6 +696,10 @@ struct v4l2_pix_format {
/* Tiled YUV formats, non contiguous planes */
#define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 64x32 tiles */
---
-2.54.0
-
drivers/gpu/drm/drm_framebuffer.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
-diff --git a/drivers/gpu/drm/drm_framebuffer.c b/drivers/gpu/drm/drm_framebuffer.c
-index 6d2bea563f06..ae04dd491163 100644
--- a/drivers/gpu/drm/drm_framebuffer.c
+++ b/drivers/gpu/drm/drm_framebuffer.c
-@@ -190,7 +190,8 @@ static int framebuffer_check(struct drm_device *dev,
+@@ -190,7 +190,8 @@ static int framebuffer_check(struct drm_
if ((uint64_t) height * r->pitches[i] + r->offsets[i] > UINT_MAX)
return -ERANGE;
drm_dbg_kms(dev, "bad pitch %u for plane %d\n", r->pitches[i], i);
return -EINVAL;
}
---
-2.54.0
-
drivers/pci/controller/pcie-brcmstb.c | 35 +++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
-diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c
-index 7e9b2f6a604a..703a0ed99fbd 100644
--- a/drivers/pci/controller/pcie-brcmstb.c
+++ b/drivers/pci/controller/pcie-brcmstb.c
@@ -213,6 +213,17 @@
/* Forward declarations */
struct brcm_pcie;
-@@ -862,6 +873,30 @@ static int brcm_pcie_post_setup_bcm2712(struct brcm_pcie *pcie)
+@@ -862,6 +873,30 @@ static int brcm_pcie_post_setup_bcm2712(
tmp |= 0x12;
writel(tmp, pcie->base + PCIE_RC_PL_PHY_CTL_15);
return 0;
}
---
-2.54.0
-
drivers/pci/controller/pcie-brcmstb.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
-diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c
-index 703a0ed99fbd..57603887e595 100644
--- a/drivers/pci/controller/pcie-brcmstb.c
+++ b/drivers/pci/controller/pcie-brcmstb.c
-@@ -1375,7 +1375,7 @@ static int brcm_pcie_start_link(struct brcm_pcie *pcie)
+@@ -1375,7 +1375,7 @@ static int brcm_pcie_start_link(struct b
{
struct device *dev = pcie->dev;
void __iomem *base = pcie->base;
bool ssc_good = false;
int ret, i;
-@@ -1420,6 +1420,17 @@ static int brcm_pcie_start_link(struct brcm_pcie *pcie)
+@@ -1420,6 +1420,17 @@ static int brcm_pcie_start_link(struct b
pci_speed_string(pcie_link_speed[cls]), nlw,
ssc_good ? "(SSC)" : "(!SSC)");
return 0;
}
---
-2.54.0
-
drivers/pci/controller/pcie-brcmstb.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
-diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c
-index 57603887e595..c48501aa2df2 100644
--- a/drivers/pci/controller/pcie-brcmstb.c
+++ b/drivers/pci/controller/pcie-brcmstb.c
@@ -260,6 +260,12 @@ struct inbound_win {
struct pcie_cfg_data {
const int *offsets;
const enum pcie_soc_base soc_base;
-@@ -1824,7 +1830,7 @@ static const struct pcie_cfg_data bcm2712_cfg = {
+@@ -1824,7 +1830,7 @@ static const struct pcie_cfg_data bcm271
.perst_set = brcm_pcie_perst_set_7278,
.bridge_sw_init_set = brcm_pcie_bridge_sw_init_set_generic,
.post_setup = brcm_pcie_post_setup_bcm2712,
.num_inbound_wins = 10,
};
-@@ -1941,7 +1947,8 @@ static int brcm_pcie_probe(struct platform_device *pdev)
+@@ -1941,7 +1947,8 @@ static int brcm_pcie_probe(struct platfo
ret = of_pci_get_max_link_speed(np);
pcie->gen = (ret < 0) ? 0 : ret;
pcie->rescal = devm_reset_control_get_optional_shared(&pdev->dev, "rescal");
if (IS_ERR(pcie->rescal))
---
-2.54.0
-
.../bindings/pci/brcm,stb-pcie.yaml | 28 +++++++++++++++++++
1 file changed, 28 insertions(+)
-diff --git a/Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml b/Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
-index 812ef5957cfc..5b47de171a8d 100644
--- a/Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
+++ b/Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
@@ -84,6 +84,14 @@ properties:
unevaluatedProperties: false
examples:
---
-2.54.0
-
drivers/pci/controller/pcie-brcmstb.c | 120 ++++++++++++++++++++++++++
1 file changed, 120 insertions(+)
-diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c
-index c48501aa2df2..af7c2e8b1afd 100644
--- a/drivers/pci/controller/pcie-brcmstb.c
+++ b/drivers/pci/controller/pcie-brcmstb.c
@@ -214,6 +214,22 @@
#define PCIE_MISC_AXI_READ_ERROR_DATA 0x4170
/* Forward declarations */
-@@ -856,6 +897,7 @@ static int brcm_pcie_post_setup_bcm2712(struct brcm_pcie *pcie)
+@@ -856,6 +897,7 @@ static int brcm_pcie_post_setup_bcm2712(
static const u8 regs[] = { 0x16, 0x17, 0x18, 0x19, 0x1b, 0x1c, 0x1e };
int ret, i;
u32 tmp;
/* Allow a 54MHz (xosc) refclk source */
ret = brcm_pcie_mdio_write(pcie->base, MDIO_PORT0, SET_ADDR_OFFSET, 0x1600);
-@@ -903,6 +945,84 @@ static int brcm_pcie_post_setup_bcm2712(struct brcm_pcie *pcie)
+@@ -903,6 +945,84 @@ static int brcm_pcie_post_setup_bcm2712(
writel(0xB2D0000, pcie->base + PCIE_MISC_UBUS_TIMEOUT);
writel(0xABA0000, pcie->base + PCIE_MISC_RC_CONFIG_RETRY_TIMEOUT);
return 0;
}
---
-2.54.0
-
Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml | 6 ++++++
1 file changed, 6 insertions(+)
-diff --git a/Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml b/Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
-index 5b47de171a8d..2ba0a0d1aaf4 100644
--- a/Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
+++ b/Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
@@ -104,6 +104,12 @@ properties:
brcm,vdm-qos-map:
description: Array of u8 elements which assigns each per-TC FIFO
a base AXI priority with automatic elevation depending on
---
-2.54.0
-
drivers/pci/controller/pcie-brcmstb.c | 25 ++++++++++++++++++++++++-
1 file changed, 24 insertions(+), 1 deletion(-)
-diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c
-index af7c2e8b1afd..1ec6052d5c02 100644
--- a/drivers/pci/controller/pcie-brcmstb.c
+++ b/drivers/pci/controller/pcie-brcmstb.c
@@ -135,6 +135,7 @@
};
static inline bool is_bmips(const struct brcm_pcie *pcie)
-@@ -1504,13 +1506,32 @@ static int brcm_pcie_start_link(struct brcm_pcie *pcie)
+@@ -1504,13 +1506,32 @@ static int brcm_pcie_start_link(struct b
u16 nlw, cls, lnksta, tmp16;
bool ssc_good = false;
int ret, i;
if (ret)
return ret;
-@@ -2070,6 +2091,8 @@ static int brcm_pcie_probe(struct platform_device *pdev)
+@@ -2070,6 +2091,8 @@ static int brcm_pcie_probe(struct platfo
pcie->ssc = !(pcie->cfg->quirks & CFG_QUIRK_NO_SSC) &&
of_property_read_bool(np, "brcm,enable-ssc");
pcie->rescal = devm_reset_control_get_optional_shared(&pdev->dev, "rescal");
if (IS_ERR(pcie->rescal))
return PTR_ERR(pcie->rescal);
---
-2.54.0
-
Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml | 8 ++++++++
1 file changed, 8 insertions(+)
-diff --git a/Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml b/Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
-index 2ba0a0d1aaf4..a50d50657eea 100644
--- a/Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
+++ b/Documentation/devicetree/bindings/pci/brcm,stb-pcie.yaml
@@ -134,6 +134,14 @@ properties:
required:
- compatible
- reg
---
-2.54.0
-
3 files changed, 491 insertions(+)
create mode 100644 drivers/gpu/drm/panel/panel-ilitek-ili9806e-spi.c
-diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig
-index 33c484be76ab..ce422834e213 100644
--- a/drivers/gpu/drm/panel/Kconfig
+++ b/drivers/gpu/drm/panel/Kconfig
@@ -266,6 +266,17 @@ config DRM_PANEL_ILITEK_ILI9806E
config DRM_PANEL_ILITEK_ILI9881C
tristate "Ilitek ILI9881C-based panels"
depends on OF
-diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile
-index d04639d9dbd4..da8f51612683 100644
--- a/drivers/gpu/drm/panel/Makefile
+++ b/drivers/gpu/drm/panel/Makefile
-@@ -27,6 +27,7 @@ obj-$(CONFIG_DRM_PANEL_ILITEK_IL9322) += panel-ilitek-ili9322.o
+@@ -27,6 +27,7 @@ obj-$(CONFIG_DRM_PANEL_ILITEK_IL9322) +=
obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9341) += panel-ilitek-ili9341.o
obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9805) += panel-ilitek-ili9805.o
obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9806E) += panel-ilitek-ili9806e.o
obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9881C) += panel-ilitek-ili9881c.o
obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9882T) += panel-ilitek-ili9882t.o
obj-$(CONFIG_DRM_PANEL_INNOLUX_EJ030NA) += panel-innolux-ej030na.o
-diff --git a/drivers/gpu/drm/panel/panel-ilitek-ili9806e-spi.c b/drivers/gpu/drm/panel/panel-ilitek-ili9806e-spi.c
-new file mode 100644
-index 000000000000..dd5fbd23ba26
--- /dev/null
+++ b/drivers/gpu/drm/panel/panel-ilitek-ili9806e-spi.c
@@ -0,0 +1,479 @@
+MODULE_AUTHOR("Dave Stevenson <dave.stevenson@raspberrypi.com>");
+MODULE_DESCRIPTION("ili9806 LCD panel driver");
+MODULE_LICENSE("GPL v2");
---
-2.54.0
-
drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
-diff --git a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
-index 204f0b1adaa3..21c11c6f7b42 100644
--- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
+++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
-@@ -367,7 +367,8 @@ static void axi_desc_put(struct axi_dma_desc *desc)
+@@ -367,7 +367,8 @@ static void axi_desc_put(struct axi_dma_
for (descs_put = 0; descs_put < count; descs_put++) {
hw_desc = &desc->hw_desc[descs_put];
}
kfree(desc->hw_desc);
---
-2.54.0
-
drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
-diff --git a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
-index 21c11c6f7b42..1b723cbfb7ce 100644
--- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
+++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
-@@ -750,11 +750,6 @@ static int dw_axi_dma_set_hw_desc(struct axi_dma_chan *chan,
+@@ -748,11 +748,6 @@ static int dw_axi_dma_set_hw_desc(struct
mem_width = __ffs(data_width | mem_addr | len);
/* Use a reasonable upper limit otherwise residue reporting granularity grows large */
mem_burst_msize = axi_dma_encode_msize(16);
-@@ -799,6 +794,11 @@ static int dw_axi_dma_set_hw_desc(struct axi_dma_chan *chan,
+@@ -797,6 +792,11 @@ static int dw_axi_dma_set_hw_desc(struct
return -EINVAL;
}
if (block_ts > axi_block_ts)
return -EINVAL;
---
-2.54.0
-
drivers/pci/controller/pcie-brcmstb.c | 373 ++++++++++++++++++++++++++
1 file changed, 373 insertions(+)
-diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c
-index 1ec6052d5c02..16e612ae835c 100644
--- a/drivers/pci/controller/pcie-brcmstb.c
+++ b/drivers/pci/controller/pcie-brcmstb.c
@@ -5,6 +5,7 @@
};
static inline bool is_bmips(const struct brcm_pcie *pcie)
-@@ -1499,6 +1628,133 @@ static void brcm_config_clkreq(struct brcm_pcie *pcie)
+@@ -1499,6 +1628,133 @@ static void brcm_config_clkreq(struct br
dev_info(pcie->dev, "clkreq-mode set to %s\n", mode);
}
static int brcm_pcie_start_link(struct brcm_pcie *pcie)
{
struct device *dev = pcie->dev;
-@@ -1512,6 +1768,8 @@ static int brcm_pcie_start_link(struct brcm_pcie *pcie)
+@@ -1512,6 +1768,8 @@ static int brcm_pcie_start_link(struct b
if (pcie->gen)
brcm_pcie_set_gen(pcie, pcie->gen);
/* Unassert the fundamental reset */
if (pcie->tperst_clk_ms) {
/*
-@@ -1535,6 +1793,12 @@ static int brcm_pcie_start_link(struct brcm_pcie *pcie)
+@@ -1535,6 +1793,12 @@ static int brcm_pcie_start_link(struct b
if (ret)
return ret;
msleep(PCIE_RESET_CONFIG_WAIT_MS);
/*
-@@ -1567,6 +1831,9 @@ static int brcm_pcie_start_link(struct brcm_pcie *pcie)
+@@ -1567,6 +1831,9 @@ static int brcm_pcie_start_link(struct b
pci_speed_string(pcie_link_speed[cls]), nlw,
ssc_good ? "(SSC)" : "(!SSC)");
/*
* RootCtl bits are reset by perst_n, which undoes pci_enable_crs()
* called prior to pci_add_new_bus() during probe. Re-enable here.
-@@ -1898,6 +2165,7 @@ static int brcm_pcie_resume_noirq(struct device *dev)
+@@ -1898,6 +2165,7 @@ err_disable_clk:
static void __brcm_pcie_remove(struct brcm_pcie *pcie)
{
brcm_msi_remove(pcie);
brcm_pcie_turn_off(pcie);
if (brcm_phy_stop(pcie))
-@@ -2054,6 +2322,98 @@ static struct pci_ops brcm7425_pcie_ops = {
+@@ -2054,6 +2322,98 @@ static struct pci_ops brcm7425_pcie_ops
.remove_bus = brcm_pcie_remove_bus,
};
static int brcm_pcie_probe(struct platform_device *pdev)
{
struct device_node *np = pdev->dev.of_node;
-@@ -2076,6 +2436,19 @@ static int brcm_pcie_probe(struct platform_device *pdev)
+@@ -2076,6 +2436,19 @@ static int brcm_pcie_probe(struct platfo
pcie->dev = &pdev->dev;
pcie->np = np;
pcie->cfg = data;
pcie->base = devm_platform_ioremap_resource(pdev, 0);
if (IS_ERR(pcie->base))
---
-2.54.0
-
drivers/pci/controller/pcie-brcmstb.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
-diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c
-index 16e612ae835c..eb8ef11d89ed 100644
--- a/drivers/pci/controller/pcie-brcmstb.c
+++ b/drivers/pci/controller/pcie-brcmstb.c
@@ -165,11 +165,15 @@
PCIE_MISC_HARD_PCIE_HARD_DEBUG_L1SS_ENABLE_MASK)
#define PCIE_MISC_UBUS_BAR1_CONFIG_REMAP 0x40ac
-@@ -1616,12 +1620,21 @@ static void brcm_config_clkreq(struct brcm_pcie *pcie)
+@@ -1616,12 +1620,21 @@ static void brcm_config_clkreq(struct br
} else {
/*
}
writel(clkreq_cntl, pcie->base + HARD_DEBUG(pcie));
---
-2.54.0
-
drivers/pci/quirks.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
-diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
-index d32a47e81fcf..8c02d2babf23 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
-@@ -6286,6 +6286,22 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x56b0, aspm_l1_acceptable_latency
+@@ -6293,6 +6293,22 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x56b1, aspm_l1_acceptable_latency);
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x56c0, aspm_l1_acceptable_latency);
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x56c1, aspm_l1_acceptable_latency);
#endif
#ifdef CONFIG_PCIE_DPC
---
-2.54.0
-
drivers/usb/host/xhci.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
-diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
-index 3c89f4affc1c..a25ce13c47d7 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -41,6 +41,10 @@ static unsigned long long quirks;
static bool td_on_ring(struct xhci_td *td, struct xhci_ring *ring)
{
struct xhci_segment *seg;
-@@ -4992,7 +4996,7 @@ static u16 xhci_calculate_u1_timeout(struct xhci_hcd *xhci,
+@@ -4991,7 +4995,7 @@ static u16 xhci_calculate_u1_timeout(str
}
}
timeout_ns = xhci_calculate_intel_u1_timeout(udev, desc);
else
timeout_ns = udev->u1_params.sel;
-@@ -5056,7 +5060,7 @@ static u16 xhci_calculate_u2_timeout(struct xhci_hcd *xhci,
+@@ -5055,7 +5059,7 @@ static u16 xhci_calculate_u2_timeout(str
}
}
timeout_ns = xhci_calculate_intel_u2_timeout(udev, desc);
else
timeout_ns = udev->u2_params.sel;
---
-2.54.0
-
drivers/media/i2c/imx219.c | 1 +
1 file changed, 1 insertion(+)
-diff --git a/drivers/media/i2c/imx219.c b/drivers/media/i2c/imx219.c
-index 300935b1ef24..9b3ab3a06e38 100644
--- a/drivers/media/i2c/imx219.c
+++ b/drivers/media/i2c/imx219.c
-@@ -876,6 +876,7 @@ static int imx219_set_pad_format(struct v4l2_subdev *sd,
+@@ -876,6 +876,7 @@ static int imx219_set_pad_format(struct
*/
bin_h = min(IMX219_PIXEL_ARRAY_WIDTH / format->width, 2U);
bin_v = min(IMX219_PIXEL_ARRAY_HEIGHT / format->height, 2U);
/* Ensure bin_h and bin_v are same to avoid 1:2 or 2:1 stretching */
binning = min(bin_h, bin_v);
---
-2.54.0
-
drivers/media/i2c/imx219.c | 68 ++++++++++++++++++++++++--------------
1 file changed, 43 insertions(+), 25 deletions(-)
-diff --git a/drivers/media/i2c/imx219.c b/drivers/media/i2c/imx219.c
-index 9b3ab3a06e38..f024ea4bacd5 100644
--- a/drivers/media/i2c/imx219.c
+++ b/drivers/media/i2c/imx219.c
-@@ -400,42 +400,57 @@ static u32 imx219_get_format_bpp(const struct v4l2_mbus_framefmt *format)
+@@ -400,42 +400,57 @@ static u32 imx219_get_format_bpp(const s
}
}
}
/* -----------------------------------------------------------------------------
-@@ -671,6 +686,7 @@ static int imx219_set_framefmt(struct imx219 *imx219,
+@@ -671,6 +686,7 @@ static int imx219_set_framefmt(struct im
{
const struct v4l2_mbus_framefmt *format;
const struct v4l2_rect *crop;
u8 bin_h, bin_v;
u32 bpp;
int ret = 0;
-@@ -688,9 +704,11 @@ static int imx219_set_framefmt(struct imx219 *imx219,
+@@ -688,9 +704,11 @@ static int imx219_set_framefmt(struct im
cci_write(imx219->regmap, IMX219_REG_Y_ADD_END_A,
crop->top - IMX219_PIXEL_ARRAY_TOP + crop->height - 1, &ret);
cci_write(imx219->regmap, IMX219_REG_X_OUTPUT_SIZE,
format->width, &ret);
---
-2.54.0
-
drivers/media/i2c/imx219.c | 32 +++++++++++++++++++++++++++++++-
1 file changed, 31 insertions(+), 1 deletion(-)
-diff --git a/drivers/media/i2c/imx219.c b/drivers/media/i2c/imx219.c
-index f024ea4bacd5..ee392ce98ba6 100644
--- a/drivers/media/i2c/imx219.c
+++ b/drivers/media/i2c/imx219.c
@@ -146,6 +146,12 @@
};
static const struct cci_reg_sequence imx219_common_regs[] = {
-@@ -313,24 +323,44 @@ static const struct imx219_mode supported_modes[] = {
+@@ -313,24 +323,44 @@ static const struct imx219_mode supporte
.width = 3280,
.height = 2464,
.fll_def = 3526,
},
};
-@@ -431,7 +461,7 @@ static unsigned int imx219_get_binning(struct v4l2_subdev_state *state,
+@@ -431,7 +461,7 @@ static unsigned int imx219_get_binning(s
*bin_v = IMX219_BINNING_NONE;
if (*bin_h == 2 && *bin_v == 2)
else if (*bin_h == 2 || *bin_v == 2)
/*
* Don't use analog binning if only one dimension
---
-2.54.0
-
drivers/media/i2c/imx335.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
-diff --git a/drivers/media/i2c/imx335.c b/drivers/media/i2c/imx335.c
-index c043df2f15fb..213cfb727661 100644
--- a/drivers/media/i2c/imx335.c
+++ b/drivers/media/i2c/imx335.c
@@ -252,7 +252,7 @@ static const int imx335_tpg_val[] = {
{ IMX335_REG_MODE_SELECT, IMX335_MODE_STANDBY },
{ IMX335_REG_MASTER_MODE, 0x00 },
{ IMX335_REG_WINMODE, 0x04 },
-@@ -416,8 +416,8 @@ static const struct imx335_mode supported_mode = {
+@@ -416,8 +416,8 @@ static const struct imx335_mode supporte
.vblank_max = 133060,
.pclk = 396000000,
.reg_list = {
},
};
---
-2.54.0
-
drivers/media/i2c/imx335.c | 71 ++++++++++++++++++++++++++++++++++++--
1 file changed, 69 insertions(+), 2 deletions(-)
-diff --git a/drivers/media/i2c/imx335.c b/drivers/media/i2c/imx335.c
-index 213cfb727661..27baf6c9b426 100644
--- a/drivers/media/i2c/imx335.c
+++ b/drivers/media/i2c/imx335.c
@@ -56,6 +56,9 @@
#define IMX335_REG_TPG_TESTCLKEN CCI_REG8(0x3148)
#define IMX335_REG_INCLKSEL1 CCI_REG16_LE(0x314c)
-@@ -155,6 +158,8 @@ static const char * const imx335_supply_name[] = {
+@@ -155,6 +158,8 @@ static const char * const imx335_supply_
* @vblank_max: Maximum vertical blanking in lines
* @pclk: Sensor pixel clock
* @reg_list: Register list for sensor mode
struct {
struct v4l2_ctrl *exp_ctrl;
struct v4l2_ctrl *again_ctrl;
-@@ -259,7 +268,6 @@ static const struct cci_reg_sequence mode_2592x1944_regs[] = {
+@@ -259,7 +268,6 @@ static const struct cci_reg_sequence mod
{ IMX335_REG_HTRIMMING_START, 48 },
{ IMX335_REG_HNUM, 2592 },
{ IMX335_REG_Y_OUT_SIZE, 1944 },
{ IMX335_REG_AREA3_WIDTH_1, 3928 },
{ IMX335_REG_OPB_SIZE_V, 0 },
{ IMX335_REG_XVS_XHS_DRV, 0x00 },
-@@ -333,6 +341,26 @@ static const struct cci_reg_sequence mode_2592x1944_regs[] = {
+@@ -333,6 +341,26 @@ static const struct cci_reg_sequence mod
{ CCI_REG8(0x3a00), 0x00 },
};
static const struct cci_reg_sequence raw10_framefmt_regs[] = {
{ IMX335_REG_ADBIT, 0x00 },
{ IMX335_REG_MDBIT, 0x00 },
-@@ -419,6 +447,14 @@ static const struct imx335_mode supported_mode = {
+@@ -419,6 +447,14 @@ static const struct imx335_mode supporte
.num_of_regs = ARRAY_SIZE(mode_2592x1944_regs),
.regs = mode_2592x1944_regs,
},
};
/**
-@@ -492,6 +528,26 @@ static int imx335_update_exp_gain(struct imx335 *imx335, u32 exposure, u32 gain)
+@@ -492,6 +528,26 @@ static int imx335_update_exp_gain(struct
return ret;
}
static int imx335_update_test_pattern(struct imx335 *imx335, u32 pattern_index)
{
int ret = 0;
-@@ -593,6 +649,10 @@ static int imx335_set_ctrl(struct v4l2_ctrl *ctrl)
-
+@@ -594,6 +650,10 @@ static int imx335_set_ctrl(struct v4l2_c
ret = imx335_update_exp_gain(imx335, exposure, analog_gain);
-+ break;
+ break;
+ case V4L2_CID_VFLIP:
+ ret = imx335_update_vertical_flip(imx335, ctrl->val);
+
- break;
++ break;
case V4L2_CID_TEST_PATTERN:
ret = imx335_update_test_pattern(imx335, ctrl->val);
-@@ -1175,7 +1235,7 @@ static int imx335_init_controls(struct imx335 *imx335)
+
+@@ -1175,7 +1235,7 @@ static int imx335_init_controls(struct i
return ret;
/* v4l2_fwnode_device_properties can add two more controls */
if (ret)
return ret;
-@@ -1210,6 +1270,13 @@ static int imx335_init_controls(struct imx335 *imx335)
+@@ -1210,6 +1270,13 @@ static int imx335_init_controls(struct i
v4l2_ctrl_cluster(2, &imx335->exp_ctrl);
imx335->vblank_ctrl = v4l2_ctrl_new_std(ctrl_hdlr,
&imx335_ctrl_ops,
V4L2_CID_VBLANK,
---
-2.54.0
-
drivers/watchdog/watchdog_dev.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
-diff --git a/drivers/watchdog/watchdog_dev.c b/drivers/watchdog/watchdog_dev.c
-index 8369fd94fc1a..033d71ffa60e 100644
--- a/drivers/watchdog/watchdog_dev.c
+++ b/drivers/watchdog/watchdog_dev.c
-@@ -943,7 +943,7 @@ static int watchdog_release(struct inode *inode, struct file *file)
+@@ -943,7 +943,7 @@ static int watchdog_release(struct inode
{
struct watchdog_core_data *wd_data = file->private_data;
struct watchdog_device *wdd;
bool running;
mutex_lock(&wd_data->lock);
-@@ -967,6 +967,9 @@ static int watchdog_release(struct inode *inode, struct file *file)
+@@ -967,6 +967,9 @@ static int watchdog_release(struct inode
if (err < 0) {
pr_crit("watchdog%d: watchdog did not stop!\n", wdd->id);
watchdog_ping(wdd);
}
watchdog_update_worker(wdd);
---
-2.54.0
-
drivers/gpu/drm/v3d/v3d_drv.c | 19 ++++++++-----------
1 file changed, 8 insertions(+), 11 deletions(-)
-diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
-index a996301f36b9..a3d29a6a3977 100644
--- a/drivers/gpu/drm/v3d/v3d_drv.c
+++ b/drivers/gpu/drm/v3d/v3d_drv.c
-@@ -418,21 +418,18 @@ static int v3d_platform_drm_probe(struct platform_device *pdev)
+@@ -426,21 +426,18 @@ static int v3d_platform_drm_probe(struct
}
}
v3d->clk_up_rate = rpi_firmware_clk_get_max_rate(firmware,
RPI_FIRMWARE_V3D_CLK_ID);
---
-2.54.0
-
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
-index 120c48c3dc79..cc98baf2d995 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
-@@ -631,7 +631,7 @@ BRCMF_FW_CLM_DEF(43430A1, "brcmfmac43430-sdio");
+@@ -631,7 +631,7 @@ BRCMF_FW_CLM_DEF(43430A1, "brcmfmac43430
BRCMF_FW_DEF(43430B0, "brcmfmac43430b0-sdio");
BRCMF_FW_CLM_DEF(43439, "brcmfmac43439-sdio");
BRCMF_FW_CLM_DEF(43455, "brcmfmac43455-sdio");
BRCMF_FW_CLM_DEF(4354, "brcmfmac4354-sdio");
BRCMF_FW_CLM_DEF(4356, "brcmfmac4356-sdio");
BRCMF_FW_DEF(4359, "brcmfmac4359-sdio");
---
-2.54.0
-
drivers/usb/host/xhci.c | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
-diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
-index a25ce13c47d7..d16fdc3804ba 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
-@@ -1620,10 +1620,11 @@ static int xhci_check_ep0_maxpacket(struct xhci_hcd *xhci, struct xhci_virt_devi
+@@ -1620,10 +1620,11 @@ static int xhci_check_ep0_maxpacket(stru
* XXX: bandwidth is not recalculated. We should probably do that.
*/
static void xhci_fixup_endpoint(struct usb_hcd *hcd, struct usb_device *udev,
struct usb_host_endpoint *ep, int interval)
-@@ -1637,10 +1638,14 @@ static void xhci_fixup_endpoint(struct usb_hcd *hcd, struct usb_device *udev,
+@@ -1637,10 +1638,14 @@ static void xhci_fixup_endpoint(struct u
int ret;
int ep_index;
unsigned long flags;
/* FS/LS interval translations */
if ((udev->speed == USB_SPEED_FULL ||
-@@ -1701,8 +1706,8 @@ static void xhci_fixup_endpoint(struct usb_hcd *hcd, struct usb_device *udev,
+@@ -1701,8 +1706,8 @@ static void xhci_fixup_endpoint(struct u
mutex_unlock(&xhci->mutex);
return;
}
spin_unlock_irqrestore(&xhci->lock, flags);
---
-2.54.0
-
drivers/firmware/raspberrypi.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/firmware/raspberrypi.c b/drivers/firmware/raspberrypi.c
-index 2498acd41acd..3f68315d1b66 100644
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
-@@ -61,7 +61,7 @@ rpi_firmware_transaction(struct rpi_firmware *fw, u32 chan, u32 data)
+@@ -61,7 +61,7 @@ rpi_firmware_transaction(struct rpi_firm
reinit_completion(&fw->c);
ret = mbox_send_message(fw->chan, &message);
if (ret >= 0) {
ret = 0;
} else {
ret = -ETIMEDOUT;
---
-2.54.0
-
drivers/gpio/gpiolib.c | 36 ++++++++++++++++++++++++++++++++++++
1 file changed, 36 insertions(+)
-diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
-index 40a882990a86..de62a64911c8 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -53,6 +53,42 @@
/* Device and char device-related information */
static DEFINE_IDA(gpio_ida);
static dev_t gpio_devt;
---
-2.54.0
-
3 files changed, 2013 insertions(+)
create mode 100644 drivers/media/i2c/mira220.c
-diff --git a/drivers/media/i2c/Kconfig b/drivers/media/i2c/Kconfig
-index 6628ee8b3efa..5fbd994aface 100644
--- a/drivers/media/i2c/Kconfig
+++ b/drivers/media/i2c/Kconfig
@@ -352,6 +352,20 @@ config VIDEO_IMX708
config VIDEO_MT9M001
tristate "mt9m001 support"
help
-diff --git a/drivers/media/i2c/Makefile b/drivers/media/i2c/Makefile
-index 609242744e62..9d139d07eb4f 100644
--- a/drivers/media/i2c/Makefile
+++ b/drivers/media/i2c/Makefile
-@@ -80,6 +80,7 @@ obj-$(CONFIG_VIDEO_MAX9271_LIB) += max9271.o
+@@ -80,6 +80,7 @@ obj-$(CONFIG_VIDEO_MAX9271_LIB) += max92
obj-$(CONFIG_VIDEO_MAX9286) += max9286.o
obj-$(CONFIG_VIDEO_MAX96714) += max96714.o
obj-$(CONFIG_VIDEO_MAX96717) += max96717.o
obj-$(CONFIG_VIDEO_ML86V7667) += ml86v7667.o
obj-$(CONFIG_VIDEO_MSP3400) += msp3400.o
obj-$(CONFIG_VIDEO_MT9M001) += mt9m001.o
-diff --git a/drivers/media/i2c/mira220.c b/drivers/media/i2c/mira220.c
-new file mode 100644
-index 000000000000..69dcc969e5d3
--- /dev/null
+++ b/drivers/media/i2c/mira220.c
@@ -0,0 +1,1998 @@
+MODULE_AUTHOR("Philippe Baetens <philippe.baetens@ams-osram.com>");
+MODULE_DESCRIPTION("ams MIRA220 sensor driver");
+MODULE_LICENSE("GPL");
---
-2.54.0
-
drivers/irqchip/irq-bcm2836.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
-diff --git a/drivers/irqchip/irq-bcm2836.c b/drivers/irqchip/irq-bcm2836.c
-index 85f16f308bcd..79cd7333bac2 100644
--- a/drivers/irqchip/irq-bcm2836.c
+++ b/drivers/irqchip/irq-bcm2836.c
-@@ -96,12 +96,17 @@ void bcm2836_arm_irqchip_spin_gpu_irq(void)
+@@ -96,12 +96,17 @@ void bcm2836_arm_irqchip_spin_gpu_irq(vo
u32 i;
void __iomem *gpurouting = (intc.base + LOCAL_GPU_ROUTING);
u32 routing_val = readl(gpurouting);
return;
}
}
---
-2.54.0
-
drivers/irqchip/irq-bcm2836.c | 2 +-
2 files changed, 4 insertions(+), 3 deletions(-)
-diff --git a/drivers/irqchip/irq-bcm2835.c b/drivers/irqchip/irq-bcm2835.c
-index a9a4ec9cdc94..8e6594c56779 100644
--- a/drivers/irqchip/irq-bcm2835.c
+++ b/drivers/irqchip/irq-bcm2835.c
-@@ -153,7 +153,8 @@ static void armctrl_unmask_irq(struct irq_data *d)
+@@ -153,7 +153,8 @@ static void armctrl_unmask_irq(struct ir
}
}
.irq_ack = armctrl_ack_irq
#endif
};
-diff --git a/drivers/irqchip/irq-bcm2836.c b/drivers/irqchip/irq-bcm2836.c
-index 79cd7333bac2..54bf6cb3349b 100644
--- a/drivers/irqchip/irq-bcm2836.c
+++ b/drivers/irqchip/irq-bcm2836.c
-@@ -89,7 +89,7 @@ static void bcm2836_arm_irqchip_unmask_gpu_irq(struct irq_data *d)
+@@ -89,7 +89,7 @@ static void bcm2836_arm_irqchip_unmask_g
{
}
void bcm2836_arm_irqchip_spin_gpu_irq(void)
{
---
-2.54.0
-
drivers/usb/dwc2/hcd.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
-diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c
-index 30eb8506617c..c64c2dee7e59 100644
--- a/drivers/usb/dwc2/hcd.c
+++ b/drivers/usb/dwc2/hcd.c
-@@ -3775,12 +3775,17 @@ static int dwc2_hcd_is_status_changed(struct dwc2_hsotg *hsotg, int port)
+@@ -3775,12 +3775,17 @@ static int dwc2_hcd_is_status_changed(st
int dwc2_hcd_get_frame_number(struct dwc2_hsotg *hsotg)
{
u32 hfnum = dwc2_readl(hsotg, HFNUM);
}
int dwc2_hcd_get_future_frame_number(struct dwc2_hsotg *hsotg, int us)
---
-2.54.0
-
drivers/usb/dwc2/hcd.c | 5 +++++
1 file changed, 5 insertions(+)
-diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c
-index c64c2dee7e59..b410d1e7c53b 100644
--- a/drivers/usb/dwc2/hcd.c
+++ b/drivers/usb/dwc2/hcd.c
-@@ -2338,6 +2338,7 @@ static void dwc2_hc_init_xfer(struct dwc2_hsotg *hsotg,
+@@ -2338,6 +2338,7 @@ static void dwc2_hc_init_xfer(struct dwc
else
chan->xfer_buf = urb->setup_packet;
chan->xfer_len = 8;
break;
case DWC2_CONTROL_DATA:
-@@ -2621,6 +2622,10 @@ static int dwc2_assign_and_init_hc(struct dwc2_hsotg *hsotg, struct dwc2_qh *qh)
+@@ -2621,6 +2622,10 @@ static int dwc2_assign_and_init_hc(struc
else
chan->do_split = 0;
/* Set the transfer attributes */
dwc2_hc_init_xfer(hsotg, chan, qtd);
---
-2.54.0
-
drivers/usb/dwc2/hcd.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
-diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c
-index b410d1e7c53b..fae72ea5aacd 100644
--- a/drivers/usb/dwc2/hcd.c
+++ b/drivers/usb/dwc2/hcd.c
-@@ -3780,17 +3780,12 @@ static int dwc2_hcd_is_status_changed(struct dwc2_hsotg *hsotg, int port)
+@@ -3780,17 +3780,12 @@ static int dwc2_hcd_is_status_changed(st
int dwc2_hcd_get_frame_number(struct dwc2_hsotg *hsotg)
{
u32 hfnum = dwc2_readl(hsotg, HFNUM);
}
int dwc2_hcd_get_future_frame_number(struct dwc2_hsotg *hsotg, int us)
-@@ -4536,8 +4531,13 @@ static int _dwc2_hcd_resume(struct usb_hcd *hcd)
+@@ -4536,8 +4531,13 @@ unlock:
static int _dwc2_hcd_get_frame_number(struct usb_hcd *hcd)
{
struct dwc2_hsotg *hsotg = dwc2_hcd_to_hsotg(hcd);
}
static void dwc2_dump_urb_info(struct usb_hcd *hcd, struct urb *urb,
---
-2.54.0
-
drivers/usb/dwc2/hcd.c | 29 ++++++++++++++++++++++++-----
1 file changed, 24 insertions(+), 5 deletions(-)
-diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c
-index fae72ea5aacd..934e8780cc04 100644
--- a/drivers/usb/dwc2/hcd.c
+++ b/drivers/usb/dwc2/hcd.c
-@@ -2448,7 +2448,7 @@ static void dwc2_free_dma_aligned_buffer(struct urb *urb)
+@@ -2448,7 +2448,7 @@ static void dwc2_free_dma_aligned_buffer
/* Restore urb->transfer_buffer from the end of the allocated area */
memcpy(&stored_xfer_buffer,
dma_get_cache_alignment()),
sizeof(urb->transfer_buffer));
-@@ -2471,17 +2471,36 @@ static int dwc2_alloc_dma_aligned_buffer(struct urb *urb, gfp_t mem_flags)
+@@ -2471,17 +2471,36 @@ static int dwc2_alloc_dma_aligned_buffer
void *kmalloc_ptr;
size_t kmalloc_size;
!((uintptr_t)urb->transfer_buffer & (DWC2_USB_DMA_ALIGN - 1)))
return 0;
-+ /*
+ /*
+ * If the URB already has a DMA mapping, this alignment mechanism won't
+ * work - the replacement buffer won't be used by the core, as the HCD layer
+ * skips mapping. Mappings have the granularity of a page, so it's unlikely that the
+ WARN_ONCE(1, "Unaligned DMA-mapped buffer");
+ return 0;
+ }
- /*
++ /*
* Allocate a buffer with enough padding for original transfer_buffer
* pointer. This allocation is guaranteed to be aligned properly for
* DMA
(dma_get_cache_alignment() - 1) +
sizeof(urb->transfer_buffer);
-@@ -2493,7 +2512,7 @@ static int dwc2_alloc_dma_aligned_buffer(struct urb *urb, gfp_t mem_flags)
+@@ -2493,7 +2512,7 @@ static int dwc2_alloc_dma_aligned_buffer
* Position value of original urb->transfer_buffer pointer to the end
* of allocation for later referencing
*/
dma_get_cache_alignment()),
&urb->transfer_buffer, sizeof(urb->transfer_buffer));
---
-2.54.0
-
drivers/usb/dwc2/hcd_intr.c | 3 +++
2 files changed, 15 insertions(+)
-diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c
-index 934e8780cc04..ea8711e2ef67 100644
--- a/drivers/usb/dwc2/hcd.c
+++ b/drivers/usb/dwc2/hcd.c
-@@ -676,6 +676,18 @@ static void dwc2_hc_init(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan)
+@@ -676,6 +676,18 @@ static void dwc2_hc_init(struct dwc2_hso
hcchar |= HCCHAR_EPDIR;
if (chan->speed == USB_SPEED_LOW)
hcchar |= HCCHAR_LSPDDEV;
hcchar |= chan->ep_type << HCCHAR_EPTYPE_SHIFT & HCCHAR_EPTYPE_MASK;
hcchar |= chan->max_packet << HCCHAR_MPS_SHIFT & HCCHAR_MPS_MASK;
dwc2_writel(hsotg, hcchar, HCCHAR(hc_num));
-diff --git a/drivers/usb/dwc2/hcd_intr.c b/drivers/usb/dwc2/hcd_intr.c
-index 5c7538d498dd..60622ef76b6b 100644
--- a/drivers/usb/dwc2/hcd_intr.c
+++ b/drivers/usb/dwc2/hcd_intr.c
-@@ -2048,6 +2048,9 @@ static void dwc2_hc_n_intr(struct dwc2_hsotg *hsotg, int chnum)
+@@ -2048,6 +2048,9 @@ static void dwc2_hc_n_intr(struct dwc2_h
chan->hcint = hcintraw;
/*
* If the channel was halted due to a dequeue, the qtd list might
* be empty or at least the first entry will not be the active qtd.
---
-2.54.0
-
drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
-index 13952dfeb3e3..e8767423aec8 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
-@@ -988,9 +988,9 @@ static const struct sdio_device_id brcmf_sdmmc_ids[] = {
+@@ -988,9 +988,9 @@ static const struct sdio_device_id brcmf
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43364, WCC),
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4335_4339, WCC),
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4339, WCC),
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43455, WCC),
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4354, WCC),
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4356, WCC),
---
-2.54.0
-
drivers/gpu/drm/drm_probe_helper.c | 4 ++++
1 file changed, 4 insertions(+)
-diff --git a/drivers/gpu/drm/drm_probe_helper.c b/drivers/gpu/drm/drm_probe_helper.c
-index 09b12c30df69..90fabf6ba43e 100644
--- a/drivers/gpu/drm/drm_probe_helper.c
+++ b/drivers/gpu/drm/drm_probe_helper.c
-@@ -164,6 +164,10 @@ static int drm_helper_probe_add_cmdline_mode(struct drm_connector *connector)
+@@ -164,6 +164,10 @@ static int drm_helper_probe_add_cmdline_
continue;
}
/* Mark the matching mode as being preferred by the user */
mode->type |= DRM_MODE_TYPE_USERDEF;
return 0;
---
-2.54.0
-
drivers/clk/clk-gpio.c | 129 +++++++++++++++++++++++++++++++++++++++--
1 file changed, 123 insertions(+), 6 deletions(-)
-diff --git a/drivers/clk/clk-gpio.c b/drivers/clk/clk-gpio.c
-index 9099c57e2715..9cdf80bb4a05 100644
--- a/drivers/clk/clk-gpio.c
+++ b/drivers/clk/clk-gpio.c
@@ -35,6 +35,7 @@
static int clk_gpio_gate_enable(struct clk_hw *hw)
{
-@@ -79,6 +112,37 @@ static const struct clk_ops clk_gpio_gate_ops = {
+@@ -79,6 +112,37 @@ static const struct clk_ops clk_gpio_gat
.is_enabled = clk_gpio_gate_is_enabled,
};
static int clk_sleeping_gpio_gate_prepare(struct clk_hw *hw)
{
struct clk_gpio *clk = to_clk_gpio(hw);
-@@ -108,6 +172,37 @@ static const struct clk_ops clk_sleeping_gpio_gate_ops = {
+@@ -108,6 +172,37 @@ static const struct clk_ops clk_sleeping
.is_prepared = clk_sleeping_gpio_gate_is_prepared,
};
/**
* DOC: basic clock multiplexer which can be controlled with a gpio output
* Traits of this clock:
-@@ -162,6 +257,7 @@ static struct clk_hw *clk_register_gpio(struct device *dev, u8 num_parents,
+@@ -162,6 +257,7 @@ static struct clk_hw *clk_register_gpio(
init.flags = CLK_SET_RATE_PARENT;
clk_gpio->gpiod = gpiod;
clk_gpio->hw.init = &init;
hw = &clk_gpio->hw;
-@@ -174,14 +270,29 @@ static struct clk_hw *clk_register_gpio(struct device *dev, u8 num_parents,
+@@ -174,14 +270,29 @@ static struct clk_hw *clk_register_gpio(
static struct clk_hw *clk_hw_register_gpio_gate(struct device *dev,
int num_parents,
return clk_register_gpio(dev, num_parents, gpiod, ops);
}
-@@ -201,8 +312,11 @@ static int gpio_clk_driver_probe(struct platform_device *pdev)
+@@ -201,8 +312,11 @@ static int gpio_clk_driver_probe(struct
struct gpio_desc *gpiod;
struct clk_hw *hw;
bool is_mux;
num_parents = of_clk_get_parent_count(node);
if (is_mux && num_parents != 2) {
-@@ -219,7 +333,9 @@ static int gpio_clk_driver_probe(struct platform_device *pdev)
+@@ -219,7 +333,9 @@ static int gpio_clk_driver_probe(struct
if (is_mux)
hw = clk_hw_register_gpio_mux(dev, gpiod);
else
if (IS_ERR(hw))
return PTR_ERR(hw);
-@@ -229,6 +345,7 @@ static int gpio_clk_driver_probe(struct platform_device *pdev)
+@@ -229,6 +345,7 @@ static int gpio_clk_driver_probe(struct
static const struct of_device_id gpio_clk_match_table[] = {
{ .compatible = "gpio-mux-clock" },
{ .compatible = "gpio-gate-clock" },
{ }
};
---
-2.54.0
-
.../bindings/clock/gpio-gate-clock.yaml | 21 ++++++++++++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)
-diff --git a/Documentation/devicetree/bindings/clock/gpio-gate-clock.yaml b/Documentation/devicetree/bindings/clock/gpio-gate-clock.yaml
-index d09d0e3f0c6e..a5fa40048bed 100644
--- a/Documentation/devicetree/bindings/clock/gpio-gate-clock.yaml
+++ b/Documentation/devicetree/bindings/clock/gpio-gate-clock.yaml
@@ -11,7 +11,15 @@ maintainers:
clocks:
maxItems: 1
-@@ -40,3 +48,14 @@ examples:
+@@ -39,4 +47,15 @@ examples:
+ clocks = <&parentclk>;
#clock-cells = <0>;
enable-gpios = <&gpio 1 GPIO_ACTIVE_HIGH>;
- };
++ };
+
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+ clocks = <&parentclk>;
+ #clock-cells = <0>;
+ enable-gpios = <&gpio 1 GPIO_ACTIVE_HIGH>;
-+ };
---
-2.54.0
-
+ };
drivers/media/platform/raspberrypi/pisp_be/Kconfig | 1 +
1 file changed, 1 insertion(+)
-diff --git a/drivers/media/platform/raspberrypi/pisp_be/Kconfig b/drivers/media/platform/raspberrypi/pisp_be/Kconfig
-index a9e51fd94aad..91ad7c1477a0 100644
--- a/drivers/media/platform/raspberrypi/pisp_be/Kconfig
+++ b/drivers/media/platform/raspberrypi/pisp_be/Kconfig
@@ -2,6 +2,7 @@ config VIDEO_RASPBERRYPI_PISP_BE
depends on ARCH_BCM2835 || COMPILE_TEST
depends on PM
select VIDEO_V4L2_SUBDEV_API
---
-2.54.0
-
.../raspberrypi/pisp_be/pisp_be_formats.h | 102 +++++++++---------
2 files changed, 52 insertions(+), 52 deletions(-)
-diff --git a/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c b/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
-index 334590583adc..2ef486432787 100644
--- a/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
+++ b/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
-@@ -1076,7 +1076,7 @@ static void pispbe_set_plane_params(struct v4l2_format *f,
+@@ -1076,7 +1076,7 @@ static void pispbe_set_plane_params(stru
unsigned int bpl, plane_size;
bpl = (f->fmt.pix_mp.width * fmt->bit_depth) >> 3;
plane_size = bpl * f->fmt.pix_mp.height *
(nplanes > 1 ? fmt->plane_factor[i] : total_plane_factor);
-diff --git a/drivers/media/platform/raspberrypi/pisp_be/pisp_be_formats.h b/drivers/media/platform/raspberrypi/pisp_be/pisp_be_formats.h
-index 09edc2774668..c44258d67b2f 100644
--- a/drivers/media/platform/raspberrypi/pisp_be/pisp_be_formats.h
+++ b/drivers/media/platform/raspberrypi/pisp_be/pisp_be_formats.h
@@ -16,7 +16,7 @@
unsigned int bit_depth;
/* 0P3 factor for plane sizing */
unsigned int plane_factor[PISPBE_MAX_PLANES];
-@@ -58,7 +58,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -58,7 +58,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_YUV420,
/* 128 alignment to ensure U/V planes are 64 byte aligned. */
.bit_depth = 8,
.plane_factor = { P3(1), P3(0.25), P3(0.25) },
.num_planes = 1,
-@@ -68,7 +68,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -68,7 +68,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_YVU420,
/* 128 alignment to ensure U/V planes are 64 byte aligned. */
.bit_depth = 8,
.plane_factor = { P3(1), P3(0.25), P3(0.25) },
.num_planes = 1,
-@@ -77,7 +77,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -77,7 +77,7 @@ static const struct pisp_be_format suppo
},
{
.fourcc = V4L2_PIX_FMT_NV12,
.bit_depth = 8,
.plane_factor = { P3(1), P3(0.5) },
.num_planes = 1,
-@@ -86,7 +86,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -86,7 +86,7 @@ static const struct pisp_be_format suppo
},
{
.fourcc = V4L2_PIX_FMT_NV21,
.bit_depth = 8,
.plane_factor = { P3(1), P3(0.5) },
.num_planes = 1,
-@@ -95,7 +95,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -95,7 +95,7 @@ static const struct pisp_be_format suppo
},
{
.fourcc = V4L2_PIX_FMT_YUYV,
.bit_depth = 16,
.plane_factor = { P3(1) },
.num_planes = 1,
-@@ -104,7 +104,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -104,7 +104,7 @@ static const struct pisp_be_format suppo
},
{
.fourcc = V4L2_PIX_FMT_UYVY,
.bit_depth = 16,
.plane_factor = { P3(1) },
.num_planes = 1,
-@@ -113,7 +113,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -113,7 +113,7 @@ static const struct pisp_be_format suppo
},
{
.fourcc = V4L2_PIX_FMT_YVYU,
.bit_depth = 16,
.plane_factor = { P3(1) },
.num_planes = 1,
-@@ -122,7 +122,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -122,7 +122,7 @@ static const struct pisp_be_format suppo
},
{
.fourcc = V4L2_PIX_FMT_VYUY,
.bit_depth = 16,
.plane_factor = { P3(1) },
.num_planes = 1,
-@@ -132,7 +132,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -132,7 +132,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_YUV422P,
/* 128 alignment to ensure U/V planes are 64 byte aligned. */
.bit_depth = 8,
.plane_factor = { P3(1), P3(0.5), P3(0.5) },
.num_planes = 1,
-@@ -142,7 +142,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -142,7 +142,7 @@ static const struct pisp_be_format suppo
/* Multiplane YUV formats */
{
.fourcc = V4L2_PIX_FMT_YUV420M,
.bit_depth = 8,
.plane_factor = { P3(1), P3(0.25), P3(0.25) },
.num_planes = 3,
-@@ -151,7 +151,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -151,7 +151,7 @@ static const struct pisp_be_format suppo
},
{
.fourcc = V4L2_PIX_FMT_NV12M,
.bit_depth = 8,
.plane_factor = { P3(1), P3(0.5) },
.num_planes = 2,
-@@ -160,7 +160,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -160,7 +160,7 @@ static const struct pisp_be_format suppo
},
{
.fourcc = V4L2_PIX_FMT_NV21M,
.bit_depth = 8,
.plane_factor = { P3(1), P3(0.5) },
.num_planes = 2,
-@@ -169,7 +169,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -169,7 +169,7 @@ static const struct pisp_be_format suppo
},
{
.fourcc = V4L2_PIX_FMT_YVU420M,
.bit_depth = 8,
.plane_factor = { P3(1), P3(0.25), P3(0.25) },
.num_planes = 3,
-@@ -178,7 +178,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -178,7 +178,7 @@ static const struct pisp_be_format suppo
},
{
.fourcc = V4L2_PIX_FMT_YUV422M,
.bit_depth = 8,
.plane_factor = { P3(1), P3(0.5), P3(0.5) },
.num_planes = 3,
-@@ -187,7 +187,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -187,7 +187,7 @@ static const struct pisp_be_format suppo
},
{
.fourcc = V4L2_PIX_FMT_YVU422M,
.bit_depth = 8,
.plane_factor = { P3(1), P3(0.5), P3(0.5) },
.num_planes = 3,
-@@ -196,7 +196,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -196,7 +196,7 @@ static const struct pisp_be_format suppo
},
{
.fourcc = V4L2_PIX_FMT_YUV444M,
.bit_depth = 8,
.plane_factor = { P3(1), P3(1), P3(1) },
.num_planes = 3,
-@@ -205,7 +205,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -205,7 +205,7 @@ static const struct pisp_be_format suppo
},
{
.fourcc = V4L2_PIX_FMT_YVU444M,
.bit_depth = 8,
.plane_factor = { P3(1), P3(1), P3(1) },
.num_planes = 3,
-@@ -215,7 +215,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -215,7 +215,7 @@ static const struct pisp_be_format suppo
/* RGB formats */
{
.fourcc = V4L2_PIX_FMT_RGB24,
.bit_depth = 24,
.plane_factor = { P3(1.0) },
.num_planes = 1,
-@@ -224,7 +224,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -224,7 +224,7 @@ static const struct pisp_be_format suppo
},
{
.fourcc = V4L2_PIX_FMT_BGR24,
.bit_depth = 24,
.plane_factor = { P3(1.0) },
.num_planes = 1,
-@@ -233,7 +233,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -233,7 +233,7 @@ static const struct pisp_be_format suppo
},
{
.fourcc = V4L2_PIX_FMT_XBGR32,
.bit_depth = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
-@@ -242,7 +242,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -242,7 +242,7 @@ static const struct pisp_be_format suppo
},
{
.fourcc = V4L2_PIX_FMT_RGBX32,
.bit_depth = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
-@@ -251,7 +251,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -251,7 +251,7 @@ static const struct pisp_be_format suppo
},
{
.fourcc = V4L2_PIX_FMT_RGB48,
.bit_depth = 48,
.plane_factor = { P3(1.0) },
.num_planes = 1,
-@@ -260,7 +260,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -260,7 +260,7 @@ static const struct pisp_be_format suppo
},
{
.fourcc = V4L2_PIX_FMT_BGR48,
.bit_depth = 48,
.plane_factor = { P3(1.0) },
.num_planes = 1,
-@@ -271,7 +271,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -271,7 +271,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_SRGGB8,
.bit_depth = 8,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -280,7 +280,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -280,7 +280,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_SBGGR8,
.bit_depth = 8,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -289,7 +289,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -289,7 +289,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_SGRBG8,
.bit_depth = 8,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -298,7 +298,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -298,7 +298,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_SGBRG8,
.bit_depth = 8,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -308,7 +308,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -308,7 +308,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_SRGGB16,
.bit_depth = 16,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -317,7 +317,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -317,7 +317,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_SBGGR16,
.bit_depth = 16,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -326,7 +326,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -326,7 +326,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_SGRBG16,
.bit_depth = 16,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -335,7 +335,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -335,7 +335,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_SGBRG16,
.bit_depth = 16,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -346,7 +346,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -346,7 +346,7 @@ static const struct pisp_be_format suppo
/* 10 bit */
.fourcc = V4L2_PIX_FMT_SRGGB10,
.bit_depth = 16,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -355,7 +355,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -355,7 +355,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_SBGGR10,
.bit_depth = 16,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -364,7 +364,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -364,7 +364,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_SGRBG10,
.bit_depth = 16,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -373,7 +373,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -373,7 +373,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_SGBRG10,
.bit_depth = 16,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -383,7 +383,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -383,7 +383,7 @@ static const struct pisp_be_format suppo
/* 12 bit */
.fourcc = V4L2_PIX_FMT_SRGGB12,
.bit_depth = 16,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -392,7 +392,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -392,7 +392,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_SBGGR12,
.bit_depth = 16,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -401,7 +401,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -401,7 +401,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_SGRBG12,
.bit_depth = 16,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -410,7 +410,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -410,7 +410,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_SGBRG12,
.bit_depth = 16,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -420,7 +420,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -420,7 +420,7 @@ static const struct pisp_be_format suppo
/* 14 bit */
.fourcc = V4L2_PIX_FMT_SRGGB14,
.bit_depth = 16,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -429,7 +429,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -429,7 +429,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_SBGGR14,
.bit_depth = 16,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -438,7 +438,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -438,7 +438,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_SGRBG14,
.bit_depth = 16,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -447,7 +447,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -447,7 +447,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_SGBRG14,
.bit_depth = 16,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -457,7 +457,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -457,7 +457,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_PISP_COMP1_BGGR,
.bit_depth = 8,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -466,7 +466,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -466,7 +466,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_PISP_COMP1_RGGB,
.bit_depth = 8,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -475,7 +475,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -475,7 +475,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_PISP_COMP1_GRBG,
.bit_depth = 8,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -484,7 +484,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -484,7 +484,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_PISP_COMP1_GBRG,
.bit_depth = 8,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -494,7 +494,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -494,7 +494,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_GREY,
.bit_depth = 8,
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
.colorspace_default = V4L2_COLORSPACE_RAW,
-@@ -502,7 +502,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -502,7 +502,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_Y16,
.bit_depth = 16,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -511,7 +511,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -511,7 +511,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_PISP_COMP1_MONO,
.bit_depth = 8,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
---
-2.54.0
-
.../raspberrypi/pisp_be/pisp_be_formats.h | 51 +++++++++++++++++++
2 files changed, 59 insertions(+), 1 deletion(-)
-diff --git a/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c b/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
-index 2ef486432787..66483369aba1 100644
--- a/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
+++ b/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
-@@ -1074,9 +1074,16 @@ static void pispbe_set_plane_params(struct v4l2_format *f,
+@@ -1074,9 +1074,16 @@ static void pispbe_set_plane_params(stru
for (unsigned int i = 0; i < nplanes; i++) {
struct v4l2_plane_pix_format *p = &f->fmt.pix_mp.plane_fmt[i];
unsigned int bpl, plane_size;
plane_size = bpl * f->fmt.pix_mp.height *
(nplanes > 1 ? fmt->plane_factor[i] : total_plane_factor);
-diff --git a/drivers/media/platform/raspberrypi/pisp_be/pisp_be_formats.h b/drivers/media/platform/raspberrypi/pisp_be/pisp_be_formats.h
-index c44258d67b2f..1b0386c49281 100644
--- a/drivers/media/platform/raspberrypi/pisp_be/pisp_be_formats.h
+++ b/drivers/media/platform/raspberrypi/pisp_be/pisp_be_formats.h
@@ -17,6 +17,7 @@
unsigned int bit_depth;
/* 0P3 factor for plane sizing */
unsigned int plane_factor[PISPBE_MAX_PLANES];
-@@ -59,6 +60,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -59,6 +60,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_YUV420,
/* 128 alignment to ensure U/V planes are 64 byte aligned. */
.opt_align = 128,
.bit_depth = 8,
.plane_factor = { P3(1), P3(0.25), P3(0.25) },
.num_planes = 1,
-@@ -69,6 +71,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -69,6 +71,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_YVU420,
/* 128 alignment to ensure U/V planes are 64 byte aligned. */
.opt_align = 128,
.bit_depth = 8,
.plane_factor = { P3(1), P3(0.25), P3(0.25) },
.num_planes = 1,
-@@ -78,6 +81,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -78,6 +81,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_NV12,
.opt_align = 32,
.bit_depth = 8,
.plane_factor = { P3(1), P3(0.5) },
.num_planes = 1,
-@@ -87,6 +91,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -87,6 +91,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_NV21,
.opt_align = 32,
.bit_depth = 8,
.plane_factor = { P3(1), P3(0.5) },
.num_planes = 1,
-@@ -96,6 +101,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -96,6 +101,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_YUYV,
.opt_align = 64,
.bit_depth = 16,
.plane_factor = { P3(1) },
.num_planes = 1,
-@@ -105,6 +111,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -105,6 +111,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_UYVY,
.opt_align = 64,
.bit_depth = 16,
.plane_factor = { P3(1) },
.num_planes = 1,
-@@ -114,6 +121,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -114,6 +121,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_YVYU,
.opt_align = 64,
.bit_depth = 16,
.plane_factor = { P3(1) },
.num_planes = 1,
-@@ -123,6 +131,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -123,6 +131,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_VYUY,
.opt_align = 64,
.bit_depth = 16,
.plane_factor = { P3(1) },
.num_planes = 1,
-@@ -133,6 +142,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -133,6 +142,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_YUV422P,
/* 128 alignment to ensure U/V planes are 64 byte aligned. */
.opt_align = 128,
.bit_depth = 8,
.plane_factor = { P3(1), P3(0.5), P3(0.5) },
.num_planes = 1,
-@@ -143,6 +153,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -143,6 +153,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_YUV420M,
.opt_align = 64,
.bit_depth = 8,
.plane_factor = { P3(1), P3(0.25), P3(0.25) },
.num_planes = 3,
-@@ -152,6 +163,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -152,6 +163,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_NV12M,
.opt_align = 32,
.bit_depth = 8,
.plane_factor = { P3(1), P3(0.5) },
.num_planes = 2,
-@@ -161,6 +173,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -161,6 +173,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_NV21M,
.opt_align = 32,
.bit_depth = 8,
.plane_factor = { P3(1), P3(0.5) },
.num_planes = 2,
-@@ -170,6 +183,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -170,6 +183,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_YVU420M,
.opt_align = 64,
.bit_depth = 8,
.plane_factor = { P3(1), P3(0.25), P3(0.25) },
.num_planes = 3,
-@@ -179,6 +193,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -179,6 +193,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_YUV422M,
.opt_align = 64,
.bit_depth = 8,
.plane_factor = { P3(1), P3(0.5), P3(0.5) },
.num_planes = 3,
-@@ -188,6 +203,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -188,6 +203,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_YVU422M,
.opt_align = 64,
.bit_depth = 8,
.plane_factor = { P3(1), P3(0.5), P3(0.5) },
.num_planes = 3,
-@@ -197,6 +213,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -197,6 +213,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_YUV444M,
.opt_align = 64,
.bit_depth = 8,
.plane_factor = { P3(1), P3(1), P3(1) },
.num_planes = 3,
-@@ -206,6 +223,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -206,6 +223,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_YVU444M,
.opt_align = 64,
.bit_depth = 8,
.plane_factor = { P3(1), P3(1), P3(1) },
.num_planes = 3,
-@@ -216,6 +234,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -216,6 +234,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_RGB24,
.opt_align = 32,
.bit_depth = 24,
.plane_factor = { P3(1.0) },
.num_planes = 1,
-@@ -225,6 +244,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -225,6 +244,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_BGR24,
.opt_align = 32,
.bit_depth = 24,
.plane_factor = { P3(1.0) },
.num_planes = 1,
-@@ -234,6 +254,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -234,6 +254,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_XBGR32,
.opt_align = 64,
.bit_depth = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
-@@ -243,6 +264,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -243,6 +264,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_RGBX32,
.opt_align = 64,
.bit_depth = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
-@@ -252,6 +274,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -252,6 +274,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_RGB48,
.opt_align = 64,
.bit_depth = 48,
.plane_factor = { P3(1.0) },
.num_planes = 1,
-@@ -261,6 +284,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -261,6 +284,7 @@ static const struct pisp_be_format suppo
{
.fourcc = V4L2_PIX_FMT_BGR48,
.opt_align = 64,
.bit_depth = 48,
.plane_factor = { P3(1.0) },
.num_planes = 1,
-@@ -272,6 +296,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -272,6 +296,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_SRGGB8,
.bit_depth = 8,
.opt_align = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -281,6 +306,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -281,6 +306,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_SBGGR8,
.bit_depth = 8,
.opt_align = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -290,6 +316,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -290,6 +316,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_SGRBG8,
.bit_depth = 8,
.opt_align = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -299,6 +326,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -299,6 +326,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_SGBRG8,
.bit_depth = 8,
.opt_align = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -309,6 +337,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -309,6 +337,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_SRGGB16,
.bit_depth = 16,
.opt_align = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -318,6 +347,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -318,6 +347,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_SBGGR16,
.bit_depth = 16,
.opt_align = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -327,6 +357,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -327,6 +357,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_SGRBG16,
.bit_depth = 16,
.opt_align = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -336,6 +367,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -336,6 +367,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_SGBRG16,
.bit_depth = 16,
.opt_align = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -347,6 +379,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -347,6 +379,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_SRGGB10,
.bit_depth = 16,
.opt_align = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -356,6 +389,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -356,6 +389,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_SBGGR10,
.bit_depth = 16,
.opt_align = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -365,6 +399,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -365,6 +399,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_SGRBG10,
.bit_depth = 16,
.opt_align = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -374,6 +409,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -374,6 +409,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_SGBRG10,
.bit_depth = 16,
.opt_align = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -384,6 +420,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -384,6 +420,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_SRGGB12,
.bit_depth = 16,
.opt_align = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -393,6 +430,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -393,6 +430,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_SBGGR12,
.bit_depth = 16,
.opt_align = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -402,6 +440,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -402,6 +440,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_SGRBG12,
.bit_depth = 16,
.opt_align = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -411,6 +450,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -411,6 +450,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_SGBRG12,
.bit_depth = 16,
.opt_align = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -421,6 +461,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -421,6 +461,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_SRGGB14,
.bit_depth = 16,
.opt_align = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -430,6 +471,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -430,6 +471,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_SBGGR14,
.bit_depth = 16,
.opt_align = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -439,6 +481,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -439,6 +481,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_SGRBG14,
.bit_depth = 16,
.opt_align = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -448,6 +491,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -448,6 +491,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_SGBRG14,
.bit_depth = 16,
.opt_align = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -458,6 +502,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -458,6 +502,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_PISP_COMP1_BGGR,
.bit_depth = 8,
.opt_align = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -467,6 +512,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -467,6 +512,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_PISP_COMP1_RGGB,
.bit_depth = 8,
.opt_align = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -476,6 +522,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -476,6 +522,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_PISP_COMP1_GRBG,
.bit_depth = 8,
.opt_align = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -485,6 +532,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -485,6 +532,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_PISP_COMP1_GBRG,
.bit_depth = 8,
.opt_align = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -495,6 +543,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -495,6 +543,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_GREY,
.bit_depth = 8,
.opt_align = 32,
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
.colorspace_default = V4L2_COLORSPACE_RAW,
-@@ -503,6 +552,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -503,6 +552,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_Y16,
.bit_depth = 16,
.opt_align = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
-@@ -512,6 +562,7 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -512,6 +562,7 @@ static const struct pisp_be_format suppo
.fourcc = V4L2_PIX_FMT_PISP_COMP1_MONO,
.bit_depth = 8,
.opt_align = 32,
.plane_factor = { P3(1.0) },
.num_planes = 1,
.colorspace_mask = V4L2_COLORSPACE_MASK_RAW,
---
-2.54.0
-
arch/arm64/mm/dma-mapping.c | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
-diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c
-index b2b5792b2caa..51c43c1f5630 100644
--- a/arch/arm64/mm/dma-mapping.c
+++ b/arch/arm64/mm/dma-mapping.c
-@@ -16,8 +16,22 @@ void arch_sync_dma_for_device(phys_addr_t paddr, size_t size,
+@@ -16,8 +16,22 @@ void arch_sync_dma_for_device(phys_addr_
enum dma_data_direction dir)
{
unsigned long start = (unsigned long)phys_to_virt(paddr);
}
void arch_sync_dma_for_cpu(phys_addr_t paddr, size_t size,
---
-2.54.0
-
.../platform/raspberrypi/pisp_be/pisp_be.c | 304 ++++++++++--------
1 file changed, 176 insertions(+), 128 deletions(-)
-diff --git a/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c b/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
-index 66483369aba1..efeebe637874 100644
--- a/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
+++ b/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
@@ -29,6 +29,14 @@
struct pispbe_job queued_job, running_job;
/* protects "hw_busy" flag, streaming_map and job_queue */
spinlock_t hw_lock;
-@@ -355,9 +373,9 @@ static dma_addr_t pispbe_get_addr(struct pispbe_buffer *buf)
+@@ -355,9 +373,9 @@ static dma_addr_t pispbe_get_addr(struct
return 0;
}
{
struct pispbe_hw_enables *hw_en = &job->hw_enables;
struct pisp_be_tiles_config *config = job->config;
-@@ -373,10 +391,10 @@ static void pispbe_xlate_addrs(struct pispbe_dev *pispbe,
+@@ -373,10 +391,10 @@ static void pispbe_xlate_addrs(struct pi
* to 3 planes.
*/
ret = pispbe_get_planes_addr(addrs, buf[MAIN_INPUT_NODE],
hw_en->bayer_enables = 0;
hw_en->rgb_enables = 0;
return;
-@@ -431,7 +449,7 @@ static void pispbe_xlate_addrs(struct pispbe_dev *pispbe,
+@@ -431,7 +449,7 @@ static void pispbe_xlate_addrs(struct pi
for (unsigned int i = 0; i < PISP_BACK_END_NUM_OUTPUTS; i++) {
ret = pispbe_get_planes_addr(addrs + 7 + 3 * i,
buf[OUTPUT0_NODE + i],
if (ret <= 0)
hw_en->rgb_enables &= ~(PISP_BE_RGB_ENABLE_OUTPUT0 << i);
}
-@@ -452,10 +470,11 @@ static void pispbe_xlate_addrs(struct pispbe_dev *pispbe,
+@@ -452,10 +470,11 @@ static void pispbe_xlate_addrs(struct pi
*
* Returns 0 if a job has been successfully prepared, < 0 otherwise.
*/
unsigned int streaming_map;
unsigned int config_index;
struct pispbe_node *node;
-@@ -465,21 +484,21 @@ static int pispbe_prepare_job(struct pispbe_dev *pispbe)
+@@ -465,21 +484,21 @@ static int pispbe_prepare_job(struct pis
scoped_guard(spinlock_irq, &pispbe->hw_lock) {
static const u32 mask = BIT(CONFIG_NODE) | BIT(MAIN_INPUT_NODE);
buf[CONFIG_NODE] = list_first_entry_or_null(&node->ready_queue,
struct pispbe_buffer,
ready_list);
-@@ -490,8 +509,8 @@ static int pispbe_prepare_job(struct pispbe_dev *pispbe)
+@@ -490,8 +509,8 @@ static int pispbe_prepare_job(struct pis
job->buffers[CONFIG_NODE] = buf[CONFIG_NODE];
config_index = buf[CONFIG_NODE]->vb.vb2_buf.index;
config_index * sizeof(struct pisp_be_tiles_config) +
offsetof(struct pisp_be_tiles_config, tiles);
-@@ -532,7 +551,7 @@ static int pispbe_prepare_job(struct pispbe_dev *pispbe)
+@@ -532,7 +551,7 @@ static int pispbe_prepare_job(struct pis
ignore_buffers = true;
}
/* Pull a buffer from each V4L2 queue to form the queued job */
buf[i] = list_first_entry_or_null(&node->ready_queue,
-@@ -547,8 +566,10 @@ static int pispbe_prepare_job(struct pispbe_dev *pispbe)
+@@ -547,8 +566,10 @@ static int pispbe_prepare_job(struct pis
goto err_return_buffers;
}
scoped_guard(spinlock_irq, &pispbe->hw_lock) {
list_add_tail(&job->queue, &pispbe->job_queue);
-@@ -561,7 +582,7 @@ static int pispbe_prepare_job(struct pispbe_dev *pispbe)
+@@ -561,7 +582,7 @@ static int pispbe_prepare_job(struct pis
err_return_buffers:
for (unsigned int i = 0; i < PISPBE_NUM_NODES; i++) {
if (!buf[i])
continue;
-@@ -594,7 +615,7 @@ static void pispbe_schedule(struct pispbe_dev *pispbe, bool clear_hw_busy)
+@@ -594,7 +615,7 @@ static void pispbe_schedule(struct pispb
for (unsigned int i = 0; i < PISPBE_NUM_NODES; i++)
pispbe->queued_job.buf[i] = job->buffers[i];
pispbe->hw_busy = true;
}
-@@ -618,13 +639,13 @@ static void pispbe_isr_jobdone(struct pispbe_dev *pispbe,
+@@ -618,13 +639,13 @@ static void pispbe_isr_jobdone(struct pi
for (unsigned int i = 0; i < PISPBE_NUM_NODES; i++) {
if (buf[i]) {
buf[i]->vb.vb2_buf.timestamp = ts;
}
static irqreturn_t pispbe_isr(int irq, void *dev)
-@@ -648,7 +669,7 @@ static irqreturn_t pispbe_isr(int irq, void *dev)
+@@ -648,7 +669,7 @@ static irqreturn_t pispbe_isr(int irq, v
* we previously saw "start" now finishes, and we then queued a new job
* which we see both start and finish "simultaneously".
*/
pispbe_isr_jobdone(pispbe, &pispbe->running_job);
memset(&pispbe->running_job, 0, sizeof(pispbe->running_job));
pispbe->done++;
-@@ -658,7 +679,7 @@ static irqreturn_t pispbe_isr(int irq, void *dev)
+@@ -658,7 +679,7 @@ static irqreturn_t pispbe_isr(int irq, v
pispbe->started++;
can_queue_another = 1;
pispbe_isr_jobdone(pispbe, &pispbe->queued_job);
pispbe->done++;
} else {
-@@ -682,12 +703,12 @@ static irqreturn_t pispbe_isr(int irq, void *dev)
+@@ -682,12 +703,12 @@ static irqreturn_t pispbe_isr(int irq, v
return IRQ_HANDLED;
}
struct v4l2_format *fmt;
unsigned int bpl, size;
-@@ -705,7 +726,7 @@ static int pisp_be_validate_config(struct pispbe_dev *pispbe,
+@@ -705,7 +726,7 @@ static int pisp_be_validate_config(struc
}
/* Ensure output config strides and buffer sizes match the V4L2 formats. */
if (bayer_enables & PISP_BE_BAYER_ENABLE_TDN_OUTPUT) {
bpl = config->config.tdn_output_format.stride;
size = bpl * config->config.tdn_output_format.height;
-@@ -723,7 +744,7 @@ static int pisp_be_validate_config(struct pispbe_dev *pispbe,
+@@ -723,7 +744,7 @@ static int pisp_be_validate_config(struc
}
}
if (bayer_enables & PISP_BE_BAYER_ENABLE_STITCH_OUTPUT) {
bpl = config->config.stitch_output_format.stride;
size = bpl * config->config.stitch_output_format.height;
-@@ -749,7 +770,7 @@ static int pisp_be_validate_config(struct pispbe_dev *pispbe,
+@@ -749,7 +770,7 @@ static int pisp_be_validate_config(struc
PISP_IMAGE_FORMAT_WALLPAPER_ROLL)
continue; /* TODO: Size checks for wallpaper formats */
for (unsigned int i = 0; i < fmt->fmt.pix_mp.num_planes; i++) {
bpl = !i ? config->config.output_format[j].image.stride
: config->config.output_format[j].image.stride2;
-@@ -781,7 +802,7 @@ static int pispbe_node_queue_setup(struct vb2_queue *q, unsigned int *nbuffers,
+@@ -781,7 +802,7 @@ static int pispbe_node_queue_setup(struc
struct device *alloc_devs[])
{
struct pispbe_node *node = vb2_get_drv_priv(q);
unsigned int num_planes = NODE_IS_MPLANE(node) ?
node->format.fmt.pix_mp.num_planes : 1;
-@@ -819,7 +840,7 @@ static int pispbe_node_queue_setup(struct vb2_queue *q, unsigned int *nbuffers,
+@@ -819,7 +840,7 @@ static int pispbe_node_queue_setup(struc
static int pispbe_node_buffer_prepare(struct vb2_buffer *vb)
{
struct pispbe_node *node = vb2_get_drv_priv(vb->vb2_queue);
unsigned int num_planes = NODE_IS_MPLANE(node) ?
node->format.fmt.pix_mp.num_planes : 1;
-@@ -839,12 +860,12 @@ static int pispbe_node_buffer_prepare(struct vb2_buffer *vb)
+@@ -839,12 +860,12 @@ static int pispbe_node_buffer_prepare(st
}
if (node->id == CONFIG_NODE) {
}
return 0;
-@@ -857,23 +878,25 @@ static void pispbe_node_buffer_queue(struct vb2_buffer *buf)
+@@ -857,23 +878,25 @@ static void pispbe_node_buffer_queue(str
struct pispbe_buffer *buffer =
container_of(vbuf, struct pispbe_buffer, vb);
struct pispbe_node *node = vb2_get_drv_priv(buf->vb2_queue);
struct pispbe_buffer *buf, *tmp;
int ret;
-@@ -882,17 +905,17 @@ static int pispbe_node_start_streaming(struct vb2_queue *q, unsigned int count)
+@@ -882,17 +905,17 @@ static int pispbe_node_start_streaming(s
goto err_return_buffers;
scoped_guard(spinlock_irq, &pispbe->hw_lock) {
pispbe_schedule(pispbe, false);
return 0;
-@@ -909,10 +932,10 @@ static int pispbe_node_start_streaming(struct vb2_queue *q, unsigned int count)
+@@ -909,10 +932,10 @@ err_return_buffers:
static void pispbe_node_stop_streaming(struct vb2_queue *q)
{
struct pispbe_node *node = vb2_get_drv_priv(q);
/*
* Now this is a bit awkward. In a simple M2M device we could just wait
-@@ -937,26 +960,25 @@ static void pispbe_node_stop_streaming(struct vb2_queue *q)
+@@ -937,26 +960,25 @@ static void pispbe_node_stop_streaming(s
vb2_wait_for_all_buffers(&node->queue);
spin_lock_irq(&pispbe->hw_lock);
}
static const struct vb2_ops pispbe_node_queue_ops = {
-@@ -980,7 +1002,7 @@ static int pispbe_node_querycap(struct file *file, void *priv,
+@@ -980,7 +1002,7 @@ static int pispbe_node_querycap(struct f
struct v4l2_capability *cap)
{
struct pispbe_node *node = video_drvdata(file);
strscpy(cap->driver, PISPBE_NAME, sizeof(cap->driver));
strscpy(cap->card, PISPBE_NAME, sizeof(cap->card));
-@@ -996,7 +1018,7 @@ static int pispbe_node_g_fmt_vid_cap(struct file *file, void *priv,
+@@ -996,7 +1018,7 @@ static int pispbe_node_g_fmt_vid_cap(str
struct v4l2_format *f)
{
struct pispbe_node *node = video_drvdata(file);
if (!NODE_IS_CAPTURE(node) || NODE_IS_META(node)) {
dev_dbg(pispbe->dev,
-@@ -1016,7 +1038,7 @@ static int pispbe_node_g_fmt_vid_out(struct file *file, void *priv,
+@@ -1016,7 +1038,7 @@ static int pispbe_node_g_fmt_vid_out(str
struct v4l2_format *f)
{
struct pispbe_node *node = video_drvdata(file);
if (NODE_IS_CAPTURE(node) || NODE_IS_META(node)) {
dev_dbg(pispbe->dev,
-@@ -1036,7 +1058,7 @@ static int pispbe_node_g_fmt_meta_out(struct file *file, void *priv,
+@@ -1036,7 +1058,7 @@ static int pispbe_node_g_fmt_meta_out(st
struct v4l2_format *f)
{
struct pispbe_node *node = video_drvdata(file);
if (!NODE_IS_META(node) || NODE_IS_CAPTURE(node)) {
dev_dbg(pispbe->dev,
-@@ -1100,7 +1122,7 @@ static void pispbe_set_plane_params(struct v4l2_format *f,
+@@ -1100,7 +1122,7 @@ static void pispbe_set_plane_params(stru
static void pispbe_try_format(struct v4l2_format *f, struct pispbe_node *node)
{
u32 pixfmt = f->fmt.pix_mp.pixelformat;
const struct pisp_be_format *fmt;
bool is_rgb;
-@@ -1166,7 +1188,7 @@ static int pispbe_node_try_fmt_vid_cap(struct file *file, void *priv,
+@@ -1166,7 +1188,7 @@ static int pispbe_node_try_fmt_vid_cap(s
struct v4l2_format *f)
{
struct pispbe_node *node = video_drvdata(file);
if (!NODE_IS_CAPTURE(node) || NODE_IS_META(node)) {
dev_dbg(pispbe->dev,
-@@ -1184,7 +1206,7 @@ static int pispbe_node_try_fmt_vid_out(struct file *file, void *priv,
+@@ -1184,7 +1206,7 @@ static int pispbe_node_try_fmt_vid_out(s
struct v4l2_format *f)
{
struct pispbe_node *node = video_drvdata(file);
if (!NODE_IS_OUTPUT(node) || NODE_IS_META(node)) {
dev_dbg(pispbe->dev,
-@@ -1202,7 +1224,7 @@ static int pispbe_node_try_fmt_meta_out(struct file *file, void *priv,
+@@ -1202,7 +1224,7 @@ static int pispbe_node_try_fmt_meta_out(
struct v4l2_format *f)
{
struct pispbe_node *node = video_drvdata(file);
if (!NODE_IS_META(node) || NODE_IS_CAPTURE(node)) {
dev_dbg(pispbe->dev,
-@@ -1221,7 +1243,7 @@ static int pispbe_node_s_fmt_vid_cap(struct file *file, void *priv,
+@@ -1221,7 +1243,7 @@ static int pispbe_node_s_fmt_vid_cap(str
struct v4l2_format *f)
{
struct pispbe_node *node = video_drvdata(file);
int ret;
ret = pispbe_node_try_fmt_vid_cap(file, priv, f);
-@@ -1244,7 +1266,7 @@ static int pispbe_node_s_fmt_vid_out(struct file *file, void *priv,
+@@ -1244,7 +1266,7 @@ static int pispbe_node_s_fmt_vid_out(str
struct v4l2_format *f)
{
struct pispbe_node *node = video_drvdata(file);
int ret;
ret = pispbe_node_try_fmt_vid_out(file, priv, f);
-@@ -1267,7 +1289,7 @@ static int pispbe_node_s_fmt_meta_out(struct file *file, void *priv,
+@@ -1267,7 +1289,7 @@ static int pispbe_node_s_fmt_meta_out(st
struct v4l2_format *f)
{
struct pispbe_node *node = video_drvdata(file);
int ret;
ret = pispbe_node_try_fmt_meta_out(file, priv, f);
-@@ -1316,7 +1338,7 @@ static int pispbe_enum_framesizes(struct file *file, void *priv,
+@@ -1316,7 +1338,7 @@ static int pispbe_enum_framesizes(struct
struct v4l2_frmsizeenum *fsize)
{
struct pispbe_node *node = video_drvdata(file);
if (NODE_IS_META(node) || fsize->index)
return -EINVAL;
-@@ -1401,17 +1423,19 @@ static void pispbe_node_def_fmt(struct pispbe_node *node)
+@@ -1401,17 +1423,19 @@ static void pispbe_node_def_fmt(struct p
* Initialise a struct pispbe_node and register it as /dev/video<N>
* to represent one of the PiSP Back End's input or output streams.
*/
node->buf_type = node_desc[id].buf_type;
mutex_init(&node->node_lock);
-@@ -1428,7 +1452,7 @@ static int pispbe_init_node(struct pispbe_dev *pispbe, unsigned int id)
+@@ -1428,7 +1452,7 @@ static int pispbe_init_node(struct pispb
q->ops = &pispbe_node_queue_ops;
q->buf_struct_size = sizeof(struct pispbe_buffer);
q->timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
/* get V4L2 to handle node->queue locking */
q->lock = &node->queue_lock;
-@@ -1440,7 +1464,7 @@ static int pispbe_init_node(struct pispbe_dev *pispbe, unsigned int id)
+@@ -1440,7 +1464,7 @@ static int pispbe_init_node(struct pispb
*vdev = pispbe_videodev; /* default initialization */
strscpy(vdev->name, node_desc[id].ent_name, sizeof(vdev->name));
vdev->vfl_dir = output ? VFL_DIR_TX : VFL_DIR_RX;
/* get V4L2 to serialise our ioctls */
vdev->lock = &node->node_lock;
-@@ -1467,11 +1491,11 @@ static int pispbe_init_node(struct pispbe_dev *pispbe, unsigned int id)
+@@ -1467,11 +1491,11 @@ static int pispbe_init_node(struct pispb
video_set_drvdata(vdev, node);
if (output)
0, MEDIA_LNK_FL_IMMUTABLE |
MEDIA_LNK_FL_ENABLED);
if (ret)
-@@ -1500,9 +1524,10 @@ static const struct v4l2_subdev_ops pispbe_sd_ops = {
+@@ -1500,9 +1524,10 @@ static const struct v4l2_subdev_ops pisp
.pad = &pispbe_pad_ops,
};
int ret;
v4l2_subdev_init(sd, &pispbe_sd_ops);
-@@ -1512,16 +1537,16 @@ static int pispbe_init_subdev(struct pispbe_dev *pispbe)
+@@ -1512,16 +1537,16 @@ static int pispbe_init_subdev(struct pis
strscpy(sd->name, PISPBE_NAME, sizeof(sd->name));
for (unsigned int i = 0; i < PISPBE_NUM_NODES; i++)
if (ret)
goto error;
-@@ -1532,36 +1557,43 @@ static int pispbe_init_subdev(struct pispbe_dev *pispbe)
+@@ -1532,36 +1557,43 @@ error:
return ret;
}
if (ret)
goto err_unregister_nodes;
}
-@@ -1570,12 +1602,12 @@ static int pispbe_init_devices(struct pispbe_dev *pispbe)
+@@ -1570,12 +1602,12 @@ static int pispbe_init_devices(struct pi
if (ret)
goto err_unregister_nodes;
dev_err(pispbe->dev, "Unable to allocate cached config buffers.\n");
ret = -ENOMEM;
goto err_unregister_mdev;
-@@ -1587,11 +1619,11 @@ static int pispbe_init_devices(struct pispbe_dev *pispbe)
+@@ -1587,11 +1619,11 @@ err_unregister_mdev:
media_device_unregister(mdev);
err_unregister_nodes:
while (num_regist-- > 0) {
err_unregister_v4l2:
v4l2_device_unregister(v4l2_dev);
err_media_dev_cleanup:
-@@ -1599,31 +1631,33 @@ static int pispbe_init_devices(struct pispbe_dev *pispbe)
+@@ -1599,31 +1631,33 @@ err_media_dev_cleanup:
return ret;
}
}
static int pispbe_runtime_suspend(struct device *dev)
-@@ -1691,9 +1725,13 @@ static int pispbe_hw_init(struct pispbe_dev *pispbe)
+@@ -1691,9 +1725,13 @@ static int pispbe_hw_init(struct pispbe_
return 0;
}
struct pispbe_dev *pispbe;
int ret;
-@@ -1748,16 +1786,25 @@ static int pispbe_probe(struct platform_device *pdev)
+@@ -1748,16 +1786,25 @@ static int pispbe_probe(struct platform_
if (ret)
goto pm_runtime_suspend_err;
pm_runtime_suspend_err:
pm_runtime_put(pispbe->dev);
pm_runtime_disable_err:
-@@ -1771,7 +1818,8 @@ static void pispbe_remove(struct platform_device *pdev)
+@@ -1771,7 +1818,8 @@ static void pispbe_remove(struct platfor
{
struct pispbe_dev *pispbe = platform_get_drvdata(pdev);
pm_runtime_dont_use_autosuspend(pispbe->dev);
pm_runtime_disable(pispbe->dev);
---
-2.54.0
-
drivers/net/usb/lan78xx.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
-diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
-index 21b99bfc9725..f5800299f1ed 100644
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -1629,7 +1629,16 @@ static int lan78xx_mac_reset(struct lan78xx_net *dev)
+@@ -1629,7 +1629,16 @@ exit_unlock:
*/
static int lan78xx_phy_int_ack(struct lan78xx_net *dev)
{
}
/* some work can't be done in tasklets, so we use keventd
---
-2.54.0
-
drivers/net/usb/lan78xx.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
-diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
-index f5800299f1ed..bac3c8193ec7 100644
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -3250,6 +3250,11 @@ static int lan78xx_reset(struct lan78xx_net *dev)
+@@ -3250,6 +3250,11 @@ static int lan78xx_reset(struct lan78xx_
unsigned long timeout;
int ret;
u32 buf;
ret = lan78xx_read_reg(dev, HW_CFG, &buf);
if (ret < 0)
-@@ -3320,6 +3325,10 @@ static int lan78xx_reset(struct lan78xx_net *dev)
+@@ -3320,6 +3325,10 @@ static int lan78xx_reset(struct lan78xx_
buf |= HW_CFG_CLK125_EN_;
buf |= HW_CFG_REFCLK25_EN_;
ret = lan78xx_write_reg(dev, HW_CFG, buf);
if (ret < 0)
return ret;
-@@ -3412,6 +3421,10 @@ static int lan78xx_reset(struct lan78xx_net *dev)
+@@ -3412,6 +3421,10 @@ static int lan78xx_reset(struct lan78xx_
if (dev->chipid == ID_REV_CHIP_ID_7801_)
buf &= ~MAC_CR_GMII_EN_;
ret = lan78xx_write_reg(dev, MAC_CR, buf);
if (ret < 0)
return ret;
---
-2.54.0
-
drivers/net/usb/lan78xx.c | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
-diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
-index bac3c8193ec7..c9e20e2dfa86 100644
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2898,6 +2898,29 @@ static int lan78xx_phy_init(struct lan78xx_net *dev)
+@@ -2898,6 +2898,29 @@ static int lan78xx_phy_init(struct lan78
goto phylink_uninit;
}
ret = lan78xx_configure_leds_from_dt(dev, phydev);
if (ret < 0)
goto phylink_uninit;
---
-2.54.0
-
drivers/net/usb/lan78xx.c | 23 +++++++++++++++++++++--
1 file changed, 21 insertions(+), 2 deletions(-)
-diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
-index c9e20e2dfa86..8403616a1cc7 100644
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -1818,15 +1818,34 @@ static int lan78xx_set_wol(struct net_device *netdev,
+@@ -1818,15 +1818,34 @@ exit_pm_put:
static int lan78xx_get_eee(struct net_device *net, struct ethtool_keee *edata)
{
struct lan78xx_net *dev = netdev_priv(net);
+ u32 buf;
+ int ret;
-+
+
+- return phylink_ethtool_get_eee(dev->phylink, edata);
+ ret = phylink_ethtool_get_eee(dev->phylink, edata);
+ if (ret < 0)
+ return ret;
+ edata->tx_lpi_timer = buf;
+ else
+ edata->tx_lpi_timer = 0;
-
-- return phylink_ethtool_get_eee(dev->phylink, edata);
++
+ return 0;
}
}
static void lan78xx_get_drvinfo(struct net_device *net,
---
-2.54.0
-
drivers/pci/controller/pcie-brcmstb.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
-diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c
-index eb8ef11d89ed..33b3c187ffb0 100644
--- a/drivers/pci/controller/pcie-brcmstb.c
+++ b/drivers/pci/controller/pcie-brcmstb.c
-@@ -666,7 +666,8 @@ static void brcm_pcie_set_outbound_win(struct brcm_pcie *pcie,
+@@ -666,7 +666,8 @@ static void brcm_pcie_set_outbound_win(s
MSI_FLAG_NO_AFFINITY)
#define BRCM_MSI_FLAGS_SUPPORTED (MSI_GENERIC_FLAGS_MASK | \
static const struct msi_parent_ops brcm_msi_parent_ops = {
.required_flags = BRCM_MSI_FLAGS_REQUIRED,
---
-2.54.0
-
drivers/gpu/drm/display/drm_hdmi_state_helper.c | 5 +++++
1 file changed, 5 insertions(+)
-diff --git a/drivers/gpu/drm/display/drm_hdmi_state_helper.c b/drivers/gpu/drm/display/drm_hdmi_state_helper.c
-index f67484bff8a5..bbfc0dfafe48 100644
--- a/drivers/gpu/drm/display/drm_hdmi_state_helper.c
+++ b/drivers/gpu/drm/display/drm_hdmi_state_helper.c
-@@ -653,6 +653,11 @@ hdmi_compute_config(const struct drm_connector *connector,
+@@ -653,6 +653,11 @@ hdmi_compute_config(const struct drm_con
ret = hdmi_compute_format_bpc(connector, conn_state, mode, max_bpc,
HDMI_COLORSPACE_RGB);
if (ret) {
if (connector->ycbcr_420_allowed) {
ret = hdmi_compute_format_bpc(connector, conn_state,
---
-2.54.0
-
drivers/pinctrl/pinctrl-rp1.c | 1297 ++++++++++++++-------------------
1 file changed, 543 insertions(+), 754 deletions(-)
-diff --git a/drivers/pinctrl/pinctrl-rp1.c b/drivers/pinctrl/pinctrl-rp1.c
-index ffc2f0b460a6..ecb7762545de 100644
--- a/drivers/pinctrl/pinctrl-rp1.c
+++ b/drivers/pinctrl/pinctrl-rp1.c
@@ -1,6 +1,6 @@
- RP1_OEOVER_DISABLE = 2,
- RP1_OEOVER_ENABLE = 3,
-};
--
++#define RP1_DIR_OUTPUT 0
++#define RP1_DIR_INPUT 1
+
-enum {
- RP1_INOVER_PERI = 0,
- RP1_INOVER_INVPERI = 1,
- RP1_INOVER_LOW = 2,
- RP1_INOVER_HIGH = 3,
-};
--
++#define RP1_OUTOVER_PERI 0
++#define RP1_OUTOVER_INVPERI 1
++#define RP1_OUTOVER_LOW 2
++#define RP1_OUTOVER_HIGH 3
++
++#define RP1_OEOVER_PERI 0
++#define RP1_OEOVER_INVPERI 1
++#define RP1_OEOVER_DISABLE 2
++#define RP1_OEOVER_ENABLE 3
++
++#define RP1_INOVER_PERI 0
++#define RP1_INOVER_INVPERI 1
++#define RP1_INOVER_LOW 2
++#define RP1_INOVER_HIGH 3
++
++#define RP1_RIO_OUT 0x00
++#define RP1_RIO_OE 0x04
++#define RP1_RIO_IN 0x08
++
++#define RP1_PAD_SLEWFAST_MASK 0x00000001
++#define RP1_PAD_SLEWFAST_LSB 0
++#define RP1_PAD_SCHMITT_MASK 0x00000002
++#define RP1_PAD_SCHMITT_LSB 1
++#define RP1_PAD_PULL_MASK 0x0000000c
++#define RP1_PAD_PULL_LSB 2
++#define RP1_PAD_DRIVE_MASK 0x00000030
++#define RP1_PAD_DRIVE_LSB 4
++#define RP1_PAD_IN_ENABLE_MASK 0x00000040
++#define RP1_PAD_IN_ENABLE_LSB 6
++#define RP1_PAD_OUT_DISABLE_MASK 0x00000080
++#define RP1_PAD_OUT_DISABLE_LSB 7
++
++#define RP1_PAD_DRIVE_2MA 0x00000000
++#define RP1_PAD_DRIVE_4MA 0x00000010
++#define RP1_PAD_DRIVE_8MA 0x00000020
++#define RP1_PAD_DRIVE_12MA 0x00000030
+
-enum {
- RP1_GPIO_CTRL_IRQRESET_SET = 0,
- RP1_GPIO_CTRL_INT_CLR = 1,
- [RP1_PAD_IN_ENABLE] = REG_FIELD(0, 6, 6),
- [RP1_PAD_OUT_DISABLE] = REG_FIELD(0, 7, 7),
-};
-+#define RP1_DIR_OUTPUT 0
-+#define RP1_DIR_INPUT 1
-+
-+#define RP1_OUTOVER_PERI 0
-+#define RP1_OUTOVER_INVPERI 1
-+#define RP1_OUTOVER_LOW 2
-+#define RP1_OUTOVER_HIGH 3
-+
-+#define RP1_OEOVER_PERI 0
-+#define RP1_OEOVER_INVPERI 1
-+#define RP1_OEOVER_DISABLE 2
-+#define RP1_OEOVER_ENABLE 3
-+
-+#define RP1_INOVER_PERI 0
-+#define RP1_INOVER_INVPERI 1
-+#define RP1_INOVER_LOW 2
-+#define RP1_INOVER_HIGH 3
-+
-+#define RP1_RIO_OUT 0x00
-+#define RP1_RIO_OE 0x04
-+#define RP1_RIO_IN 0x08
-+
-+#define RP1_PAD_SLEWFAST_MASK 0x00000001
-+#define RP1_PAD_SLEWFAST_LSB 0
-+#define RP1_PAD_SCHMITT_MASK 0x00000002
-+#define RP1_PAD_SCHMITT_LSB 1
-+#define RP1_PAD_PULL_MASK 0x0000000c
-+#define RP1_PAD_PULL_LSB 2
-+#define RP1_PAD_DRIVE_MASK 0x00000030
-+#define RP1_PAD_DRIVE_LSB 4
-+#define RP1_PAD_IN_ENABLE_MASK 0x00000040
-+#define RP1_PAD_IN_ENABLE_LSB 6
-+#define RP1_PAD_OUT_DISABLE_MASK 0x00000080
-+#define RP1_PAD_OUT_DISABLE_LSB 7
-+
-+#define RP1_PAD_DRIVE_2MA 0x00000000
-+#define RP1_PAD_DRIVE_4MA 0x00000010
-+#define RP1_PAD_DRIVE_8MA 0x00000020
-+#define RP1_PAD_DRIVE_12MA 0x00000030
-+
+#define FLD_GET(r, f) (((r) & (f ## _MASK)) >> (f ## _LSB))
+#define FLD_SET(r, f, v) r = (((r) & ~(f ## _MASK)) | ((v) << (f ## _LSB)))
#define FUNC(f) \
[func_##f] = #f
-@@ -172,6 +175,31 @@ static const struct reg_field rp1_pad_fields[] = {
+@@ -172,6 +175,31 @@ static const struct reg_field rp1_pad_fi
func_##f3, \
}
/* pins are just named GPIO0..GPIO53 */
#define RP1_GPIO_PIN(a) PINCTRL_PIN(a, "gpio" #a)
static struct pinctrl_pin_desc rp1_gpio_pins[] = {
-@@ -337,227 +354,128 @@ static struct pinctrl_pin_desc rp1_gpio_pins[] = {
+@@ -337,227 +354,128 @@ static struct pinctrl_pin_desc rp1_gpio_
RP1_GPIO_PIN(53),
};
- RP1_GROUP(mic_2, 37, 38, 39),
- RP1_GROUP(mic_3, 46, 47, 48),
- RP1_GROUP(ir, 2, 3),
-+/* one pin per group */
-+static const char * const rp1_gpio_groups[] = {
-+ "gpio0",
-+ "gpio1",
-+ "gpio2",
-+ "gpio3",
-+ "gpio4",
-+ "gpio5",
-+ "gpio6",
-+ "gpio7",
-+ "gpio8",
-+ "gpio9",
-+ "gpio10",
-+ "gpio11",
-+ "gpio12",
-+ "gpio13",
-+ "gpio14",
-+ "gpio15",
-+ "gpio16",
-+ "gpio17",
-+ "gpio18",
-+ "gpio19",
-+ "gpio20",
-+ "gpio21",
-+ "gpio22",
-+ "gpio23",
-+ "gpio24",
-+ "gpio25",
-+ "gpio26",
-+ "gpio27",
-+ "gpio28",
-+ "gpio29",
-+ "gpio30",
-+ "gpio31",
-+ "gpio32",
-+ "gpio33",
-+ "gpio34",
-+ "gpio35",
-+ "gpio36",
-+ "gpio37",
-+ "gpio38",
-+ "gpio39",
-+ "gpio40",
-+ "gpio41",
-+ "gpio42",
-+ "gpio43",
-+ "gpio44",
-+ "gpio45",
-+ "gpio46",
-+ "gpio47",
-+ "gpio48",
-+ "gpio49",
-+ "gpio50",
-+ "gpio51",
-+ "gpio52",
-+ "gpio53",
- };
-
+-};
+-
-#define GRP_ARRAY(...) \
- (const char * []) {__VA_ARGS__}
-#define GRP_ARRAY_SIZE(...) \
- RP1_FNC(vbus2, "vbus2", "gpio50", "gpio51"),
- RP1_FNC(vbus3, "vbus3", "gpio52", "gpio53"),
- RP1_NULL_FNC(invalid), //[func_invalid] = "?"
++/* one pin per group */
++static const char * const rp1_gpio_groups[] = {
++ "gpio0",
++ "gpio1",
++ "gpio2",
++ "gpio3",
++ "gpio4",
++ "gpio5",
++ "gpio6",
++ "gpio7",
++ "gpio8",
++ "gpio9",
++ "gpio10",
++ "gpio11",
++ "gpio12",
++ "gpio13",
++ "gpio14",
++ "gpio15",
++ "gpio16",
++ "gpio17",
++ "gpio18",
++ "gpio19",
++ "gpio20",
++ "gpio21",
++ "gpio22",
++ "gpio23",
++ "gpio24",
++ "gpio25",
++ "gpio26",
++ "gpio27",
++ "gpio28",
++ "gpio29",
++ "gpio30",
++ "gpio31",
++ "gpio32",
++ "gpio33",
++ "gpio34",
++ "gpio35",
++ "gpio36",
++ "gpio37",
++ "gpio38",
++ "gpio39",
++ "gpio40",
++ "gpio41",
++ "gpio42",
++ "gpio43",
++ "gpio44",
++ "gpio45",
++ "gpio46",
++ "gpio47",
++ "gpio48",
++ "gpio49",
++ "gpio50",
++ "gpio51",
++ "gpio52",
++ "gpio53",
++};
++
+static const char * const rp1_func_names[] = {
+ FUNC(alt0),
+ FUNC(alt1),
};
static const struct rp1_pin_funcs rp1_gpio_pin_funcs[] = {
-@@ -565,10 +483,10 @@ static const struct rp1_pin_funcs rp1_gpio_pin_funcs[] = {
+@@ -565,10 +483,10 @@ static const struct rp1_pin_funcs rp1_gp
PIN(1, spi0, dpi, uart1, i2c0, _, gpio, proc_rio, pio, spi2),
PIN(2, spi0, dpi, uart1, i2c1, ir, gpio, proc_rio, pio, spi2),
PIN(3, spi0, dpi, uart1, i2c1, ir, gpio, proc_rio, pio, spi2),
static int rp1_pinconf_set(struct pinctrl_dev *pctldev,
unsigned int offset, unsigned long *configs,
-@@ -692,22 +639,33 @@ static struct rp1_pin_info *rp1_get_pin_pctl(struct pinctrl_dev *pctldev,
+@@ -692,22 +639,33 @@ static struct rp1_pin_info *rp1_get_pin_
return NULL;
}
if (oeover != RP1_OEOVER_PERI || fsel >= RP1_FSEL_COUNT)
fsel = RP1_FSEL_NONE;
-@@ -717,6 +675,8 @@ static u32 rp1_get_fsel(struct rp1_pin_info *pin)
+@@ -717,6 +675,8 @@ static u32 rp1_get_fsel(struct rp1_pin_i
static void rp1_set_fsel(struct rp1_pin_info *pin, u32 fsel)
{
if (fsel >= RP1_FSEL_COUNT)
fsel = RP1_FSEL_NONE_HW;
-@@ -724,62 +684,52 @@ static void rp1_set_fsel(struct rp1_pin_info *pin, u32 fsel)
+@@ -724,62 +684,52 @@ static void rp1_set_fsel(struct rp1_pin_
rp1_output_enable(pin, 1);
if (fsel == RP1_FSEL_NONE) {
{
struct rp1_pin_info *pin = rp1_get_pin(chip, offset);
-@@ -796,17 +746,15 @@ static int rp1_gpio_get_direction(struct gpio_chip *chip, unsigned int offset)
+@@ -796,17 +746,15 @@ static int rp1_gpio_get_direction(struct
if (!pin)
return -EINVAL;
{
struct rp1_pin_info *pin = rp1_get_pin(chip, offset);
-@@ -814,11 +762,10 @@ static int rp1_gpio_direction_input(struct gpio_chip *chip, unsigned int offset)
+@@ -814,11 +762,10 @@ static int rp1_gpio_direction_input(stru
return -EINVAL;
rp1_set_dir(pin, RP1_DIR_INPUT);
rp1_set_fsel(pin, RP1_FSEL_GPIO);
int value)
{
struct rp1_pin_info *pin = rp1_get_pin(chip, offset);
-@@ -828,18 +775,17 @@ static int rp1_gpio_direction_output(struct gpio_chip *chip, unsigned int offset
+@@ -828,18 +775,17 @@ static int rp1_gpio_direction_output(str
rp1_set_value(pin, value);
rp1_set_dir(pin, RP1_DIR_OUTPUT);
rp1_set_fsel(pin, RP1_FSEL_GPIO);
}
static const struct gpio_chip rp1_gpio_chip = {
-@@ -861,12 +807,12 @@ static const struct gpio_chip rp1_gpio_chip = {
+@@ -861,12 +807,12 @@ static const struct gpio_chip rp1_gpio_c
static void rp1_gpio_irq_handler(struct irq_desc *desc)
{
struct gpio_chip *chip = irq_desc_get_handler_data(desc);
if (pc->irq[0] == irq)
bank = &rp1_iobanks[0];
-@@ -878,12 +824,13 @@ static void rp1_gpio_irq_handler(struct irq_desc *desc)
+@@ -878,12 +824,13 @@ static void rp1_gpio_irq_handler(struct
chained_irq_enter(host_chip, desc);
ints = readl(pc->gpio_base + bank->ints_offset);
}
chained_irq_exit(host_chip, desc);
-@@ -891,18 +838,18 @@ static void rp1_gpio_irq_handler(struct irq_desc *desc)
+@@ -891,18 +838,18 @@ static void rp1_gpio_irq_handler(struct
static void rp1_gpio_irq_config(struct rp1_pin_info *pin, bool enable)
{
struct rp1_pin_info *pin = rp1_get_pin(chip, gpio);
rp1_gpio_irq_config(pin, true);
-@@ -911,7 +858,7 @@ static void rp1_gpio_irq_enable(struct irq_data *data)
+@@ -911,7 +858,7 @@ static void rp1_gpio_irq_enable(struct i
static void rp1_gpio_irq_disable(struct irq_data *data)
{
struct gpio_chip *chip = irq_data_get_irq_chip_data(data);
struct rp1_pin_info *pin = rp1_get_pin(chip, gpio);
rp1_gpio_irq_config(pin, false);
-@@ -945,11 +892,15 @@ static int rp1_irq_set_type(struct rp1_pin_info *pin, unsigned int type)
+@@ -945,11 +892,15 @@ static int rp1_irq_set_type(struct rp1_p
return -EINVAL;
}
pin->irq_type = type;
return 0;
-@@ -958,9 +909,9 @@ static int rp1_irq_set_type(struct rp1_pin_info *pin, unsigned int type)
+@@ -958,9 +909,9 @@ static int rp1_irq_set_type(struct rp1_p
static int rp1_gpio_irq_set_type(struct irq_data *data, unsigned int type)
{
struct gpio_chip *chip = irq_data_get_irq_chip_data(data);
int bank = pin->bank;
unsigned long flags;
int ret;
-@@ -983,11 +934,11 @@ static int rp1_gpio_irq_set_type(struct irq_data *data, unsigned int type)
+@@ -983,11 +934,11 @@ static int rp1_gpio_irq_set_type(struct
static void rp1_gpio_irq_ack(struct irq_data *data)
{
struct gpio_chip *chip = irq_data_get_irq_chip_data(data);
}
static int rp1_gpio_irq_set_affinity(struct irq_data *data, const struct cpumask *dest, bool force)
-@@ -1023,26 +974,20 @@ static struct irq_chip rp1_gpio_irq_chip = {
+@@ -1023,26 +974,20 @@ static struct irq_chip rp1_gpio_irq_chip
.irq_unmask = rp1_gpio_irq_enable,
.irq_set_affinity = rp1_gpio_irq_set_affinity,
.flags = IRQCHIP_IMMUTABLE,
{
if (pin < RP1_NUM_GPIOS) {
if (fsel < RP1_FSEL_COUNT)
-@@ -1054,26 +999,19 @@ static enum funcs rp1_get_fsel_func(unsigned int pin, unsigned int fsel)
+@@ -1054,26 +999,19 @@ static enum funcs rp1_get_fsel_func(unsi
}
static int rp1_pctl_get_group_pins(struct pinctrl_dev *pctldev,
- unsigned int selector,
- const unsigned int **pins,
- unsigned int *num_pins)
-+ unsigned selector,
-+ const unsigned **pins,
-+ unsigned *num_pins)
- {
+-{
- unsigned int ngroups = ARRAY_SIZE(rp1_gpio_groups);
-
- if (selector < ngroups) {
- *pins = &rp1_gpio_pins[selector - ngroups].number;
- *num_pins = 1;
- }
++ unsigned selector,
++ const unsigned **pins,
++ unsigned *num_pins)
++{
+ *pins = &rp1_gpio_pins[selector].number;
+ *num_pins = 1;
{
struct rp1_pinctrl *pc = pinctrl_dev_get_drvdata(pctldev);
struct gpio_chip *chip = &pc->gpio_chip;
-@@ -1084,13 +1022,13 @@ static void rp1_pctl_pin_dbg_show(struct pinctrl_dev *pctldev,
+@@ -1084,13 +1022,13 @@ static void rp1_pctl_pin_dbg_show(struct
int irq = irq_find_mapping(chip->irq.domain, offset);
seq_printf(s, "function %s (%s) in %s; irq %d (%s)",
{
int i;
-@@ -1124,11 +1062,14 @@ static int rp1_pctl_legacy_map_func(struct rp1_pinctrl *pc,
+@@ -1124,11 +1062,14 @@ static int rp1_pctl_legacy_map_func(stru
return -EINVAL;
}
(*num_maps)++;
return 0;
-@@ -1254,7 +1195,7 @@ static int rp1_pctl_dt_node_to_map(struct pinctrl_dev *pctldev,
+@@ -1254,7 +1195,7 @@ static int rp1_pctl_dt_node_to_map(struc
} else if (function) {
err = pinctrl_utils_add_map_mux(pctldev, &maps,
&reserved_maps, num_maps,
function);
}
-@@ -1272,7 +1213,7 @@ static int rp1_pctl_dt_node_to_map(struct pinctrl_dev *pctldev,
+@@ -1272,7 +1213,7 @@ static int rp1_pctl_dt_node_to_map(struc
} else if (num_configs) {
err = pinctrl_utils_add_map_configs(pctldev, &maps,
&reserved_maps, num_maps,
configs, num_configs,
PIN_MAP_TYPE_CONFIGS_PIN);
}
-@@ -1299,7 +1240,7 @@ static const struct pinctrl_ops rp1_pctl_ops = {
+@@ -1299,7 +1240,7 @@ static const struct pinctrl_ops rp1_pctl
.dt_free_map = rp1_pctl_dt_free_map,
};
{
struct rp1_pin_info *pin = rp1_get_pin_pctl(pctldev, offset);
u32 fsel = rp1_get_fsel(pin);
-@@ -1320,66 +1261,61 @@ static int rp1_pmx_get_functions_count(struct pinctrl_dev *pctldev)
+@@ -1320,66 +1261,61 @@ static int rp1_pmx_get_functions_count(s
}
static const char *rp1_pmx_get_function_name(struct pinctrl_dev *pctldev,
const u8 *pin_funcs;
- unsigned int num_pins;
- int offset, fsel;
--
++ int fsel;
+
- rp1_pctl_get_group_pins(pctldev, group_selector, &pins, &num_pins);
--
++ /* func_selector is an enum funcs, so needs translation */
+
- for (offset = 0; offset < num_pins; ++offset) {
- pin = rp1_get_pin_pctl(pctldev, pins[offset]);
- /* func_selector is an enum funcs, so needs translation */
- }
- } else {
- fsel = (int)func_selector;
-- }
-+ int fsel;
-
-- if (fsel >= RP1_FSEL_COUNT && fsel != RP1_FSEL_NONE)
-- return -EINVAL;
-+ /* func_selector is an enum funcs, so needs translation */
-
-- rp1_set_fsel(pin, fsel);
+ if (func_selector >= RP1_FSEL_COUNT) {
+ /* Convert to an fsel number */
+ pin_funcs = rp1_gpio_pin_funcs[pin->num].funcs;
+ for (fsel = 0; fsel < RP1_FSEL_COUNT; fsel++) {
+ if (pin_funcs[fsel] == func_selector)
+ break;
-+ }
+ }
+ } else {
+ fsel = (int)func_selector;
- }
++ }
+- if (fsel >= RP1_FSEL_COUNT && fsel != RP1_FSEL_NONE)
+- return -EINVAL;
+ if (fsel >= RP1_FSEL_COUNT && fsel != RP1_FSEL_NONE)
+ return -EINVAL;
-+
+
+- rp1_set_fsel(pin, fsel);
+- }
+ rp1_set_fsel(pin, fsel);
-+
+
return 0;
}
bool input)
{
struct rp1_pin_info *pin = rp1_get_pin_pctl(pctldev, offset);
-@@ -1402,9 +1338,15 @@ static const struct pinmux_ops rp1_pmx_ops = {
+@@ -1402,9 +1338,15 @@ static const struct pinmux_ops rp1_pmx_o
static void rp1_pull_config_set(struct rp1_pin_info *pin, unsigned int arg)
{
static int rp1_pinconf_set(struct pinctrl_dev *pctldev, unsigned int offset,
unsigned long *configs, unsigned int num_configs)
{
-@@ -1447,11 +1389,13 @@ static int rp1_pinconf_set(struct pinctrl_dev *pctldev, unsigned int offset,
+@@ -1447,11 +1389,13 @@ static int rp1_pinconf_set(struct pinctr
break;
case PIN_CONFIG_INPUT_SCHMITT_ENABLE:
break;
case PIN_CONFIG_DRIVE_STRENGTH:
-@@ -1471,7 +1415,7 @@ static int rp1_pinconf_set(struct pinctrl_dev *pctldev, unsigned int offset,
+@@ -1471,7 +1415,7 @@ static int rp1_pinconf_set(struct pinctr
default:
return -ENOTSUPP;
}
break;
default:
-@@ -1483,7 +1427,7 @@ static int rp1_pinconf_set(struct pinctrl_dev *pctldev, unsigned int offset,
+@@ -1483,7 +1427,7 @@ static int rp1_pinconf_set(struct pinctr
return 0;
}
unsigned long *config)
{
struct rp1_pin_info *pin = rp1_get_pin_pctl(pctldev, offset);
-@@ -1494,26 +1438,23 @@ static int rp1_pinconf_get(struct pinctrl_dev *pctldev, unsigned int offset,
+@@ -1494,26 +1438,23 @@ static int rp1_pinconf_get(struct pinctr
if (!pin)
return -EINVAL;
case RP1_PAD_DRIVE_2MA:
arg = 2;
break;
-@@ -1529,17 +1470,14 @@ static int rp1_pinconf_get(struct pinctrl_dev *pctldev, unsigned int offset,
+@@ -1529,17 +1470,14 @@ static int rp1_pinconf_get(struct pinctr
}
break;
case PIN_CONFIG_BIAS_DISABLE:
break;
default:
return -ENOTSUPP;
-@@ -1550,51 +1488,10 @@ static int rp1_pinconf_get(struct pinctrl_dev *pctldev, unsigned int offset,
+@@ -1550,51 +1488,10 @@ static int rp1_pinconf_get(struct pinctr
return 0;
}
};
static struct pinctrl_desc rp1_pinctrl_desc = {
-@@ -1617,169 +1514,94 @@ static const struct of_device_id rp1_pinctrl_match[] = {
+@@ -1617,169 +1514,94 @@ static const struct of_device_id rp1_pin
.compatible = "raspberrypi,rp1-gpio",
.data = &rp1_pinconf_ops,
},
- {},
--};
++ {}
+ };
-MODULE_DEVICE_TABLE(of, rp1_pinctrl_match);
-
-static struct rp1_pinctrl rp1_pinctrl_data = {};
--
+
-static const struct regmap_range rp1_gpio_reg_ranges[] = {
- /* BANK 0 */
- regmap_reg_range(0x2004, 0x20dc),
- .rd_table = &rp1_rio_reg_table,
- .name = "rp1-rio",
- .max_register = 0xb004,
-+ {}
- };
-
+-};
+-
-static const struct regmap_config rp1_pinctrl_pads_regmap_cfg = {
- .reg_bits = 32,
- .val_bits = 32,
- bool additive_offset,
- struct regmap *regmap,
- struct regmap_field *out[])
-+static inline void __iomem *devm_auto_iomap(struct platform_device *pdev,
-+ unsigned int index)
- {
+-{
- struct reg_field regfield;
- int k;
-
- if (IS_ERR(out[k]))
- return PTR_ERR(out[k]);
- }
++static inline void __iomem *devm_auto_iomap(struct platform_device *pdev,
++ unsigned int index)
++{
+ struct device *dev = &pdev->dev;
+ struct device_node *np = dev->of_node;
struct gpio_irq_chip *girq;
int err, i;
-- pc->dev = dev;
-- pc->gpio_chip = rp1_gpio_chip;
-- pc->gpio_chip.parent = dev;
+ BUILD_BUG_ON(ARRAY_SIZE(rp1_gpio_pins) != RP1_NUM_GPIOS);
+ BUILD_BUG_ON(ARRAY_SIZE(rp1_gpio_groups) != RP1_NUM_GPIOS);
-
-- pc->gpio_base = devm_platform_ioremap_resource(pdev, 0);
-- if (IS_ERR(pc->gpio_base))
-- return dev_err_probe(dev, PTR_ERR(pc->gpio_base), "could not get GPIO IO memory\n");
++
+ pc = devm_kzalloc(dev, sizeof(*pc), GFP_KERNEL);
+ if (!pc)
+ return -ENOMEM;
-
-- pc->rio_base = devm_platform_ioremap_resource(pdev, 1);
-- if (IS_ERR(pc->rio_base))
-- return dev_err_probe(dev, PTR_ERR(pc->rio_base), "could not get RIO IO memory\n");
++
+ platform_set_drvdata(pdev, pc);
-+ pc->dev = dev;
-
-- pc->pads_base = devm_platform_ioremap_resource(pdev, 2);
-- if (IS_ERR(pc->pads_base))
-- return dev_err_probe(dev, PTR_ERR(pc->pads_base), "could not get PADS IO memory\n");
+ pc->dev = dev;
++
+ pc->gpio_base = devm_auto_iomap(pdev, 0);
+ if (IS_ERR(pc->gpio_base)) {
+ dev_err(dev, "could not get GPIO IO memory\n");
+ return PTR_ERR(pc->gpio_base);
+ }
-
-- gpio_regmap = devm_regmap_init_mmio(dev, pc->gpio_base,
-- &rp1_pinctrl_gpio_regmap_cfg);
-- if (IS_ERR(gpio_regmap))
-- return dev_err_probe(dev, PTR_ERR(gpio_regmap), "could not init GPIO regmap\n");
++
+ pc->rio_base = devm_auto_iomap(pdev, 1);
+ if (IS_ERR(pc->rio_base)) {
+ dev_err(dev, "could not get RIO IO memory\n");
+ return PTR_ERR(pc->rio_base);
+ }
-
-- rio_regmap = devm_regmap_init_mmio(dev, pc->rio_base,
-- &rp1_pinctrl_rio_regmap_cfg);
-- if (IS_ERR(rio_regmap))
-- return dev_err_probe(dev, PTR_ERR(rio_regmap), "could not init RIO regmap\n");
++
+ pc->pads_base = devm_auto_iomap(pdev, 2);
+ if (IS_ERR(pc->pads_base)) {
+ dev_err(dev, "could not get PADS IO memory\n");
+ return PTR_ERR(pc->pads_base);
+ }
++
+ pc->gpio_chip = rp1_gpio_chip;
+ pc->gpio_chip.parent = dev;
+- pc->gpio_base = devm_platform_ioremap_resource(pdev, 0);
+- if (IS_ERR(pc->gpio_base))
+- return dev_err_probe(dev, PTR_ERR(pc->gpio_base), "could not get GPIO IO memory\n");
+-
+- pc->rio_base = devm_platform_ioremap_resource(pdev, 1);
+- if (IS_ERR(pc->rio_base))
+- return dev_err_probe(dev, PTR_ERR(pc->rio_base), "could not get RIO IO memory\n");
+-
+- pc->pads_base = devm_platform_ioremap_resource(pdev, 2);
+- if (IS_ERR(pc->pads_base))
+- return dev_err_probe(dev, PTR_ERR(pc->pads_base), "could not get PADS IO memory\n");
+-
+- gpio_regmap = devm_regmap_init_mmio(dev, pc->gpio_base,
+- &rp1_pinctrl_gpio_regmap_cfg);
+- if (IS_ERR(gpio_regmap))
+- return dev_err_probe(dev, PTR_ERR(gpio_regmap), "could not init GPIO regmap\n");
+-
+- rio_regmap = devm_regmap_init_mmio(dev, pc->rio_base,
+- &rp1_pinctrl_rio_regmap_cfg);
+- if (IS_ERR(rio_regmap))
+- return dev_err_probe(dev, PTR_ERR(rio_regmap), "could not init RIO regmap\n");
+-
- pads_regmap = devm_regmap_init_mmio(dev, pc->pads_base,
- &rp1_pinctrl_pads_regmap_cfg);
- if (IS_ERR(pads_regmap))
- return dev_err_probe(dev, PTR_ERR(pads_regmap), "could not init PADS regmap\n");
-+ pc->gpio_chip = rp1_gpio_chip;
-+ pc->gpio_chip.parent = dev;
-+
+ /*
+ * Workaround for the vagaries of PCIe on BCM2712
+ *
for (i = 0; i < RP1_NUM_BANKS; i++) {
const struct rp1_iobank_desc *bank = &rp1_iobanks[i];
-@@ -1788,85 +1610,35 @@ static int rp1_pinctrl_probe(struct platform_device *pdev)
+@@ -1788,85 +1610,35 @@ static int rp1_pinctrl_probe(struct plat
for (j = 0; j < bank->num_gpios; j++) {
struct rp1_pin_info *pin =
&pc->pins[bank->min_gpio + j];
/*
* Use the same handler for all groups: this is necessary
-@@ -1883,11 +1655,14 @@ static int rp1_pinctrl_probe(struct platform_device *pdev)
+@@ -1883,11 +1655,14 @@ static int rp1_pinctrl_probe(struct plat
}
}
pc->gpio_range = rp1_pinctrl_gpio_range;
pc->gpio_range.base = pc->gpio_chip.base;
-@@ -1895,10 +1670,24 @@ static int rp1_pinctrl_probe(struct platform_device *pdev)
+@@ -1895,10 +1670,24 @@ static int rp1_pinctrl_probe(struct plat
pinctrl_add_gpio_range(pc->pctl_dev, &pc->gpio_range);
return 0;
.driver = {
.name = MODULE_NAME,
.of_match_table = rp1_pinctrl_match,
---
-2.54.0
-
drivers/pinctrl/Kconfig | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
-diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig
-index b6d2990980d1..cc95f10ed01b 100644
--- a/drivers/clk/Kconfig
+++ b/drivers/clk/Kconfig
@@ -89,7 +89,7 @@ config COMMON_CLK_RK808
default MISC_RP1
help
Enable common clock framework support for Raspberry Pi RP1.
-diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig
-index 4f8507ebbdac..582d79cc5b43 100644
--- a/drivers/pinctrl/Kconfig
+++ b/drivers/pinctrl/Kconfig
@@ -672,7 +672,7 @@ config PINCTRL_MLXBF3
default MISC_RP1
select PINMUX
select PINCONF
---
-2.54.0
-
drivers/dma/dw-axi-dmac/dw-axi-dmac.h | 2 +-
2 files changed, 19 insertions(+), 12 deletions(-)
-diff --git a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
-index 1b723cbfb7ce..1bac062aac5e 100644
--- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
+++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
-@@ -809,7 +809,7 @@ static int dw_axi_dma_set_hw_desc(struct axi_dma_chan *chan,
+@@ -807,7 +807,7 @@ static int dw_axi_dma_set_hw_desc(struct
ctlhi = CH_CTL_H_LLI_VALID;
if (chan->chip->dw->hdata->restrict_axi_burst_len) {
ctlhi |= CH_CTL_H_ARLEN_EN | CH_CTL_H_AWLEN_EN |
burst_len << CH_CTL_H_ARLEN_POS |
burst_len << CH_CTL_H_AWLEN_POS;
-@@ -1087,7 +1087,7 @@ dma_chan_prep_dma_memcpy(struct dma_chan *dchan, dma_addr_t dst_adr,
+@@ -1085,7 +1085,7 @@ dma_chan_prep_dma_memcpy(struct dma_chan
reg = CH_CTL_H_LLI_VALID;
if (chan->chip->dw->hdata->restrict_axi_burst_len) {
reg |= (CH_CTL_H_ARLEN_EN |
burst_len << CH_CTL_H_ARLEN_POS |
-@@ -1496,6 +1496,7 @@ static int parse_device_properties(struct axi_dma_chip *chip)
+@@ -1494,6 +1494,7 @@ static int parse_device_properties(struc
{
struct device *dev = chip->dev;
u32 tmp, carr[DMAC_MAX_CHANNELS];
int ret;
ret = device_property_read_u32(dev, "dma-channels", &tmp);
-@@ -1552,15 +1553,21 @@ static int parse_device_properties(struct axi_dma_chip *chip)
+@@ -1550,15 +1551,21 @@ static int parse_device_properties(struc
}
/* axi-max-burst-len is optional property */
}
return 0;
-@@ -1674,7 +1681,7 @@ static int dw_probe(struct platform_device *pdev)
+@@ -1672,7 +1679,7 @@ static int dw_probe(struct platform_devi
dma_cap_set(DMA_CYCLIC, dw->dma.cap_mask);
/* DMA capabilities */
dw->dma.src_addr_widths = AXI_DMA_BUSWIDTHS;
dw->dma.dst_addr_widths = AXI_DMA_BUSWIDTHS;
dw->dma.directions = BIT(DMA_MEM_TO_MEM);
-diff --git a/drivers/dma/dw-axi-dmac/dw-axi-dmac.h b/drivers/dma/dw-axi-dmac/dw-axi-dmac.h
-index b842e6a8d90d..7879f2462539 100644
--- a/drivers/dma/dw-axi-dmac/dw-axi-dmac.h
+++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac.h
@@ -29,7 +29,7 @@ struct dw_axi_dma_hcfg {
/* Register map for DMAX_NUM_CHANNELS <= 8 */
bool reg_map_8_channels;
bool restrict_axi_burst_len;
---
-2.54.0
-
drivers/dma/dw-axi-dmac/dw-axi-dmac.h | 1 +
2 files changed, 70 insertions(+), 4 deletions(-)
-diff --git a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
-index 1bac062aac5e..536c83d7fdaa 100644
--- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
+++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
-@@ -1476,19 +1476,75 @@ static int __maybe_unused axi_dma_runtime_resume(struct device *dev)
+@@ -1474,19 +1474,75 @@ static int __maybe_unused axi_dma_runtim
return axi_dma_resume(chip);
}
+ int max_score;
+ int score;
+ int i;
-
-- dchan = dma_get_any_slave_channel(&dw->dma);
-- if (!dchan)
-- return NULL;
++
+ for (i = 0; i < dw->hdata->nr_channels; i++)
+ chan_flags_all |= dw->chan_flags[i];
+
+ chan_mask |= (1 << i);
+ }
+ }
-+
+
+- dchan = dma_get_any_slave_channel(&dw->dma);
+- if (!dchan)
+- return NULL;
+ if (!chan_mask)
+ return NULL;
+
return dchan;
}
-@@ -1570,6 +1626,15 @@ static int parse_device_properties(struct axi_dma_chip *chip)
+@@ -1568,6 +1624,15 @@ static int parse_device_properties(struc
}
}
return 0;
}
-diff --git a/drivers/dma/dw-axi-dmac/dw-axi-dmac.h b/drivers/dma/dw-axi-dmac/dw-axi-dmac.h
-index 7879f2462539..ab868c16d6b5 100644
--- a/drivers/dma/dw-axi-dmac/dw-axi-dmac.h
+++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac.h
@@ -58,6 +58,7 @@ struct dw_axi_dma {
/* channels */
struct axi_dma_chan *chan;
---
-2.54.0
-
drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
-diff --git a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
-index 536c83d7fdaa..ac4a770250ba 100644
--- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
+++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
-@@ -1476,6 +1476,16 @@ static int __maybe_unused axi_dma_runtime_resume(struct device *dev)
+@@ -1474,6 +1474,16 @@ static int __maybe_unused axi_dma_runtim
return axi_dma_resume(chip);
}
static bool dw_axi_dma_filter_fn(struct dma_chan *dchan, void *filter_param)
{
struct axi_dma_chan *chan = dchan_to_axi_dma_chan(dchan);
-@@ -1746,7 +1756,7 @@ static int dw_probe(struct platform_device *pdev)
+@@ -1744,7 +1754,7 @@ static int dw_probe(struct platform_devi
dma_cap_set(DMA_CYCLIC, dw->dma.cap_mask);
/* DMA capabilities */
dw->dma.src_addr_widths = AXI_DMA_BUSWIDTHS;
dw->dma.dst_addr_widths = AXI_DMA_BUSWIDTHS;
dw->dma.directions = BIT(DMA_MEM_TO_MEM);
---
-2.54.0
-
drivers/video/fbdev/core/fbcon.c | 12 ++
2 files changed, 286 insertions(+), 49 deletions(-)
-diff --git a/drivers/video/fbdev/core/fb_logo.c b/drivers/video/fbdev/core/fb_logo.c
-index 0bab8352b684..566692884495 100644
--- a/drivers/video/fbdev/core/fb_logo.c
+++ b/drivers/video/fbdev/core/fb_logo.c
@@ -2,11 +2,24 @@
static inline unsigned int safe_shift(unsigned int d, int n)
{
-@@ -79,6 +92,32 @@ static void fb_set_logo_truepalette(struct fb_info *info,
+@@ -79,6 +92,32 @@ static void fb_set_logo_truepalette(str
}
}
static void fb_set_logo_directpalette(struct fb_info *info,
const struct linux_logo *logo,
u32 *palette)
-@@ -275,6 +314,171 @@ static void fb_do_show_logo(struct fb_info *info, struct fb_image *image,
+@@ -275,6 +314,171 @@ static void fb_do_show_logo(struct fb_in
}
}
static int fb_show_logo_line(struct fb_info *info, int rotate,
const struct linux_logo *logo, int y,
unsigned int n)
-@@ -288,66 +492,87 @@ static int fb_show_logo_line(struct fb_info *info, int rotate,
+@@ -288,66 +492,87 @@ static int fb_show_logo_line(struct fb_i
info->fbops->owner)
return 0;
- image.depth = 8;
- image.data = logo->data;
+-
+- if (fb_logo.needs_cmapreset)
+- fb_set_logocmap(info, logo);
+ if (fullscreen_logo_enabled) {
+ fb_set_logo_from_file(info, fullscreen_logo_path,
+ &image, palette);
+ image.depth = 8;
+ image.data = logo->data;
-- if (fb_logo.needs_cmapreset)
-- fb_set_logocmap(info, logo);
-+ if (fb_logo.needs_cmapreset)
-+ fb_set_logocmap(info, logo);
-
- if (fb_logo.needs_truepalette ||
- fb_logo.needs_directpalette) {
- palette = kmalloc(256 * 4, GFP_KERNEL);
- if (palette == NULL)
- return 0;
-+ if (fb_logo.needs_truepalette ||
-+ fb_logo.needs_directpalette) {
-+ palette = kmalloc(256 * 4, GFP_KERNEL);
-+ if (palette == NULL)
-+ return 0;
++ if (fb_logo.needs_cmapreset)
++ fb_set_logocmap(info, logo);
- if (fb_logo.needs_truepalette)
- fb_set_logo_truepalette(info, logo, palette);
- else
- fb_set_logo_directpalette(info, logo, palette);
++ if (fb_logo.needs_truepalette ||
++ fb_logo.needs_directpalette) {
++ palette = kmalloc(256 * 4, GFP_KERNEL);
++ if (palette == NULL)
++ return 0;
++
+ if (fb_logo.needs_truepalette)
+ fb_set_logo_truepalette(info, logo, palette);
+ else
+ if (fb_center_logo) {
+ int xres = info->var.xres;
+ int yres = info->var.yres;
-
-- if (rotate == FB_ROTATE_CW || rotate == FB_ROTATE_CCW) {
-- xres = info->var.yres;
-- yres = info->var.xres;
-- }
++
+ if (rotate == FB_ROTATE_CW || rotate == FB_ROTATE_CCW) {
+ xres = info->var.yres;
+ yres = info->var.xres;
+ }
-- while (n && (n * (logo->width + 8) - 8 > xres))
-- --n;
-- image.dx = (xres - (n * (logo->width + 8) - 8)) / 2;
-- image.dy = y ?: (yres - logo->height) / 2;
-- } else {
-- image.dx = 0;
-- image.dy = y;
-- }
+- if (rotate == FB_ROTATE_CW || rotate == FB_ROTATE_CCW) {
+- xres = info->var.yres;
+- yres = info->var.xres;
+ while (n && (n * (logo->width + 8) - 8 > xres))
+ --n;
+ image.dx = (xres - (n * (logo->width + 8) - 8)) / 2;
+ } else {
+ image.dx = 0;
+ image.dy = y;
-+ }
+ }
+- while (n && (n * (logo->width + 8) - 8 > xres))
+- --n;
+- image.dx = (xres - (n * (logo->width + 8) - 8)) / 2;
+- image.dy = y ?: (yres - logo->height) / 2;
+- } else {
+- image.dx = 0;
+- image.dy = y;
+- }
+-
- image.width = logo->width;
- image.height = logo->height;
+ image.width = logo->width;
}
fb_do_show_logo(info, &image, rotate, n);
-diff --git a/drivers/video/fbdev/core/fbcon.c b/drivers/video/fbdev/core/fbcon.c
-index 7453377f3433..2a1860d9229a 100644
--- a/drivers/video/fbdev/core/fbcon.c
+++ b/drivers/video/fbdev/core/fbcon.c
-@@ -110,6 +110,7 @@ static struct fbcon_display fb_display[MAX_NR_CONSOLES];
+@@ -110,6 +110,7 @@ static struct fbcon_display fb_display[M
static struct fb_info *fbcon_registered_fb[FB_MAX];
static int fbcon_num_registered_fb;
#define fbcon_for_each_registered_fb(i) \
for (i = 0; WARN_CONSOLE_UNLOCKED(), i < FB_MAX; i++) \
-@@ -516,6 +517,15 @@ static int __init fb_console_setup(char *this_opt)
+@@ -516,6 +517,15 @@ static int __init fb_console_setup(char
}
__setup("fbcon=", fb_console_setup);
#endif
static int search_fb_in_map(int idx)
-@@ -599,6 +609,8 @@ static void fbcon_prepare_logo(struct vc_data *vc, struct fb_info *info,
+@@ -599,6 +609,8 @@ static void fbcon_prepare_logo(struct vc
if (fb_get_color_depth(&info->var, &info->fix) == 1)
erase &= ~0x400;
- logo_height = fb_prepare_logo(info, ops->rotate);
+ logo_height = fb_prepare_logo(info, par->rotate);
+ if (fullscreen_logo_enabled)
+ logo_height = info->var.yres - vc->vc_font.height;
logo_lines = DIV_ROUND_UP(logo_height, vc->vc_font.height);
q = (unsigned short *) (vc->vc_origin +
vc->vc_size_row * rows);
---
-2.54.0
-
drivers/thermal/gov_step_wise.c | 25 ++++++++++++++++++++-----
1 file changed, 20 insertions(+), 5 deletions(-)
-diff --git a/drivers/thermal/gov_step_wise.c b/drivers/thermal/gov_step_wise.c
-index ea277c466d8d..d9b7257c02b0 100644
--- a/drivers/thermal/gov_step_wise.c
+++ b/drivers/thermal/gov_step_wise.c
@@ -17,13 +17,13 @@
* a. if the trend is THERMAL_TREND_RAISING, do nothing
* b. if the trend is THERMAL_TREND_DROPPING, use the minimum applicable
* cooling state for this trip point, or if the cooling state already
-@@ -82,8 +82,9 @@ static void thermal_zone_trip_update(struct thermal_zone_device *tz,
+@@ -82,8 +82,9 @@ static void thermal_zone_trip_update(str
const struct thermal_trip_desc *td,
int trip_threshold)
{
enum thermal_trend trend = get_tz_trend(tz, trip);
int trip_id = thermal_zone_trip_id(tz, trip);
struct thermal_instance *instance;
-@@ -91,13 +92,27 @@ static void thermal_zone_trip_update(struct thermal_zone_device *tz,
+@@ -91,13 +92,27 @@ static void thermal_zone_trip_update(str
if (throttle)
trace_thermal_zone_trip(tz, trip_id, trip->type);
instance->target = get_target_state(instance, trend, throttle);
dev_dbg(&instance->cdev->device, "old_target=%d, target=%ld\n",
---
-2.54.0
-
.../userspace-api/media/v4l/subdev-formats.rst | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
-diff --git a/Documentation/userspace-api/media/v4l/subdev-formats.rst b/Documentation/userspace-api/media/v4l/subdev-formats.rst
-index 165d0a3bf4fe..4728e081f821 100644
--- a/Documentation/userspace-api/media/v4l/subdev-formats.rst
+++ b/Documentation/userspace-api/media/v4l/subdev-formats.rst
@@ -160,12 +160,14 @@ correspondence between them.
Packed RGB Formats
^^^^^^^^^^^^^^^^^^
---
-2.54.0
-
drivers/media/i2c/tc358743.c | 53 ++++++++++++++++++++++++++++++------
1 file changed, 44 insertions(+), 9 deletions(-)
-diff --git a/drivers/media/i2c/tc358743.c b/drivers/media/i2c/tc358743.c
-index a0ca19359c43..feb089d8de72 100644
--- a/drivers/media/i2c/tc358743.c
+++ b/drivers/media/i2c/tc358743.c
-@@ -756,6 +756,7 @@ static void tc358743_set_ref_clk(struct v4l2_subdev *sd)
+@@ -756,6 +756,7 @@ static void tc358743_set_ref_clk(struct
static void tc358743_set_csi_color_space(struct v4l2_subdev *sd)
{
struct tc358743_state *state = to_state(sd);
switch (state->mbus_fmt_code) {
case MEDIA_BUS_FMT_UYVY8_1X16:
-@@ -771,7 +772,17 @@ static void tc358743_set_csi_color_space(struct v4l2_subdev *sd)
+@@ -771,7 +772,17 @@ static void tc358743_set_csi_color_space
mutex_unlock(&state->confctl_mutex);
break;
case MEDIA_BUS_FMT_RGB888_1X24:
i2c_wr8_and_or(sd, VOUT_SET2,
~(MASK_SEL422 | MASK_VOUT_422FIL_100) & 0xff,
0x00);
-@@ -1432,11 +1443,26 @@ static int tc358743_log_status(struct v4l2_subdev *sd)
+@@ -1432,11 +1443,26 @@ static int tc358743_log_status(struct v4
v4l2_info(sd, "Stopped: %s\n",
(i2c_rd16(sd, CSI_STATUS) & MASK_S_HLT) ?
"yes" : "no");
v4l2_info(sd, "-----%s status-----\n", is_hdmi(sd) ? "HDMI" : "DVI-D");
v4l2_info(sd, "HDCP encrypted content: %s\n",
-@@ -1773,11 +1799,18 @@ static int tc358743_enum_mbus_code(struct v4l2_subdev *sd,
+@@ -1773,11 +1799,18 @@ static int tc358743_enum_mbus_code(struc
{
switch (code->index) {
case 0:
default:
return -EINVAL;
}
-@@ -1787,6 +1820,7 @@ static int tc358743_enum_mbus_code(struct v4l2_subdev *sd,
+@@ -1787,6 +1820,7 @@ static int tc358743_enum_mbus_code(struc
static u32 tc358743_g_colorspace(u32 code)
{
switch (code) {
case MEDIA_BUS_FMT_RGB888_1X24:
return V4L2_COLORSPACE_SRGB;
case MEDIA_BUS_FMT_UYVY8_1X16:
-@@ -1824,7 +1858,8 @@ static int tc358743_set_fmt(struct v4l2_subdev *sd,
+@@ -1824,7 +1858,8 @@ static int tc358743_set_fmt(struct v4l2_
u32 code = format->format.code; /* is overwritten by get_fmt */
int ret = tc358743_get_fmt(sd, sd_state, format);
code == MEDIA_BUS_FMT_UYVY8_1X16)
format->format.code = code;
format->format.colorspace = tc358743_g_colorspace(format->format.code);
-@@ -2244,7 +2279,7 @@ static int tc358743_probe(struct i2c_client *client)
+@@ -2244,7 +2279,7 @@ static int tc358743_probe(struct i2c_cli
if (err < 0)
goto err_hdl;
sd->dev = &client->dev;
---
-2.54.0
-
include/linux/platform_data/simplefb.h | 2 ++
1 file changed, 2 insertions(+)
-diff --git a/include/linux/platform_data/simplefb.h b/include/linux/platform_data/simplefb.h
-index 4f94d52ac99f..63ba837138f9 100644
--- a/include/linux/platform_data/simplefb.h
+++ b/include/linux/platform_data/simplefb.h
@@ -16,10 +16,12 @@
{ "x8r8g8b8", 32, {16, 8}, {8, 8}, {0, 8}, {0, 0}, DRM_FORMAT_XRGB8888 }, \
{ "a8r8g8b8", 32, {16, 8}, {8, 8}, {0, 8}, {24, 8}, DRM_FORMAT_ARGB8888 }, \
{ "x8b8g8r8", 32, {0, 8}, {8, 8}, {16, 8}, {0, 0}, DRM_FORMAT_XBGR8888 }, \
---
-2.54.0
-
drivers/misc/ws2812-pio-rp1.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-diff --git a/drivers/misc/ws2812-pio-rp1.c b/drivers/misc/ws2812-pio-rp1.c
-index 23b7028868aa..f00a594e8766 100644
--- a/drivers/misc/ws2812-pio-rp1.c
+++ b/drivers/misc/ws2812-pio-rp1.c
-@@ -142,8 +142,8 @@ static uint8_t ws2812_apply_gamma(uint8_t brightness, uint8_t val)
+@@ -142,8 +142,8 @@ static uint8_t ws2812_apply_gamma(uint8_
{
int bright;
bright = (val * brightness) / 255;
return ws2812_gamma[bright];
}
---
-2.54.0
-
.../gpu/drm/panel/panel-waveshare-dsi-v2.c | 43 +++++++++++++++++++
1 file changed, 43 insertions(+)
-diff --git a/drivers/gpu/drm/panel/panel-waveshare-dsi-v2.c b/drivers/gpu/drm/panel/panel-waveshare-dsi-v2.c
-index cfff92ead5e6..e15dae58a19d 100644
--- a/drivers/gpu/drm/panel/panel-waveshare-dsi-v2.c
+++ b/drivers/gpu/drm/panel/panel-waveshare-dsi-v2.c
-@@ -1374,6 +1374,25 @@ static const struct panel_init_cmd ws_panel_7_a_init[] = {
+@@ -1374,6 +1374,25 @@ static const struct panel_init_cmd ws_pa
{},
};
static const struct panel_init_cmd ws_panel_5_5_a_init[] = {
_INIT_DCS_CMD(0xB9, 0xFF, 0x83, 0x94),
_INIT_DCS_CMD(0xBA, 0x61, 0x03, 0x68, 0x6B, 0xB2, 0xC0),
-@@ -1902,6 +1921,20 @@ static const struct drm_display_mode ws_panel_7_a_mode = {
+@@ -1902,6 +1921,20 @@ static const struct drm_display_mode ws_
.height_mm = 154,
};
static const struct drm_display_mode ws_panel_5_5_a_mode = {
.clock = 65000,
.hdisplay = 720,
-@@ -2201,6 +2234,15 @@ static const struct ws_panel_desc ws_panel_7_inch_a_desc = {
+@@ -2201,6 +2234,15 @@ static const struct ws_panel_desc ws_pan
.format = MIPI_DSI_FMT_RGB888,
};
static const struct ws_panel_desc ws_panel_5_5_inch_a_desc = {
.init = ws_panel_5_5_a_init,
.mode = &ws_panel_5_5_a_mode,
-@@ -2258,6 +2300,7 @@ static const struct of_device_id ws_panel_of_match[] = {
+@@ -2258,6 +2300,7 @@ static const struct of_device_id ws_pane
{ .compatible = "waveshare,8.0-dsi-touch-a", &ws_panel_8_inch_a_desc },
{ .compatible = "waveshare,7.0-dsi-touch-a", &ws_panel_7_inch_a_desc },
{ .compatible = "waveshare,7.0-dsi-touch-b", &ws_panel_7_inch_a_desc },
{ .compatible = "waveshare,5.5-dsi-touch-a",
&ws_panel_5_5_inch_a_desc },
{ .compatible = "waveshare,5.0-dsi-touch-a", &ws_panel_5_inch_a_desc },
---
-2.54.0
-
drivers/media/i2c/imx477.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/media/i2c/imx477.c b/drivers/media/i2c/imx477.c
-index fac4090d27a1..957bb105e8f7 100644
--- a/drivers/media/i2c/imx477.c
+++ b/drivers/media/i2c/imx477.c
-@@ -114,7 +114,7 @@ MODULE_PARM_DESC(fstrobe_delay, "Set fstrobe delay from end all lines starting t
+@@ -114,7 +114,7 @@ MODULE_PARM_DESC(fstrobe_delay, "Set fst
#define IMX477_REG_IOP_MPY CCI_REG16(0x030e)
/* Test Pattern Control */
#define IMX477_TEST_PATTERN_DISABLE 0
#define IMX477_TEST_PATTERN_SOLID_COLOR 1
#define IMX477_TEST_PATTERN_COLOR_BARS 2
---
-2.54.0
-
arch/arm64/boot/dts/broadcom/bcm2712.dtsi | 4 ----
5 files changed, 39 deletions(-)
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-ds.dtsi b/arch/arm64/boot/dts/broadcom/bcm2712-ds.dtsi
-index d6e4234077de..a7fc6b37165b 100644
--- a/arch/arm64/boot/dts/broadcom/bcm2712-ds.dtsi
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-ds.dtsi
@@ -4,25 +4,6 @@
arm-pmu {
compatible = "arm,cortex-a76-pmu";
interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts
-index 0a99dbe20e87..a9c9eb978045 100644
--- a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts
-@@ -17,11 +17,7 @@ / {
+@@ -17,11 +17,7 @@
/* Will be filled by the bootloader */
memory@0 {
device_type = "memory";
};
leds: leds {
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5.dtsi b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5.dtsi
-index f1a8d6776703..7558978cbf92 100644
--- a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5.dtsi
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5.dtsi
-@@ -16,11 +16,7 @@ / {
+@@ -16,11 +16,7 @@
/* Will be filled by the bootloader */
memory@0 {
device_type = "memory";
};
leds: leds {
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-rpi.dtsi b/arch/arm64/boot/dts/broadcom/bcm2712-rpi.dtsi
-index 52452d0bec59..e6a12bd2b941 100644
--- a/arch/arm64/boot/dts/broadcom/bcm2712-rpi.dtsi
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-rpi.dtsi
-@@ -297,11 +297,7 @@ blconfig: nvram@0 {
+@@ -297,11 +297,7 @@ pciex4: &pcie2 { };
compatible = "raspberrypi,bootloader-config", "nvmem-rmem";
#address-cells = <1>;
#size-cells = <1>;
no-map;
status = "disabled";
};
-@@ -313,11 +309,7 @@ blpubkey: nvram@1 {
+@@ -313,11 +309,7 @@ pciex4: &pcie2 { };
compatible = "raspberrypi,bootloader-public-key", "nvmem-rmem";
#address-cells = <1>;
#size-cells = <1>;
no-map;
status = "disabled";
};
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712.dtsi b/arch/arm64/boot/dts/broadcom/bcm2712.dtsi
-index 5cf747c71004..0e7570e727c5 100644
--- a/arch/arm64/boot/dts/broadcom/bcm2712.dtsi
+++ b/arch/arm64/boot/dts/broadcom/bcm2712.dtsi
-@@ -608,11 +608,7 @@ clk_108MHz: clk-108M {
+@@ -617,11 +617,7 @@
hvs: hvs@107c580000 {
compatible = "brcm,bcm2712-hvs";
interrupt-parent = <&disp_intr>;
interrupts = <2>, <9>, <16>;
interrupt-names = "ch0-eof", "ch1-eof", "ch2-eof";
---
-2.54.0
-
drivers/gpu/drm/panel/panel-sitronix-st7701.c | 249 +++++++++++++++++-
1 file changed, 248 insertions(+), 1 deletion(-)
-diff --git a/drivers/gpu/drm/panel/panel-sitronix-st7701.c b/drivers/gpu/drm/panel/panel-sitronix-st7701.c
-index 2f79ec4a2063..285aad105c01 100644
--- a/drivers/gpu/drm/panel/panel-sitronix-st7701.c
+++ b/drivers/gpu/drm/panel/panel-sitronix-st7701.c
@@ -12,6 +12,7 @@
unsigned int panel_sleep_delay;
/* TFT matrix driver configuration, panel specific. */
-@@ -542,6 +544,94 @@ static void wf40eswaa6mnn0_gip_sequence(struct st7701 *st7701)
+@@ -542,6 +544,94 @@ static void wf40eswaa6mnn0_gip_sequence(
ST7701_WRITE(st7701, MIPI_DCS_SET_ADDRESS_MODE, 0);
}
static int st7701_prepare(struct drm_panel *panel)
{
struct st7701 *st7701 = panel_to_st7701(panel);
-@@ -631,6 +721,11 @@ static int st7701_get_modes(struct drm_panel *panel,
+@@ -631,6 +721,11 @@ static int st7701_get_modes(struct drm_p
drm_mode_set_name(mode);
drm_mode_probed_add(connector, mode);
connector->display_info.width_mm = desc_mode->width_mm;
connector->display_info.height_mm = desc_mode->height_mm;
-@@ -1178,6 +1273,26 @@ static const struct drm_display_mode wf40eswaa6mnn0_mode = {
+@@ -1178,6 +1273,26 @@ static const struct drm_display_mode wf4
.type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED,
};
static const struct st7701_panel_desc wf40eswaa6mnn0_desc = {
.mode = &wf40eswaa6mnn0_mode,
.lanes = 2,
-@@ -1258,6 +1373,134 @@ static const struct st7701_panel_desc wf40eswaa6mnn0_desc = {
+@@ -1258,6 +1373,134 @@ static const struct st7701_panel_desc wf
.gip_sequence = wf40eswaa6mnn0_gip_sequence,
};
static void st7701_cleanup(void *data)
{
struct st7701 *st7701 = (struct st7701 *)data;
-@@ -1290,7 +1533,7 @@ static int st7701_probe(struct device *dev, int connector_type)
+@@ -1290,7 +1533,7 @@ static int st7701_probe(struct device *d
if (ret < 0)
return ret;
if (IS_ERR(st7701->reset)) {
dev_err(dev, "Couldn't get our reset GPIO\n");
return PTR_ERR(st7701->reset);
-@@ -1395,12 +1638,16 @@ MODULE_DEVICE_TABLE(of, st7701_dsi_of_match);
+@@ -1395,12 +1638,16 @@ MODULE_DEVICE_TABLE(of, st7701_dsi_of_ma
static const struct of_device_id st7701_spi_of_match[] = {
{ .compatible = "anbernic,rg28xx-panel", .data = &rg28xx_desc },
{ /* sentinel */ }
};
MODULE_DEVICE_TABLE(spi, st7701_spi_ids);
---
-2.54.0
-
drivers/clk/bcm/clk-raspberrypi.c | 1 +
1 file changed, 1 insertion(+)
-diff --git a/drivers/clk/bcm/clk-raspberrypi.c b/drivers/clk/bcm/clk-raspberrypi.c
-index 1a9162f0ae31..dcc3ae5fb916 100644
--- a/drivers/clk/bcm/clk-raspberrypi.c
+++ b/drivers/clk/bcm/clk-raspberrypi.c
-@@ -151,6 +151,7 @@ raspberrypi_clk_variants[RPI_FIRMWARE_NUM_CLK_ID] = {
+@@ -151,6 +151,7 @@ raspberrypi_clk_variants[RPI_FIRMWARE_NU
[RPI_FIRMWARE_ISP_CLK_ID] = {
.export = true,
.minimize = true,
},
[RPI_FIRMWARE_PIXEL_BVB_CLK_ID] = {
.export = true,
---
-2.54.0
-
3 files changed, 74 insertions(+)
create mode 100644 arch/arm/boot/dts/overlays/ilitek-ts-i2c-overlay.dts
-diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile
-index f8c13f656bb5..cf7c0154ad6d 100644
--- a/arch/arm/boot/dts/overlays/Makefile
+++ b/arch/arm/boot/dts/overlays/Makefile
@@ -131,6 +131,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
ilitek251x.dtbo \
imx219.dtbo \
imx258.dtbo \
-diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
-index 0e92e99f8399..70dc072c8b7e 100644
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
@@ -2784,6 +2784,17 @@ Load: dtoverlay=i2s-master-dac
Name: ilitek251x
Info: Enables I2C connected Ilitek 251x multiple touch controller using
GPIO 4 (pin 7 on GPIO header) for interrupt.
-diff --git a/arch/arm/boot/dts/overlays/ilitek-ts-i2c-overlay.dts b/arch/arm/boot/dts/overlays/ilitek-ts-i2c-overlay.dts
-new file mode 100644
-index 000000000000..673d5294d7ee
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/ilitek-ts-i2c-overlay.dts
@@ -0,0 +1,62 @@
+ swapxy = <&ili2130>,"touchscreen-swapped-x-y?";
+ };
+};
---
-2.54.0
-
arch/arm/boot/dts/overlays/ilitek251x-overlay.dts | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
-diff --git a/arch/arm/boot/dts/overlays/ilitek251x-overlay.dts b/arch/arm/boot/dts/overlays/ilitek251x-overlay.dts
-index 226d490ce092..5383ef160511 100644
--- a/arch/arm/boot/dts/overlays/ilitek251x-overlay.dts
+++ b/arch/arm/boot/dts/overlays/ilitek251x-overlay.dts
@@ -2,6 +2,8 @@
/ {
compatible = "brcm,bcm2835";
-@@ -29,7 +31,7 @@ ili251x: ili251x@41 {
+@@ -29,7 +31,7 @@
pinctrl-names = "default";
pinctrl-0 = <&ili251x_pins>;
interrupt-parent = <&gpio>;
touchscreen-size-x = <16384>;
touchscreen-size-y = <9600>;
};
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_plane.c | 10 ----------
1 file changed, 10 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
-index 7825565be7d5..04c747772075 100644
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -815,11 +815,8 @@ static unsigned int vc4_lbm_channel_size(const struct drm_plane_state *state,
+@@ -815,11 +815,8 @@ static unsigned int vc4_lbm_channel_size
unsigned int channel)
{
const struct drm_format_info *info = state->fb->format;
/* LBM is meant to use the smaller of source or dest width, but there
* is a issue with UV scaling that the size required for the second
-@@ -846,13 +843,6 @@ static unsigned int vc4_lbm_channel_size(const struct drm_plane_state *state,
+@@ -846,13 +843,6 @@ static unsigned int vc4_lbm_channel_size
lines = DIV_ROUND_UP(words, 128 / info->hsub);
return lines;
}
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_plane.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
-index 04c747772075..1aa51fda8fc9 100644
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -805,7 +805,10 @@ static unsigned int vc4_lbm_components(const struct drm_plane_state *state,
+@@ -805,7 +805,10 @@ static unsigned int vc4_lbm_components(c
if (info->is_yuv)
return channel ? 2 : 1;
return 4;
return 3;
-@@ -836,9 +839,6 @@ static unsigned int vc4_lbm_channel_size(const struct drm_plane_state *state,
+@@ -836,9 +839,6 @@ static unsigned int vc4_lbm_channel_size
if (!components)
return 0;
words = width * wpc * components;
lines = DIV_ROUND_UP(words, 128 / info->hsub);
---
-2.54.0
-
arch/arm/boot/dts/overlays/uart5-overlay.dts | 6 +++---
4 files changed, 12 insertions(+), 12 deletions(-)
-diff --git a/arch/arm/boot/dts/overlays/uart2-overlay.dts b/arch/arm/boot/dts/overlays/uart2-overlay.dts
-index 4efbbed72619..1e52d6d89263 100644
--- a/arch/arm/boot/dts/overlays/uart2-overlay.dts
+++ b/arch/arm/boot/dts/overlays/uart2-overlay.dts
-@@ -19,9 +19,9 @@ __dormant__ {
+@@ -19,9 +19,9 @@
};
};
linux,rs485-enabled-at-boot-time;
rs485-rts-delay = <0 0>;
};
-@@ -30,7 +30,7 @@ __dormant__ {
+@@ -30,7 +30,7 @@
__overrides__ {
ctsrts = <0>,"=1";
rs485 = <0>,"=1=2";
rs485_rts_on_delay = <&rs485>, "rs485-rts-delay:0";
rs485_rts_off_delay = <&rs485>, "rs485-rts-delay:4";
};
-diff --git a/arch/arm/boot/dts/overlays/uart3-overlay.dts b/arch/arm/boot/dts/overlays/uart3-overlay.dts
-index a1a5c12f46e2..26643282a05d 100644
--- a/arch/arm/boot/dts/overlays/uart3-overlay.dts
+++ b/arch/arm/boot/dts/overlays/uart3-overlay.dts
-@@ -19,9 +19,9 @@ __dormant__ {
+@@ -19,9 +19,9 @@
};
};
linux,rs485-enabled-at-boot-time;
rs485-rts-delay = <0 0>;
};
-@@ -30,7 +30,7 @@ __dormant__ {
+@@ -30,7 +30,7 @@
__overrides__ {
ctsrts = <0>,"=1";
rs485 = <0>,"=1=2";
rs485_rts_on_delay = <&rs485>, "rs485-rts-delay:0";
rs485_rts_off_delay = <&rs485>, "rs485-rts-delay:4";
};
-diff --git a/arch/arm/boot/dts/overlays/uart4-overlay.dts b/arch/arm/boot/dts/overlays/uart4-overlay.dts
-index 782e0928393f..c58f80a40f63 100644
--- a/arch/arm/boot/dts/overlays/uart4-overlay.dts
+++ b/arch/arm/boot/dts/overlays/uart4-overlay.dts
-@@ -19,9 +19,9 @@ __dormant__ {
+@@ -19,9 +19,9 @@
};
};
linux,rs485-enabled-at-boot-time;
rs485-rts-delay = <0 0>;
};
-@@ -30,7 +30,7 @@ __dormant__ {
+@@ -30,7 +30,7 @@
__overrides__ {
ctsrts = <0>,"=1";
rs485 = <0>,"=1=2";
rs485_rts_on_delay = <&rs485>, "rs485-rts-delay:0";
rs485_rts_off_delay = <&rs485>, "rs485-rts-delay:4";
};
-diff --git a/arch/arm/boot/dts/overlays/uart5-overlay.dts b/arch/arm/boot/dts/overlays/uart5-overlay.dts
-index 228598ebcec3..b4a140b3bd0a 100644
--- a/arch/arm/boot/dts/overlays/uart5-overlay.dts
+++ b/arch/arm/boot/dts/overlays/uart5-overlay.dts
-@@ -19,9 +19,9 @@ __dormant__ {
+@@ -19,9 +19,9 @@
};
};
linux,rs485-enabled-at-boot-time;
rs485-rts-delay = <0 0>;
};
-@@ -30,7 +30,7 @@ __dormant__ {
+@@ -30,7 +30,7 @@
__overrides__ {
ctsrts = <0>,"=1";
rs485 = <0>,"=1=2";
rs485_rts_on_delay = <&rs485>, "rs485-rts-delay:0";
rs485_rts_off_delay = <&rs485>, "rs485-rts-delay:4";
};
---
-2.54.0
-
arch/arm/boot/dts/overlays/uart5-overlay.dts | 1 +
5 files changed, 12 insertions(+)
-diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
-index 70dc072c8b7e..8936cbe7b519 100644
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
-@@ -5331,6 +5331,8 @@ Params: ctsrts Enable CTS/RTS on GPIOs 2-3 (default off)
+@@ -5331,6 +5331,8 @@ Params: ctsrts Enable C
drive the OE pin of an RS485 transceiver (i.e.
MAX3078E); also enables the UARTx ctsrts
parameter, as RTS is required (default off).
rs485_invert_rts When RS485 mode is enabled, inverts the RTS
line from active-high (default) to active-low.
rs485_rts_on_delay When RS485 mode is enabled, sets the delay (in
-@@ -5355,6 +5357,8 @@ Params: ctsrts Enable CTS/RTS on GPIOs 6-7 (default off)
+@@ -5355,6 +5357,8 @@ Params: ctsrts Enable C
drive the OE pin of an RS485 transceiver (i.e.
MAX3078E); also enables the UARTx ctsrts
parameter, as RTS is required (default off).
rs485_invert_rts When RS485 mode is enabled, inverts the RTS
line from active-high (default) to active-low.
rs485_rts_on_delay When RS485 mode is enabled, sets the delay (in
-@@ -5379,6 +5383,8 @@ Params: ctsrts Enable CTS/RTS on GPIOs 10-11 (default off)
+@@ -5379,6 +5383,8 @@ Params: ctsrts Enable C
drive the OE pin of an RS485 transceiver (i.e.
MAX3078E); also enables the UARTx ctsrts
parameter, as RTS is required (default off).
rs485_invert_rts When RS485 mode is enabled, inverts the RTS
line from active-high (default) to active-low.
rs485_rts_on_delay When RS485 mode is enabled, sets the delay (in
-@@ -5403,6 +5409,8 @@ Params: ctsrts Enable CTS/RTS on GPIOs 14-15 (default off)
+@@ -5403,6 +5409,8 @@ Params: ctsrts Enable C
drive the OE pin of an RS485 transceiver (i.e.
MAX3078E); also enables the UARTx ctsrts
parameter, as RTS is required (default off).
rs485_invert_rts When RS485 mode is enabled, inverts the RTS
line from active-high (default) to active-low.
rs485_rts_on_delay When RS485 mode is enabled, sets the delay (in
-diff --git a/arch/arm/boot/dts/overlays/uart2-overlay.dts b/arch/arm/boot/dts/overlays/uart2-overlay.dts
-index 1e52d6d89263..ef472e2f4b09 100644
--- a/arch/arm/boot/dts/overlays/uart2-overlay.dts
+++ b/arch/arm/boot/dts/overlays/uart2-overlay.dts
-@@ -30,6 +30,7 @@ rs485: __dormant__ {
+@@ -30,6 +30,7 @@
__overrides__ {
ctsrts = <0>,"=1";
rs485 = <0>,"=1=2";
rs485_invert_rts = <&rs485>,"rs485-rts-active-low?";
rs485_rts_on_delay = <&rs485>, "rs485-rts-delay:0";
rs485_rts_off_delay = <&rs485>, "rs485-rts-delay:4";
-diff --git a/arch/arm/boot/dts/overlays/uart3-overlay.dts b/arch/arm/boot/dts/overlays/uart3-overlay.dts
-index 26643282a05d..68e6bc1d9e25 100644
--- a/arch/arm/boot/dts/overlays/uart3-overlay.dts
+++ b/arch/arm/boot/dts/overlays/uart3-overlay.dts
-@@ -30,6 +30,7 @@ rs485: __dormant__ {
+@@ -30,6 +30,7 @@
__overrides__ {
ctsrts = <0>,"=1";
rs485 = <0>,"=1=2";
rs485_invert_rts = <&rs485>,"rs485-rts-active-low?";
rs485_rts_on_delay = <&rs485>, "rs485-rts-delay:0";
rs485_rts_off_delay = <&rs485>, "rs485-rts-delay:4";
-diff --git a/arch/arm/boot/dts/overlays/uart4-overlay.dts b/arch/arm/boot/dts/overlays/uart4-overlay.dts
-index c58f80a40f63..26db5d5ed0d9 100644
--- a/arch/arm/boot/dts/overlays/uart4-overlay.dts
+++ b/arch/arm/boot/dts/overlays/uart4-overlay.dts
-@@ -30,6 +30,7 @@ rs485: __dormant__ {
+@@ -30,6 +30,7 @@
__overrides__ {
ctsrts = <0>,"=1";
rs485 = <0>,"=1=2";
rs485_invert_rts = <&rs485>,"rs485-rts-active-low?";
rs485_rts_on_delay = <&rs485>, "rs485-rts-delay:0";
rs485_rts_off_delay = <&rs485>, "rs485-rts-delay:4";
-diff --git a/arch/arm/boot/dts/overlays/uart5-overlay.dts b/arch/arm/boot/dts/overlays/uart5-overlay.dts
-index b4a140b3bd0a..f90447c61913 100644
--- a/arch/arm/boot/dts/overlays/uart5-overlay.dts
+++ b/arch/arm/boot/dts/overlays/uart5-overlay.dts
-@@ -30,6 +30,7 @@ rs485: __dormant__ {
+@@ -30,6 +30,7 @@
__overrides__ {
ctsrts = <0>,"=1";
rs485 = <0>,"=1=2";
rs485_invert_rts = <&rs485>,"rs485-rts-active-low?";
rs485_rts_on_delay = <&rs485>, "rs485-rts-delay:0";
rs485_rts_off_delay = <&rs485>, "rs485-rts-delay:4";
---
-2.54.0
-
drivers/spi/spi-rp2040-gpio-bridge.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
-diff --git a/drivers/spi/spi-rp2040-gpio-bridge.c b/drivers/spi/spi-rp2040-gpio-bridge.c
-index c09fcecc4089..84efc3a8eada 100644
--- a/drivers/spi/spi-rp2040-gpio-bridge.c
+++ b/drivers/spi/spi-rp2040-gpio-bridge.c
@@ -31,10 +31,19 @@
#define HALF_BUFFER (4U * ONE_KIB)
---
-2.54.0
-
drivers/media/i2c/imx500.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
-diff --git a/drivers/media/i2c/imx500.c b/drivers/media/i2c/imx500.c
-index 60f3b0eef621..c5a0e1d1491b 100644
--- a/drivers/media/i2c/imx500.c
+++ b/drivers/media/i2c/imx500.c
-@@ -1937,7 +1937,7 @@ static void imx500_clear_fw_network(struct imx500 *imx500)
+@@ -1937,7 +1937,7 @@ static void imx500_clear_fw_network(stru
static int __must_check imx500_spi_write(struct imx500 *state, const u8 *data,
size_t size)
{
return -EINVAL;
if (!state->spi_device)
-@@ -1957,7 +1957,7 @@ static int imx500_injection_wait_transfer_complete(struct imx500 *imx500)
+@@ -1957,7 +1957,7 @@ static int imx500_injection_wait_transfe
/* Continue polling until we reach the final TRANS_COMP state */
while (hndsk_reg.val != IMX500_DD_DAT_INJECTION_HNDSK_TRANS_COMP) {
if (ret) {
dev_err(&client->dev,
"Handshake register did not update from state %llu\n",
-@@ -2085,7 +2085,7 @@ static int imx500_inject_input_tensor(struct imx500 *imx500, const u32 *data,
+@@ -2085,7 +2085,7 @@ static int imx500_inject_input_tensor(st
ret = imx500_injection_wait_transfer_complete(imx500);
if (ret) {
return ret;
}
---
-2.54.0
-
drivers/clk/clk-rp1.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
-diff --git a/drivers/clk/clk-rp1.c b/drivers/clk/clk-rp1.c
-index fd144755b879..9197854b5140 100644
--- a/drivers/clk/clk-rp1.c
+++ b/drivers/clk/clk-rp1.c
-@@ -1083,9 +1083,11 @@ static void rp1_clock_choose_div_and_prate(struct clk_hw *hw,
+@@ -1083,9 +1083,11 @@ static void rp1_clock_choose_div_and_pra
/*
* Prevent overclocks - if all parent choices result in
* a downstream clock in excess of the maximum, then the
*calc_rate = 0;
else
*calc_rate = tmp;
-@@ -1738,7 +1740,7 @@ static struct rp1_clk_desc clk_audio_in_desc = REGISTER_CLK(
+@@ -1738,7 +1740,7 @@ static struct rp1_clk_desc clk_audio_in_
static const struct clk_parent_data clk_audio_out_parents[] = {
{ .index = -1 },
{ .hw = &pll_video_sec_desc.hw },
{ .index = 0 },
};
---
-2.54.0
-
drivers/clk/clk-rp1.c | 30 +++++++++++++++---------------
1 file changed, 15 insertions(+), 15 deletions(-)
-diff --git a/drivers/clk/clk-rp1.c b/drivers/clk/clk-rp1.c
-index 9197854b5140..9e148d354553 100644
--- a/drivers/clk/clk-rp1.c
+++ b/drivers/clk/clk-rp1.c
-@@ -1429,7 +1429,7 @@ static struct rp1_clk_desc pll_video_sec_desc = REGISTER_PLL_DIV(
+@@ -1429,7 +1429,7 @@ static struct rp1_clk_desc pll_video_sec
static const struct clk_parent_data clk_eth_tsu_parents[] = {
{ .index = 0 },
{ .index = -1 },
{ .index = -1 },
{ .index = -1 },
-@@ -1460,7 +1460,7 @@ static struct rp1_clk_desc clk_eth_tsu_desc = REGISTER_CLK(
+@@ -1460,7 +1460,7 @@ static struct rp1_clk_desc clk_eth_tsu_d
static const struct clk_parent_data clk_eth_parents[] = {
{ .hw = &pll_sys_sec_desc.div.hw },
{ .hw = &pll_sys_desc.hw },
};
static struct rp1_clk_desc clk_eth_desc = REGISTER_CLK(
-@@ -1661,7 +1661,7 @@ static struct rp1_clk_desc clk_uart_desc = REGISTER_CLK(
+@@ -1661,7 +1661,7 @@ static struct rp1_clk_desc clk_uart_desc
static const struct clk_parent_data clk_pwm0_parents[] = {
{ .index = -1 },
{ .index = 0 },
};
-@@ -1687,7 +1687,7 @@ static struct rp1_clk_desc clk_pwm0_desc = REGISTER_CLK(
+@@ -1687,7 +1687,7 @@ static struct rp1_clk_desc clk_pwm0_desc
static const struct clk_parent_data clk_pwm1_parents[] = {
{ .index = -1 },
{ .index = 0 },
};
-@@ -1715,7 +1715,7 @@ static const struct clk_parent_data clk_audio_in_parents[] = {
+@@ -1715,7 +1715,7 @@ static const struct clk_parent_data clk_
{ .index = -1 },
{ .index = -1 },
{ .index = -1 },
{ .index = 0 },
};
-@@ -1740,8 +1740,8 @@ static struct rp1_clk_desc clk_audio_in_desc = REGISTER_CLK(
+@@ -1740,8 +1740,8 @@ static struct rp1_clk_desc clk_audio_in_
static const struct clk_parent_data clk_audio_out_parents[] = {
{ .index = -1 },
{ .index = 0 },
};
-@@ -1767,7 +1767,7 @@ static struct rp1_clk_desc clk_audio_out_desc = REGISTER_CLK(
+@@ -1767,7 +1767,7 @@ static struct rp1_clk_desc clk_audio_out
static const struct clk_parent_data clk_i2s_parents[] = {
{ .index = 0 },
{ .hw = &pll_audio_desc.hw },
};
static struct rp1_clk_desc clk_i2s_desc = REGISTER_CLK(
-@@ -1889,7 +1889,7 @@ static struct rp1_clk_desc clk_sdio_alt_src_desc = REGISTER_CLK(
+@@ -1889,7 +1889,7 @@ static struct rp1_clk_desc clk_sdio_alt_
static const struct clk_parent_data clk_dpi_parents[] = {
{ .hw = &pll_sys_desc.hw },
{ .hw = &pll_video_desc.hw },
{ .index = -1 },
{ .index = -1 },
-@@ -2025,7 +2025,7 @@ static struct rp1_clk_desc clksrc_mipi1_dsi_byteclk_desc = REGISTER_CLK(
+@@ -2025,7 +2025,7 @@ static struct rp1_clk_desc clksrc_mipi1_
static const struct clk_parent_data clk_mipi0_dpi_parents[] = {
{ .hw = &pll_sys_desc.hw },
{ .hw = &pll_video_desc.hw },
{ .hw = &clksrc_mipi0_dsi_byteclk_desc.hw },
{ .index = -1 },
-@@ -2056,7 +2056,7 @@ static struct rp1_clk_desc clk_mipi0_dpi_desc = REGISTER_CLK(
+@@ -2056,7 +2056,7 @@ static struct rp1_clk_desc clk_mipi0_dpi
static const struct clk_parent_data clk_mipi1_dpi_parents[] = {
{ .hw = &pll_sys_desc.hw },
{ .hw = &pll_video_desc.hw },
{ .hw = &clksrc_mipi1_dsi_byteclk_desc.hw },
{ .index = -1 },
-@@ -2092,7 +2092,7 @@ static const struct clk_parent_data clk_gp2_parents[] = {
+@@ -2092,7 +2092,7 @@ static const struct clk_parent_data clk_
{ .index = -1 },
{ .index = -1 },
{ .index = -1 },
{ .index = -1 },
{ .hw = &pll_video_desc.hw },
{ .hw = &clk_audio_in_desc.hw },
-@@ -2173,7 +2173,7 @@ static const struct clk_parent_data clk_gp4_parents[] = {
+@@ -2173,7 +2173,7 @@ static const struct clk_parent_data clk_
{ .index = -1 },
{ .index = -1 },
{ .index = -1 },
{ .index = -1 },
{ .index = -1 },
{ .index = -1 },
-@@ -2207,7 +2207,7 @@ static struct rp1_clk_desc clk_gp4_desc = REGISTER_CLK(
+@@ -2207,7 +2207,7 @@ static struct rp1_clk_desc clk_gp4_desc
static const struct clk_parent_data clk_vec_parents[] = {
{ .hw = &pll_sys_pri_ph_desc.hw },
{ .hw = &pll_video_desc.hw },
{ .index = -1 },
{ .index = -1 },
-@@ -2243,7 +2243,7 @@ static const struct clk_parent_data clk_gp5_parents[] = {
+@@ -2243,7 +2243,7 @@ static const struct clk_parent_data clk_
{ .index = -1 },
{ .index = -1 },
{ .index = -1 },
{ .hw = &clk_eth_tsu_desc.hw },
{ .index = -1 },
{ .hw = &clk_vec_desc.hw },
---
-2.54.0
-
drivers/clk/clk-rp1.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
-diff --git a/drivers/clk/clk-rp1.c b/drivers/clk/clk-rp1.c
-index 9e148d354553..88b6c87413e5 100644
--- a/drivers/clk/clk-rp1.c
+++ b/drivers/clk/clk-rp1.c
@@ -234,7 +234,8 @@
#define PLL_PWR_PD BIT(0)
#define PLL_PWR_DACPD BIT(1)
-@@ -413,7 +414,7 @@ static int rp1_pll_core_on(struct clk_hw *hw)
+@@ -413,7 +414,7 @@ static int rp1_pll_core_on(struct clk_hw
clockman_write(clockman, data->pwr_reg, PLL_PWR_MASK);
clockman_write(clockman, data->fbdiv_int_reg, 20);
clockman_write(clockman, data->fbdiv_frac_reg, 0);
}
/* Come out of reset. */
-@@ -505,7 +506,7 @@ static int rp1_pll_core_set_rate(struct clk_hw *hw,
+@@ -505,7 +506,7 @@ static int rp1_pll_core_set_rate(struct
/* Don't need to divide ref unless parent_rate > (output freq / 16) */
clockman_write(clockman, data->cs_reg,
clockman_read(clockman, data->cs_reg) |
spin_unlock(&clockman->regs_lock);
return 0;
---
-2.54.0
-
drivers/clk/clk-rp1.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
-diff --git a/drivers/clk/clk-rp1.c b/drivers/clk/clk-rp1.c
-index 88b6c87413e5..5ac4aeadedaf 100644
--- a/drivers/clk/clk-rp1.c
+++ b/drivers/clk/clk-rp1.c
-@@ -771,9 +771,7 @@ static unsigned long rp1_pll_divider_recalc_rate(struct clk_hw *hw,
+@@ -771,9 +771,7 @@ static unsigned long rp1_pll_divider_rec
static int rp1_pll_divider_determine_rate(struct clk_hw *hw,
struct clk_rate_request *req)
{
}
static int rp1_clock_is_on(struct clk_hw *hw)
---
-2.54.0
-
drivers/media/i2c/imx477.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-diff --git a/drivers/media/i2c/imx477.c b/drivers/media/i2c/imx477.c
-index 957bb105e8f7..3737c98dc3e6 100644
--- a/drivers/media/i2c/imx477.c
+++ b/drivers/media/i2c/imx477.c
-@@ -1599,8 +1599,8 @@ static int imx477_start_streaming(struct imx477 *imx477)
+@@ -1599,8 +1599,8 @@ static int imx477_start_streaming(struct
/* Apply default values of current mode */
reg_list = &imx477->mode->reg_list;
if (ret) {
dev_err(&client->dev, "%s failed to set mode\n", __func__);
return ret;
---
-2.54.0
-
drivers/media/i2c/imx335.c | 32 ++++++++++++++++----------------
1 file changed, 16 insertions(+), 16 deletions(-)
-diff --git a/drivers/media/i2c/imx335.c b/drivers/media/i2c/imx335.c
-index 27baf6c9b426..3522a6b1ca14 100644
--- a/drivers/media/i2c/imx335.c
+++ b/drivers/media/i2c/imx335.c
@@ -124,12 +124,20 @@
/**
* struct imx335_reg_list - imx335 sensor register list
-@@ -869,21 +877,13 @@ static int imx335_get_selection(struct v4l2_subdev *sd,
+@@ -869,21 +877,13 @@ static int imx335_get_selection(struct v
{
switch (sel->target) {
case V4L2_SEL_TGT_NATIVE_SIZE:
return 0;
}
---
-2.54.0
-
drivers/media/i2c/imx335.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
-diff --git a/drivers/media/i2c/imx335.c b/drivers/media/i2c/imx335.c
-index 3522a6b1ca14..62a76517ecb2 100644
--- a/drivers/media/i2c/imx335.c
+++ b/drivers/media/i2c/imx335.c
-@@ -493,7 +493,8 @@ static int imx335_update_controls(struct imx335 *imx335,
+@@ -493,7 +493,8 @@ static int imx335_update_controls(struct
if (ret)
return ret;
if (ret)
return ret;
---
-2.54.0
-
drivers/media/i2c/imx335.c | 51 ++++++++++++++++----------------------
1 file changed, 22 insertions(+), 29 deletions(-)
-diff --git a/drivers/media/i2c/imx335.c b/drivers/media/i2c/imx335.c
-index 62a76517ecb2..7631f41e6f1e 100644
--- a/drivers/media/i2c/imx335.c
+++ b/drivers/media/i2c/imx335.c
-@@ -919,13 +919,17 @@ static int imx335_start_streaming(struct imx335 *imx335)
+@@ -919,13 +919,17 @@ static int imx335_start_streaming(struct
const struct imx335_reg_list *reg_list;
int ret;
}
/* Write sensor mode registers */
-@@ -934,27 +938,27 @@ static int imx335_start_streaming(struct imx335 *imx335)
+@@ -934,27 +938,27 @@ static int imx335_start_streaming(struct
reg_list->num_of_regs, NULL);
if (ret) {
dev_err(imx335->dev, "fail to write initial registers\n");
}
/* Start streaming */
-@@ -962,25 +966,29 @@ static int imx335_start_streaming(struct imx335 *imx335)
+@@ -962,25 +966,29 @@ static int imx335_start_streaming(struct
IMX335_MODE_STREAMING, NULL);
if (ret) {
dev_err(imx335->dev, "fail to start streaming\n");
}
/**
-@@ -993,30 +1001,15 @@ static int imx335_stop_streaming(struct imx335 *imx335)
+@@ -993,32 +1001,17 @@ static int imx335_stop_streaming(struct
static int imx335_set_stream(struct v4l2_subdev *sd, int enable)
{
struct imx335 *imx335 = to_imx335(sd);
imx335_stop_streaming(imx335);
- pm_runtime_put(imx335->dev);
- }
--
-- mutex_unlock(&imx335->mutex);
+
+ mutex_unlock(&imx335->mutex);
- return 0;
-
-error_power_off:
- pm_runtime_put(imx335->dev);
-error_unlock:
- mutex_unlock(&imx335->mutex);
-
+- mutex_unlock(&imx335->mutex);
+-
return ret;
---
-2.54.0
-
+ }
+
drivers/media/i2c/imx335.c | 79 ++++++++++----------------------------
1 file changed, 21 insertions(+), 58 deletions(-)
-diff --git a/drivers/media/i2c/imx335.c b/drivers/media/i2c/imx335.c
-index 7631f41e6f1e..9b9bbe6473d5 100644
--- a/drivers/media/i2c/imx335.c
+++ b/drivers/media/i2c/imx335.c
@@ -204,7 +204,6 @@ struct imx335_mode {
unsigned long link_freq_bitmap;
u32 cur_mbus_code;
};
-@@ -766,36 +764,6 @@ static void imx335_fill_pad_format(struct imx335 *imx335,
- fmt->format.xfer_func = V4L2_XFER_FUNC_NONE;
+@@ -767,36 +765,6 @@ static void imx335_fill_pad_format(struc
}
--/**
+ /**
- * imx335_get_pad_format() - Get subdevice pad format
- * @sd: pointer to imx335 V4L2 sub-device structure
- * @sd_state: V4L2 sub-device configuration
- return 0;
-}
-
- /**
+-/**
* imx335_set_pad_format() - Set subdevice pad format
* @sd: pointer to imx335 V4L2 sub-device structure
-@@ -809,12 +777,12 @@ static int imx335_set_pad_format(struct v4l2_subdev *sd,
+ * @sd_state: V4L2 sub-device configuration
+@@ -809,12 +777,12 @@ static int imx335_set_pad_format(struct
struct v4l2_subdev_format *fmt)
{
struct imx335 *imx335 = to_imx335(sd);
for (i = 0; i < ARRAY_SIZE(imx335_mbus_codes); i++) {
if (imx335_mbus_codes[i] == fmt->format.code)
imx335->cur_mbus_code = imx335_mbus_codes[i];
-@@ -822,19 +790,15 @@ static int imx335_set_pad_format(struct v4l2_subdev *sd,
+@@ -822,19 +790,15 @@ static int imx335_set_pad_format(struct
imx335_fill_pad_format(imx335, mode, fmt);
return ret;
}
-@@ -854,12 +818,10 @@ static int imx335_init_state(struct v4l2_subdev *sd,
+@@ -854,12 +818,10 @@ static int imx335_init_state(struct v4l2
fmt.which = sd_state ? V4L2_SUBDEV_FORMAT_TRY : V4L2_SUBDEV_FORMAT_ACTIVE;
imx335_fill_pad_format(imx335, &supported_mode, &fmt);
return imx335_set_pad_format(sd, sd_state, &fmt);
}
-@@ -1001,16 +963,17 @@ static void imx335_stop_streaming(struct imx335 *imx335)
+@@ -1001,16 +963,17 @@ static void imx335_stop_streaming(struct
static int imx335_set_stream(struct v4l2_subdev *sd, int enable)
{
struct imx335 *imx335 = to_imx335(sd);
return ret;
}
-@@ -1138,7 +1101,7 @@ static const struct v4l2_subdev_pad_ops imx335_pad_ops = {
+@@ -1138,7 +1101,7 @@ static const struct v4l2_subdev_pad_ops
.enum_frame_size = imx335_enum_frame_size,
.get_selection = imx335_get_selection,
.set_selection = imx335_get_selection,
.set_fmt = imx335_set_pad_format,
};
-@@ -1233,9 +1196,6 @@ static int imx335_init_controls(struct imx335 *imx335)
+@@ -1233,9 +1196,6 @@ static int imx335_init_controls(struct i
if (ret)
return ret;
/* Initialize exposure and gain */
lpfr = mode->vblank + mode->height;
imx335->exp_ctrl = v4l2_ctrl_new_std(ctrl_hdlr,
-@@ -1355,12 +1315,10 @@ static int imx335_probe(struct i2c_client *client)
+@@ -1355,12 +1315,10 @@ static int imx335_probe(struct i2c_clien
return ret;
}
}
/* Check module identity */
-@@ -1393,11 +1351,18 @@ static int imx335_probe(struct i2c_client *client)
+@@ -1393,11 +1351,18 @@ static int imx335_probe(struct i2c_clien
goto error_handler_free;
}
}
pm_runtime_set_active(imx335->dev);
-@@ -1406,14 +1371,14 @@ static int imx335_probe(struct i2c_client *client)
+@@ -1406,14 +1371,14 @@ static int imx335_probe(struct i2c_clien
return 0;
return ret;
}
-@@ -1427,9 +1392,9 @@ static int imx335_probe(struct i2c_client *client)
+@@ -1427,9 +1392,9 @@ error_mutex_destroy:
static void imx335_remove(struct i2c_client *client)
{
struct v4l2_subdev *sd = i2c_get_clientdata(client);
media_entity_cleanup(&sd->entity);
v4l2_ctrl_handler_free(sd->ctrl_handler);
-@@ -1437,8 +1402,6 @@ static void imx335_remove(struct i2c_client *client)
+@@ -1437,8 +1402,6 @@ static void imx335_remove(struct i2c_cli
if (!pm_runtime_status_suspended(&client->dev))
imx335_power_off(&client->dev);
pm_runtime_set_suspended(&client->dev);
}
static const struct dev_pm_ops imx335_pm_ops = {
---
-2.54.0
-
drivers/media/i2c/imx335.c | 275 +++++++++++++++++++++++++++++--------
1 file changed, 217 insertions(+), 58 deletions(-)
-diff --git a/drivers/media/i2c/imx335.c b/drivers/media/i2c/imx335.c
-index 9b9bbe6473d5..e320c7e6fced 100644
--- a/drivers/media/i2c/imx335.c
+++ b/drivers/media/i2c/imx335.c
@@ -35,6 +35,7 @@
#define IMX335_REG_AREA3_ST_ADR_1 CCI_REG16_LE(0x3074)
#define IMX335_REG_AREA3_WIDTH_1 CCI_REG16_LE(0x3076)
-@@ -133,12 +137,11 @@ static const struct v4l2_rect imx335_native_area = {
+@@ -133,12 +137,11 @@ static const struct v4l2_rect imx335_nat
static const struct v4l2_rect imx335_active_area = {
.top = 50,
/**
* struct imx335_reg_list - imx335 sensor register list
* @num_of_regs: Number of registers in the list
-@@ -155,8 +158,14 @@ static const char * const imx335_supply_name[] = {
+@@ -155,8 +158,14 @@ static const char * const imx335_supply_
"dvdd", /* Digital Core (1.2V) supply */
};
* @width: Frame width
* @height: Frame height
* @code: Format code
-@@ -170,6 +179,7 @@ static const char * const imx335_supply_name[] = {
+@@ -170,6 +179,7 @@ static const char * const imx335_supply_
* @vflip_inverted: Register list vflip (inverted readout)
*/
struct imx335_mode {
u32 width;
u32 height;
u32 code;
-@@ -271,12 +281,33 @@ static const struct cci_reg_sequence mode_2592x1944_regs[] = {
+@@ -271,12 +281,33 @@ static const struct cci_reg_sequence mod
{ IMX335_REG_MODE_SELECT, IMX335_MODE_STANDBY },
{ IMX335_REG_MASTER_MODE, 0x00 },
{ IMX335_REG_WINMODE, 0x04 },
{ CCI_REG8(0x3288), 0x21 },
{ CCI_REG8(0x328a), 0x02 },
{ CCI_REG8(0x3414), 0x05 },
-@@ -367,16 +398,72 @@ static const struct cci_reg_sequence mode_2592x1944_vflip_inverted[] = {
+@@ -367,16 +398,72 @@ static const struct cci_reg_sequence mod
{ CCI_REG16_LE(0x3116), 0x002 },
};
},
};
-@@ -616,18 +727,22 @@ static int imx335_set_ctrl(struct v4l2_ctrl *ctrl)
+@@ -616,18 +727,22 @@ static int imx335_set_ctrl(struct v4l2_c
/* Propagate change of current control to all related controls */
if (ctrl->id == V4L2_CID_VBLANK) {
if (ret)
return ret;
}
-@@ -727,17 +842,16 @@ static int imx335_enum_frame_size(struct v4l2_subdev *sd,
+@@ -727,17 +842,16 @@ static int imx335_enum_frame_size(struct
struct imx335 *imx335 = to_imx335(sd);
u32 code;
fsize->max_height = fsize->min_height;
return 0;
-@@ -779,9 +893,13 @@ static int imx335_set_pad_format(struct v4l2_subdev *sd,
+@@ -779,9 +893,13 @@ static int imx335_set_pad_format(struct
struct imx335 *imx335 = to_imx335(sd);
struct v4l2_mbus_framefmt *format;
const struct imx335_mode *mode;
for (i = 0; i < ARRAY_SIZE(imx335_mbus_codes); i++) {
if (imx335_mbus_codes[i] == fmt->format.code)
-@@ -793,6 +911,16 @@ static int imx335_set_pad_format(struct v4l2_subdev *sd,
+@@ -793,6 +911,16 @@ static int imx335_set_pad_format(struct
format = v4l2_subdev_state_get_format(sd_state, fmt->pad);
*format = fmt->format;
if (fmt->which == V4L2_SUBDEV_FORMAT_ACTIVE) {
ret = imx335_update_controls(imx335, mode);
if (!ret)
-@@ -816,7 +944,7 @@ static int imx335_init_state(struct v4l2_subdev *sd,
+@@ -816,7 +944,7 @@ static int imx335_init_state(struct v4l2
struct v4l2_subdev_format fmt = { 0 };
fmt.which = sd_state ? V4L2_SUBDEV_FORMAT_TRY : V4L2_SUBDEV_FORMAT_ACTIVE;
__v4l2_ctrl_modify_range(imx335->link_freq_ctrl, 0,
__fls(imx335->link_freq_bitmap),
-@@ -839,11 +967,15 @@ static int imx335_get_selection(struct v4l2_subdev *sd,
+@@ -839,11 +967,15 @@ static int imx335_get_selection(struct v
struct v4l2_subdev_selection *sel)
{
switch (sel->target) {
case V4L2_SEL_TGT_CROP_DEFAULT:
case V4L2_SEL_TGT_CROP_BOUNDS:
sel->r = imx335_active_area;
-@@ -855,19 +987,35 @@ static int imx335_get_selection(struct v4l2_subdev *sd,
+@@ -855,19 +987,35 @@ static int imx335_get_selection(struct v
static int imx335_set_framefmt(struct imx335 *imx335)
{
}
/**
-@@ -903,6 +1051,14 @@ static int imx335_start_streaming(struct imx335 *imx335)
+@@ -903,6 +1051,14 @@ static int imx335_start_streaming(struct
goto err_rpm_put;
}
ret = imx335_set_framefmt(imx335);
if (ret) {
dev_err(imx335->dev, "%s failed to set frame format: %d\n",
-@@ -1184,7 +1340,7 @@ static int imx335_init_controls(struct imx335 *imx335)
+@@ -1184,7 +1340,7 @@ static int imx335_init_controls(struct i
struct v4l2_ctrl_handler *ctrl_hdlr = &imx335->ctrl_handler;
const struct imx335_mode *mode = imx335->cur_mode;
struct v4l2_fwnode_device_properties props;
int ret;
ret = v4l2_fwnode_device_parse(imx335->dev, &props);
-@@ -1198,11 +1354,14 @@ static int imx335_init_controls(struct imx335 *imx335)
+@@ -1198,11 +1354,14 @@ static int imx335_init_controls(struct i
/* Initialize exposure and gain */
lpfr = mode->vblank + mode->height;
IMX335_EXPOSURE_STEP,
IMX335_EXPOSURE_DEFAULT);
-@@ -1329,7 +1488,7 @@ static int imx335_probe(struct i2c_client *client)
+@@ -1329,7 +1488,7 @@ static int imx335_probe(struct i2c_clien
}
/* Set default mode to max resolution */
imx335->cur_mbus_code = imx335_mbus_codes[0];
imx335->vblank = imx335->cur_mode->vblank;
---
-2.54.0
-
drivers/media/i2c/imx335.c | 53 +++++++++++++++++---------------------
1 file changed, 24 insertions(+), 29 deletions(-)
-diff --git a/drivers/media/i2c/imx335.c b/drivers/media/i2c/imx335.c
-index e320c7e6fced..ebdd6ef53449 100644
--- a/drivers/media/i2c/imx335.c
+++ b/drivers/media/i2c/imx335.c
-@@ -1019,13 +1019,19 @@ static int imx335_set_framefmt(struct imx335 *imx335)
+@@ -1019,13 +1019,19 @@ static int imx335_set_framefmt(struct im
}
/**
const struct imx335_reg_list *reg_list;
int ret;
-@@ -1099,37 +1105,24 @@ static int imx335_start_streaming(struct imx335 *imx335)
+@@ -1099,37 +1105,24 @@ err_rpm_put:
}
/**
return ret;
}
-@@ -1249,7 +1242,7 @@ static int imx335_parse_hw_config(struct imx335 *imx335)
+@@ -1249,7 +1242,7 @@ done_endpoint_free:
/* V4l2 subdevice ops */
static const struct v4l2_subdev_video_ops imx335_video_ops = {
};
static const struct v4l2_subdev_pad_ops imx335_pad_ops = {
-@@ -1259,6 +1252,8 @@ static const struct v4l2_subdev_pad_ops imx335_pad_ops = {
+@@ -1259,6 +1252,8 @@ static const struct v4l2_subdev_pad_ops
.set_selection = imx335_get_selection,
.get_fmt = v4l2_subdev_get_fmt,
.set_fmt = imx335_set_pad_format,
};
static const struct v4l2_subdev_ops imx335_subdev_ops = {
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_plane.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
-index 1aa51fda8fc9..40398a5c27fd 100644
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -2403,15 +2403,26 @@ u32 vc4_plane_dlist_size(const struct drm_plane_state *state)
+@@ -2403,15 +2403,26 @@ u32 vc4_plane_dlist_size(const struct dr
*/
void vc4_plane_async_set_fb(struct drm_plane *plane, struct drm_framebuffer *fb)
{
/* We're skipping the address adjustment for negative origin,
* because this is only called on the primary plane.
*/
---
-2.54.0
-
create mode 100644 arch/arm/boot/dts/overlays/vd56g3_vd66gy-overlay.dtsi
create mode 100644 arch/arm/boot/dts/overlays/vd66gy-overlay.dts
-diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile
-index cf7c0154ad6d..9f888f4e216c 100644
--- a/arch/arm/boot/dts/overlays/Makefile
+++ b/arch/arm/boot/dts/overlays/Makefile
@@ -346,6 +346,8 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
vec-gpio-pi5.dtbo \
vga666.dtbo \
vl805.dtbo \
-diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
-index 8936cbe7b519..96ab000dc39d 100644
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
-@@ -5866,6 +5866,36 @@ Params: ddc Enables GPIOs 0&1 as the I2C to read the EDID
+@@ -5866,6 +5866,36 @@ Params: ddc Enables
GPIOs, therefore level shifters are required.
Name: vec-gpio-pi5
Info: Overlay to output composite video as an 8-bit digital code over GPIO
pins 4-11, for Raspberry Pi 5 series only. Requires composite video
-diff --git a/arch/arm/boot/dts/overlays/vd56g3-overlay.dts b/arch/arm/boot/dts/overlays/vd56g3-overlay.dts
-new file mode 100644
-index 000000000000..a6b244747d1f
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vd56g3-overlay.dts
@@ -0,0 +1,22 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/vd56g3_vd66gy-overlay.dtsi b/arch/arm/boot/dts/overlays/vd56g3_vd66gy-overlay.dtsi
-new file mode 100644
-index 000000000000..5063e75db5ec
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vd56g3_vd66gy-overlay.dtsi
@@ -0,0 +1,106 @@
+&cam_endpoint {
+ remote-endpoint = <&csi_ep>;
+};
-diff --git a/arch/arm/boot/dts/overlays/vd66gy-overlay.dts b/arch/arm/boot/dts/overlays/vd66gy-overlay.dts
-new file mode 100644
-index 000000000000..b4fa1252daea
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vd66gy-overlay.dts
@@ -0,0 +1,22 @@
+ };
+ };
+};
---
-2.54.0
-
create mode 100644 arch/arm/boot/dts/overlays/vd55g1_vd65g4-overlay.dtsi
create mode 100644 arch/arm/boot/dts/overlays/vd65g4-overlay.dts
-diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile
-index 9f888f4e216c..d5111c7d2367 100644
--- a/arch/arm/boot/dts/overlays/Makefile
+++ b/arch/arm/boot/dts/overlays/Makefile
@@ -346,7 +346,9 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
vd66gy.dtbo \
vec-gpio-pi5.dtbo \
vga666.dtbo \
-diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
-index 96ab000dc39d..3551054a802e 100644
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
-@@ -5866,6 +5866,21 @@ Params: ddc Enables GPIOs 0&1 as the I2C to read the EDID
+@@ -5866,6 +5866,21 @@ Params: ddc Enables
GPIOs, therefore level shifters are required.
Name: vd56g3
Info: ST VD56G3 camera module.
Uses Unicam 1, which is the standard camera connector on most Pi
-@@ -5881,6 +5896,21 @@ Params: rotation Mounting rotation of the camera sensor (0 or
- Compute Module (CSI0, i2c_vc, and cam0_reg).
-
-
+@@ -5874,6 +5889,21 @@ Load: dtoverlay=vd56g3,<param>=<val>
+ Params: rotation Mounting rotation of the camera sensor (0 or
+ 180, default 0)
+ orientation Sensor orientation (0 = front, 1 = rear,
++ 2 = external, default external)
++ media-controller Configure use of Media Controller API for
++ configuring the sensor (default on)
++ cam0 Adopt the default configuration for CAM0 on a
++ Compute Module (CSI0, i2c_vc, and cam0_reg).
++
++
+Name: vd65g4
+Info: ST VD65G4 camera module.
+ Uses Unicam 1, which is the standard camera connector on most Pi
+Params: rotation Mounting rotation of the camera sensor (0 or
+ 180, default 0)
+ orientation Sensor orientation (0 = front, 1 = rear,
-+ 2 = external, default external)
-+ media-controller Configure use of Media Controller API for
-+ configuring the sensor (default on)
-+ cam0 Adopt the default configuration for CAM0 on a
-+ Compute Module (CSI0, i2c_vc, and cam0_reg).
-+
-+
- Name: vd66gy
- Info: ST VD66GY camera module.
- Uses Unicam 1, which is the standard camera connector on most Pi
-diff --git a/arch/arm/boot/dts/overlays/vd55g1-overlay.dts b/arch/arm/boot/dts/overlays/vd55g1-overlay.dts
-new file mode 100644
-index 000000000000..2496bd6822ca
+ 2 = external, default external)
+ media-controller Configure use of Media Controller API for
+ configuring the sensor (default on)
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vd55g1-overlay.dts
@@ -0,0 +1,22 @@
+ };
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/vd55g1_vd65g4-overlay.dtsi b/arch/arm/boot/dts/overlays/vd55g1_vd65g4-overlay.dtsi
-new file mode 100644
-index 000000000000..6b8a8f2d1807
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vd55g1_vd65g4-overlay.dtsi
@@ -0,0 +1,108 @@
+&cam_endpoint {
+ remote-endpoint = <&csi_ep>;
+};
-diff --git a/arch/arm/boot/dts/overlays/vd65g4-overlay.dts b/arch/arm/boot/dts/overlays/vd65g4-overlay.dts
-new file mode 100644
-index 000000000000..b9bf0dd5a063
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vd65g4-overlay.dts
@@ -0,0 +1,22 @@
+ };
+ };
+};
---
-2.54.0
-
drivers/gpu/drm/v3d/v3d_irq.c | 24 +++++++++++++-----------
3 files changed, 18 insertions(+), 11 deletions(-)
-diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
-index a3d29a6a3977..feb9eda3c526 100644
--- a/drivers/gpu/drm/v3d/v3d_drv.c
+++ b/drivers/gpu/drm/v3d/v3d_drv.c
-@@ -46,6 +46,10 @@ module_param_named(super_pages, super_pages, bool, 0400);
+@@ -46,6 +46,10 @@ module_param_named(super_pages, super_pa
MODULE_PARM_DESC(super_pages, "Enable/Disable Super Pages support.");
#endif
static int v3d_get_param_ioctl(struct drm_device *dev, void *data,
struct drm_file *file_priv)
{
-diff --git a/drivers/gpu/drm/v3d/v3d_drv.h b/drivers/gpu/drm/v3d/v3d_drv.h
-index e881bdb9bb17..4ebb3dcd7ab4 100644
--- a/drivers/gpu/drm/v3d/v3d_drv.h
+++ b/drivers/gpu/drm/v3d/v3d_drv.h
-@@ -600,6 +600,7 @@ int v3d_submit_cpu_ioctl(struct drm_device *dev, void *data,
+@@ -600,6 +600,7 @@ int v3d_submit_cpu_ioctl(struct drm_devi
struct drm_file *file_priv);
/* v3d_irq.c */
int v3d_irq_init(struct v3d_dev *v3d);
void v3d_irq_enable(struct v3d_dev *v3d);
void v3d_irq_disable(struct v3d_dev *v3d);
-diff --git a/drivers/gpu/drm/v3d/v3d_irq.c b/drivers/gpu/drm/v3d/v3d_irq.c
-index 427320a879ab..2a7988adcd04 100644
--- a/drivers/gpu/drm/v3d/v3d_irq.c
+++ b/drivers/gpu/drm/v3d/v3d_irq.c
@@ -197,7 +197,7 @@ v3d_hub_irq(int irq, void *arg)
status = IRQ_HANDLED;
}
---
-2.54.0
-
drivers/tty/serial/amba-pl011.c | 5 +++++
1 file changed, 5 insertions(+)
-diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
-index 711aace90483..7068245dcbfd 100644
--- a/drivers/tty/serial/amba-pl011.c
+++ b/drivers/tty/serial/amba-pl011.c
-@@ -3148,6 +3148,11 @@ static int pl011_axi_probe(struct platform_device *pdev)
+@@ -3148,6 +3148,11 @@ static int pl011_axi_probe(struct platfo
r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
ret = pl011_setup_port(&pdev->dev, uap, r, portnr);
if (ret)
return ret;
---
-2.54.0
-
3 files changed, 948 insertions(+)
create mode 100644 sound/soc/bcm/hifiberry_studio_dac8x.c
-diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig
-index 07532624467a..283d2fb26f77 100644
--- a/sound/soc/bcm/Kconfig
+++ b/sound/soc/bcm/Kconfig
-@@ -102,6 +102,14 @@ config SND_BCM2708_SOC_HIFIBERRY_DACPLUSDSP
+@@ -102,6 +102,14 @@ config SND_BCM2708_SOC_HIFIBERRY_DACPLUS
help
Say Y or M if you want to add support for HifiBerry DSP-DAC.
config SND_BCM2708_SOC_HIFIBERRY_DIGI
tristate "Support for HifiBerry Digi"
select SND_SOC_WM8804
-diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile
-index 15c3c4a742c6..0ce245bf8a0a 100644
--- a/sound/soc/bcm/Makefile
+++ b/sound/soc/bcm/Makefile
-@@ -24,6 +24,7 @@ snd-soc-hifiberry-dacplushd-objs := hifiberry_dacplushd.o
+@@ -24,6 +24,7 @@ snd-soc-hifiberry-dacplushd-objs := hifi
snd-soc-hifiberry-dacplusadc-objs := hifiberry_dacplusadc.o
snd-soc-hifiberry-dacplusadcpro-objs := hifiberry_dacplusadcpro.o
snd-soc-hifiberry-dacplusdsp-objs := hifiberry_dacplusdsp.o
snd-soc-justboom-both-objs := justboom-both.o
snd-soc-justboom-dac-objs := justboom-dac.o
snd-soc-rpi-cirrus-objs := rpi-cirrus.o
-@@ -58,6 +59,7 @@ obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSHD) += snd-soc-hifiberry-dacplushd
+@@ -58,6 +59,7 @@ obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_D
obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSADC) += snd-soc-hifiberry-dacplusadc.o
obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSADCPRO) += snd-soc-hifiberry-dacplusadcpro.o
obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUSDSP) += snd-soc-hifiberry-dacplusdsp.o
obj-$(CONFIG_SND_BCM2708_SOC_JUSTBOOM_BOTH) += snd-soc-justboom-both.o
obj-$(CONFIG_SND_BCM2708_SOC_JUSTBOOM_DAC) += snd-soc-justboom-dac.o
obj-$(CONFIG_SND_BCM2708_SOC_RPI_CIRRUS) += snd-soc-rpi-cirrus.o
-diff --git a/sound/soc/bcm/hifiberry_studio_dac8x.c b/sound/soc/bcm/hifiberry_studio_dac8x.c
-new file mode 100644
-index 000000000000..a4553c2d2432
--- /dev/null
+++ b/sound/soc/bcm/hifiberry_studio_dac8x.c
@@ -0,0 +1,938 @@
+MODULE_AUTHOR("Joerg Schambacher <joerg@hifiberry.com>");
+MODULE_DESCRIPTION("HiFiBerry Studio DAC8x Soundcard Driver");
+MODULE_LICENSE("GPL");
---
-2.54.0
-
create mode 100644 arch/arm/boot/dts/overlays/hifiberry-studio-dac8x-overlay.dts
create mode 100644 arch/arm/boot/dts/overlays/hifiberry-studio-dac8x-pro-overlay.dts
-diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile
-index d5111c7d2367..c933568d5839 100644
--- a/arch/arm/boot/dts/overlays/Makefile
+++ b/arch/arm/boot/dts/overlays/Makefile
@@ -105,6 +105,8 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
highperi.dtbo \
hy28a.dtbo \
hy28b.dtbo \
-diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
-index 3551054a802e..6023522cc046 100644
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
@@ -2062,6 +2062,18 @@ Load: dtoverlay=hifiberry-digi-pro
Name: highperi
Info: Enables "High Peripheral" mode
Load: dtoverlay=highperi
-diff --git a/arch/arm/boot/dts/overlays/hifiberry-studio-dac8x-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-studio-dac8x-overlay.dts
-new file mode 100644
-index 000000000000..b19b7d359ffd
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/hifiberry-studio-dac8x-overlay.dts
@@ -0,0 +1,59 @@
+ };
+
+};
-diff --git a/arch/arm/boot/dts/overlays/hifiberry-studio-dac8x-pro-overlay.dts b/arch/arm/boot/dts/overlays/hifiberry-studio-dac8x-pro-overlay.dts
-new file mode 100644
-index 000000000000..fd4f0a3485ba
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/hifiberry-studio-dac8x-pro-overlay.dts
@@ -0,0 +1,60 @@
+ };
+
+};
---
-2.54.0
-
drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c
-index 274af191d9e6..cc5e5b888a56 100644
--- a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c
+++ b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c
-@@ -284,8 +284,8 @@ static u32 pixelformat_from_sps(const struct v4l2_ctrl_hevc_sps * const sps,
+@@ -284,8 +284,8 @@ static u32 pixelformat_from_sps(const st
const int index)
{
static const u32 all_formats[] = {
V4L2_PIX_FMT_NV12_COL128,
V4L2_PIX_FMT_NV12_10_COL128,
};
-@@ -298,12 +298,11 @@ static u32 pixelformat_from_sps(const struct v4l2_ctrl_hevc_sps * const sps,
+@@ -298,12 +298,11 @@ static u32 pixelformat_from_sps(const st
pf = all_formats[index];
} else {
if (index == 0) {
if (sps->bit_depth_luma_minus8 == 0)
pf = V4L2_PIX_FMT_NV12_COL128;
else if (sps->bit_depth_luma_minus8 == 2)
---
-2.54.0
-
delete mode 100644 drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c
delete mode 100644 drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.h
-diff --git a/MAINTAINERS b/MAINTAINERS
-index 203e45741c1a..52ede0718fd1 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -21519,16 +21519,6 @@ S: Maintained
+@@ -21528,16 +21528,6 @@ S: Maintained
F: Documentation/devicetree/bindings/spi/raspberrypi,rp2040-gpio-bridge.yaml
F: drivers/spi/spi-rp2040-gpio-bridge.c
RASPBERRY PI PISP BACK END
M: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
R: Raspberry Pi Kernel Maintenance <kernel-list@raspberrypi.com>
-diff --git a/drivers/media/platform/raspberrypi/Kconfig b/drivers/media/platform/raspberrypi/Kconfig
-index 1d1106713aff..64181cecb5d4 100644
--- a/drivers/media/platform/raspberrypi/Kconfig
+++ b/drivers/media/platform/raspberrypi/Kconfig
@@ -2,7 +2,6 @@
source "drivers/media/platform/raspberrypi/pisp_be/Kconfig"
source "drivers/media/platform/raspberrypi/rp1-cfe/Kconfig"
source "drivers/media/platform/raspberrypi/rp1_cfe/Kconfig"
-diff --git a/drivers/media/platform/raspberrypi/Makefile b/drivers/media/platform/raspberrypi/Makefile
-index 69f801a5ca7c..ec91c50a985c 100644
--- a/drivers/media/platform/raspberrypi/Makefile
+++ b/drivers/media/platform/raspberrypi/Makefile
@@ -1,6 +1,5 @@
obj-y += pisp_be/
obj-y += rp1-cfe/
obj-y += rp1_cfe/
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/Kconfig b/drivers/media/platform/raspberrypi/hevc_dec/Kconfig
-deleted file mode 100644
-index ae1fd079e5c9..000000000000
--- a/drivers/media/platform/raspberrypi/hevc_dec/Kconfig
+++ /dev/null
@@ -1,17 +0,0 @@
- To compile this driver as a module, choose M here: the module
- will be called rpi-hevc-dec.
-
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/Makefile b/drivers/media/platform/raspberrypi/hevc_dec/Makefile
-deleted file mode 100644
-index b6506bf2e00d..000000000000
--- a/drivers/media/platform/raspberrypi/hevc_dec/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-
-rpi-hevc-dec-y = hevc_d.o hevc_d_video.o hevc_d_hw.o\
- hevc_d_h265.o
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d.c b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d.c
-deleted file mode 100644
-index 6ff8d37fb1e3..000000000000
--- a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d.c
+++ /dev/null
@@ -1,459 +0,0 @@
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR("John Cox <john.cox@raspberrypi.com>");
-MODULE_DESCRIPTION("Raspberry Pi HEVC V4L2 driver");
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d.h b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d.h
-deleted file mode 100644
-index 37c2d1612d2a..000000000000
--- a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d.h
+++ /dev/null
@@ -1,189 +0,0 @@
-void *hevc_d_find_control_data(struct hevc_d_ctx *ctx, u32 id);
-
-#endif
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_h265.c b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_h265.c
-deleted file mode 100644
-index 6c9a9d6db15a..000000000000
--- a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_h265.c
+++ /dev/null
@@ -1,2585 +0,0 @@
- VB2_BUF_STATE_ERROR);
- media_request_manual_complete(src_req);
-}
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_h265.h b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_h265.h
-deleted file mode 100644
-index 775fe7de5dd6..000000000000
--- a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_h265.h
+++ /dev/null
@@ -1,23 +0,0 @@
-void hevc_d_device_run(void *priv);
-
-#endif
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_hw.c b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_hw.c
-deleted file mode 100644
-index 5030a6909301..000000000000
--- a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_hw.c
+++ /dev/null
@@ -1,376 +0,0 @@
- ictl_uninit(&dev->ic_active2);
-}
-
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_hw.h b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_hw.h
-deleted file mode 100644
-index 8d91931aadf2..000000000000
--- a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_hw.h
+++ /dev/null
@@ -1,303 +0,0 @@
-void hevc_d_hw_remove(struct hevc_d_dev *dev);
-
-#endif
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c
-deleted file mode 100644
-index cc5e5b888a56..000000000000
--- a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c
+++ /dev/null
@@ -1,749 +0,0 @@
-
- return vb2_queue_init(dst_vq);
-}
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.h b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.h
-deleted file mode 100644
-index 3ea193423194..000000000000
--- a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.h
+++ /dev/null
@@ -1,38 +0,0 @@
-void hevc_d_prepare_src_format(struct v4l2_pix_format_mplane *pix_fmt);
-
-#endif
---
-2.54.0
-
create mode 100644 drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c
create mode 100644 drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.h
-diff --git a/MAINTAINERS b/MAINTAINERS
-index 52ede0718fd1..203e45741c1a 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -21519,6 +21519,16 @@ S: Maintained
+@@ -21528,6 +21528,16 @@ S: Maintained
F: Documentation/devicetree/bindings/spi/raspberrypi,rp2040-gpio-bridge.yaml
F: drivers/spi/spi-rp2040-gpio-bridge.c
RASPBERRY PI PISP BACK END
M: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
R: Raspberry Pi Kernel Maintenance <kernel-list@raspberrypi.com>
-diff --git a/drivers/media/platform/raspberrypi/Kconfig b/drivers/media/platform/raspberrypi/Kconfig
-index 64181cecb5d4..1d1106713aff 100644
--- a/drivers/media/platform/raspberrypi/Kconfig
+++ b/drivers/media/platform/raspberrypi/Kconfig
@@ -2,6 +2,7 @@
source "drivers/media/platform/raspberrypi/pisp_be/Kconfig"
source "drivers/media/platform/raspberrypi/rp1-cfe/Kconfig"
source "drivers/media/platform/raspberrypi/rp1_cfe/Kconfig"
-diff --git a/drivers/media/platform/raspberrypi/Makefile b/drivers/media/platform/raspberrypi/Makefile
-index ec91c50a985c..69f801a5ca7c 100644
--- a/drivers/media/platform/raspberrypi/Makefile
+++ b/drivers/media/platform/raspberrypi/Makefile
@@ -1,5 +1,6 @@
obj-y += pisp_be/
obj-y += rp1-cfe/
obj-y += rp1_cfe/
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/Kconfig b/drivers/media/platform/raspberrypi/hevc_dec/Kconfig
-new file mode 100644
-index 000000000000..ae1fd079e5c9
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/hevc_dec/Kconfig
@@ -0,0 +1,17 @@
+ To compile this driver as a module, choose M here: the module
+ will be called rpi-hevc-dec.
+
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/Makefile b/drivers/media/platform/raspberrypi/hevc_dec/Makefile
-new file mode 100644
-index 000000000000..b6506bf2e00d
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/hevc_dec/Makefile
@@ -0,0 +1,5 @@
+
+rpi-hevc-dec-y = hevc_d.o hevc_d_video.o hevc_d_hw.o\
+ hevc_d_h265.o
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d.c b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d.c
-new file mode 100644
-index 000000000000..bae0a5ff861d
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d.c
@@ -0,0 +1,327 @@
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("John Cox <john.cox@raspberrypi.com>");
+MODULE_DESCRIPTION("Raspberry Pi HEVC V4L2 driver");
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d.h b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d.h
-new file mode 100644
-index 000000000000..61446165d5e5
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d.h
@@ -0,0 +1,195 @@
+void *hevc_d_find_control_data(struct hevc_d_ctx *ctx, u32 id);
+
+#endif
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_h265.c b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_h265.c
-new file mode 100644
-index 000000000000..04688b9bee57
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_h265.c
@@ -0,0 +1,2436 @@
+ VB2_BUF_STATE_ERROR);
+ media_request_manual_complete(src_req);
+}
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_h265.h b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_h265.h
-new file mode 100644
-index 000000000000..48f08d37362b
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_h265.h
@@ -0,0 +1,22 @@
+void hevc_d_device_run(void *priv);
+
+#endif
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_hw.c b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_hw.c
-new file mode 100644
-index 000000000000..1b9ffcd4df3d
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_hw.c
@@ -0,0 +1,429 @@
+ ictl_uninit(&dev->ic_active2);
+}
+
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_hw.h b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_hw.h
-new file mode 100644
-index 000000000000..765b27ab161b
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_hw.h
@@ -0,0 +1,317 @@
+void hevc_d_hw_remove(struct hevc_d_dev *dev);
+
+#endif
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c
-new file mode 100644
-index 000000000000..8c5aa64df93c
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c
@@ -0,0 +1,636 @@
+
+ return vb2_queue_init(dst_vq);
+}
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.h b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.h
-new file mode 100644
-index 000000000000..fb894bc9c813
--- /dev/null
+++ b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.h
@@ -0,0 +1,38 @@
+void hevc_d_prepare_src_format(struct v4l2_pix_format_mplane *pix_fmt);
+
+#endif
---
-2.54.0
-
drivers/media/platform/raspberrypi/hevc_dec/hevc_d.c | 1 +
1 file changed, 1 insertion(+)
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d.c b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d.c
-index bae0a5ff861d..fcd45e6f8d08 100644
--- a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d.c
+++ b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d.c
-@@ -308,6 +308,7 @@ static void hevc_d_remove(struct platform_device *pdev)
+@@ -308,6 +308,7 @@ static void hevc_d_remove(struct platfor
static const struct of_device_id hevc_d_dt_match[] = {
{ .compatible = "brcm,bcm2711-hevc-dec", },
{ /* sentinel */ }
};
MODULE_DEVICE_TABLE(of, hevc_d_dt_match);
---
-2.54.0
-
.../raspberrypi/hevc_dec/hevc_d_video.c | 101 ++++++++++++++----
2 files changed, 149 insertions(+), 31 deletions(-)
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_h265.c b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_h265.c
-index 04688b9bee57..b86c935e8b3a 100644
--- a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_h265.c
+++ b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_h265.c
-@@ -1628,24 +1628,40 @@ static int hevc_d_h265_setup(struct hevc_d_ctx *ctx, struct hevc_d_run *run)
+@@ -1628,24 +1628,40 @@ static int hevc_d_h265_setup(struct hevc
de->cmd_len = 0;
de->dpbno_col = ~0U;
v4l2_err(&dev->v4l2_dev,
"Pixel format %#x != NV12MT_10_COL128 for 10-bit output",
ctx->dst_fmt.pixelformat);
-@@ -1664,6 +1680,42 @@ static int hevc_d_h265_setup(struct hevc_d_ctx *ctx, struct hevc_d_run *run)
+@@ -1664,6 +1680,42 @@ static int hevc_d_h265_setup(struct hevc
goto fail;
}
/*
* Fill in ref planes with our address s.t. if we mess up refs
* somehow then we still have a valid address entry
-@@ -1833,8 +1885,13 @@ static int hevc_d_h265_setup(struct hevc_d_ctx *ctx, struct hevc_d_run *run)
+@@ -1833,8 +1885,13 @@ static int hevc_d_h265_setup(struct hevc
de->ref_addrs[i][0] =
vb2_dma_contig_plane_dma_addr(buf, 0);
}
/* Move DPB from temp */
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c
-index 8c5aa64df93c..cff997f74d64 100644
--- a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c
+++ b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c
-@@ -140,17 +140,55 @@ static void hevc_d_prepare_dst_format(struct v4l2_pix_format_mplane *pix_fmt)
+@@ -140,17 +140,55 @@ static void hevc_d_prepare_dst_format(st
bytesperline = width * 4 / 3;
sizeimage = bytesperline * height;
break;
}
static int hevc_d_querycap(struct file *file, void *priv,
-@@ -235,19 +273,31 @@ static int hevc_d_hevc_validate_sps(const struct v4l2_ctrl_hevc_sps * const sps)
+@@ -235,19 +273,31 @@ static int hevc_d_hevc_validate_sps(cons
static u32 pixelformat_from_sps(const struct v4l2_ctrl_hevc_sps * const sps,
const int index)
{
}
return pf;
-@@ -459,17 +509,28 @@ static int hevc_d_queue_setup(struct vb2_queue *vq, unsigned int *nbufs,
+@@ -459,17 +509,28 @@ static int hevc_d_queue_setup(struct vb2
}
if (*nplanes) {
}
}
---
-2.54.0
-
drivers/media/platform/raspberrypi/hevc_dec/hevc_d.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d.c b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d.c
-index fcd45e6f8d08..78ff5de97980 100644
--- a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d.c
+++ b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d.c
@@ -29,6 +29,15 @@ int hevc_d_v4l2_debug;
static const struct v4l2_ctrl_config hevc_d_ctrls[] = {
{
.id = V4L2_CID_STATELESS_HEVC_SPS,
-@@ -252,7 +261,7 @@ static int hevc_d_probe(struct platform_device *pdev)
+@@ -252,7 +261,7 @@ static int hevc_d_probe(struct platform_
dev->mdev.ops = &hevc_d_m2m_media_ops;
dev->v4l2_dev.mdev = &dev->mdev;
if (ret) {
v4l2_err(&dev->v4l2_dev, "Failed to register video device\n");
goto err_m2m;
---
-2.54.0
-
3 files changed, 150 insertions(+)
create mode 100644 arch/arm/boot/dts/overlays/pps-rp1-overlay.dts
-diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile
-index c933568d5839..83ee1ebd1bae 100644
--- a/arch/arm/boot/dts/overlays/Makefile
+++ b/arch/arm/boot/dts/overlays/Makefile
@@ -227,6 +227,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
proto-codec.dtbo \
pwm.dtbo \
pwm-2chan.dtbo \
-diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
-index 6023522cc046..e3f433522645 100644
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
-@@ -4152,6 +4152,52 @@ Params: gpiopin Input GPIO (default "18")
+@@ -4152,6 +4152,52 @@ Params: gpiopin Input GP
Default is "off".
Name: proto-codec
Info: Configures the PROTO Audio Codec card
Load: dtoverlay=proto-codec
-diff --git a/arch/arm/boot/dts/overlays/pps-rp1-overlay.dts b/arch/arm/boot/dts/overlays/pps-rp1-overlay.dts
-new file mode 100644
-index 000000000000..d0c9ade22e06
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/pps-rp1-overlay.dts
@@ -0,0 +1,103 @@
+ echo = <0>,"+2+3";
+ };
+};
---
-2.54.0
-
drivers/misc/rp1-pio.c | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
-diff --git a/drivers/misc/rp1-pio.c b/drivers/misc/rp1-pio.c
-index 105050ca5311..24c1cc5f887b 100644
--- a/drivers/misc/rp1-pio.c
+++ b/drivers/misc/rp1-pio.c
-@@ -1035,7 +1035,9 @@ struct rp1_pio_client *rp1_pio_open(void)
+@@ -1035,7 +1035,9 @@ struct rp1_pio_client *rp1_pio_open(void
struct rp1_pio_client *client;
if (!g_pio)
client = kzalloc(sizeof(*client), GFP_KERNEL);
if (!client)
-@@ -1292,15 +1294,18 @@ static int rp1_pio_probe(struct platform_device *pdev)
+@@ -1292,15 +1294,18 @@ static int rp1_pio_probe(struct platform
return dev_err_probe(dev, -EPROBE_DEFER, "failed to find RP1 firmware driver\n");
if (IS_ERR(fw)) {
dev_warn(dev, "failed to contact RP1 firmware\n");
platform_set_drvdata(pdev, pio);
pio->fw_pio_base = op_base;
-@@ -1311,8 +1316,10 @@ static int rp1_pio_probe(struct platform_device *pdev)
+@@ -1311,8 +1316,10 @@ static int rp1_pio_probe(struct platform
mutex_init(&pio->instr_mutex);
p = devm_platform_get_and_ioremap_resource(pdev, 0, &ioresource);
pio->phys_addr = ioresource->start;
-@@ -1359,6 +1366,7 @@ static int rp1_pio_probe(struct platform_device *pdev)
+@@ -1359,6 +1366,7 @@ out_unregister:
unregister_chrdev_region(pio->dev_num, 1);
out_err:
return ret;
}
---
-2.54.0
-
.../platform/raspberrypi/pisp_be/pisp_be_formats.h | 10 ++++++++++
1 file changed, 10 insertions(+)
-diff --git a/drivers/media/platform/raspberrypi/pisp_be/pisp_be_formats.h b/drivers/media/platform/raspberrypi/pisp_be/pisp_be_formats.h
-index 1b0386c49281..7304a1354cca 100644
--- a/drivers/media/platform/raspberrypi/pisp_be/pisp_be_formats.h
+++ b/drivers/media/platform/raspberrypi/pisp_be/pisp_be_formats.h
-@@ -170,6 +170,16 @@ static const struct pisp_be_format supported_formats[] = {
- .colorspace_mask = V4L2_COLORSPACE_MASK_ALL_SRGB,
+@@ -171,6 +171,16 @@ static const struct pisp_be_format suppo
.colorspace_default = V4L2_COLORSPACE_SMPTE170M,
},
-+ {
+ {
+ .fourcc = V4L2_PIX_FMT_NV12MT_COL128,
+ .opt_align = 128,
+ .min_align = 128,
+ .colorspace_mask = V4L2_COLORSPACE_MASK_ALL_SRGB,
+ .colorspace_default = V4L2_COLORSPACE_SMPTE170M,
+ },
- {
++ {
.fourcc = V4L2_PIX_FMT_NV21M,
.opt_align = 32,
---
-2.54.0
-
+ .min_align = 16,
drivers/pci/controller/pcie-brcmstb.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
-diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c
-index 33b3c187ffb0..b182ab75a8fc 100644
--- a/drivers/pci/controller/pcie-brcmstb.c
+++ b/drivers/pci/controller/pcie-brcmstb.c
-@@ -1575,7 +1575,7 @@ static void brcm_config_clkreq(struct brcm_pcie *pcie)
+@@ -1575,7 +1575,7 @@ static void brcm_config_clkreq(struct br
{
static const char err_msg[] = "invalid 'brcm,clkreq-mode' DT string\n";
const char *mode = "default";
int ret, tmp;
ret = of_property_read_string(pcie->np, "brcm,clkreq-mode", &mode);
-@@ -1584,10 +1584,6 @@ static void brcm_config_clkreq(struct brcm_pcie *pcie)
+@@ -1584,10 +1584,6 @@ static void brcm_config_clkreq(struct br
mode = "safe";
}
if (strcmp(mode, "no-l1ss") == 0) {
/*
* "no-l1ss" -- Provides Clock Power Management, L0s, and
-@@ -1784,6 +1780,11 @@ static int brcm_pcie_start_link(struct brcm_pcie *pcie)
+@@ -1784,6 +1780,11 @@ static int brcm_pcie_start_link(struct b
brcm_pcie_stats_trigger(pcie, 0);
/* Unassert the fundamental reset */
if (pcie->tperst_clk_ms) {
/*
---
-2.54.0
-
.../platform/raspberrypi/pisp_be/pisp_be_formats.h | 13 +++++++++++++
2 files changed, 15 insertions(+), 1 deletion(-)
-diff --git a/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c b/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
-index efeebe637874..c6c73097d040 100644
--- a/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
+++ b/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
-@@ -1103,8 +1103,9 @@ static void pispbe_set_plane_params(struct v4l2_format *f,
+@@ -1103,8 +1103,9 @@ static void pispbe_set_plane_params(stru
*/
const unsigned int align =
p->bytesperline ? fmt->min_align : fmt->opt_align;
bpl = ALIGN(max(p->bytesperline, bpl), align);
plane_size = bpl * f->fmt.pix_mp.height *
-diff --git a/drivers/media/platform/raspberrypi/pisp_be/pisp_be_formats.h b/drivers/media/platform/raspberrypi/pisp_be/pisp_be_formats.h
-index 7304a1354cca..caaae09e017e 100644
--- a/drivers/media/platform/raspberrypi/pisp_be/pisp_be_formats.h
+++ b/drivers/media/platform/raspberrypi/pisp_be/pisp_be_formats.h
@@ -19,6 +19,7 @@ struct pisp_be_format {
/* 0P3 factor for plane sizing */
unsigned int plane_factor[PISPBE_MAX_PLANES];
unsigned int num_planes;
-@@ -240,6 +241,18 @@ static const struct pisp_be_format supported_formats[] = {
+@@ -240,6 +241,18 @@ static const struct pisp_be_format suppo
.colorspace_mask = V4L2_COLORSPACE_MASK_ALL_SRGB,
.colorspace_default = V4L2_COLORSPACE_SMPTE170M,
},
/* RGB formats */
{
.fourcc = V4L2_PIX_FMT_RGB24,
---
-2.54.0
-
arch/arm/boot/dts/overlays/audremap-overlay.dts | 3 +++
2 files changed, 5 insertions(+)
-diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
-index e3f433522645..21cc1f8b9af1 100644
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
-@@ -875,6 +875,8 @@ Params: swap_lr Reverse the channel allocation, which will also
+@@ -875,6 +875,8 @@ Params: swap_lr Reverse
for other purposes)
pins_40_45 Select GPIOs 40 & 45 (don't use on BCM2711 - the
pins are on different controllers)
Name: audremap-pi5
-diff --git a/arch/arm/boot/dts/overlays/audremap-overlay.dts b/arch/arm/boot/dts/overlays/audremap-overlay.dts
-index 95027c5c8f9e..d72d2698f146 100644
--- a/arch/arm/boot/dts/overlays/audremap-overlay.dts
+++ b/arch/arm/boot/dts/overlays/audremap-overlay.dts
-@@ -34,5 +34,8 @@ __overrides__ {
+@@ -34,5 +34,8 @@
pins_40_45 = <&frag0>,"brcm,pins:0=40",
<&frag0>,"brcm,pins:4=45",
<&frag0>,"brcm,function:0=4";
+ <&frag0>,"brcm,function?=1";
};
};
---
-2.54.0
-
3 files changed, 20 insertions(+)
create mode 100644 arch/arm/boot/dts/overlays/nospi10-overlay.dts
-diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile
-index 83ee1ebd1bae..56c93053f597 100644
--- a/arch/arm/boot/dts/overlays/Makefile
+++ b/arch/arm/boot/dts/overlays/Makefile
@@ -195,6 +195,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
ov2311.dtbo \
ov5647.dtbo \
ov64a40.dtbo \
-diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
-index 21cc1f8b9af1..b673ddf74565 100644
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
-@@ -3705,6 +3705,12 @@ Params: speed Display SPI bus speed
+@@ -3705,6 +3705,12 @@ Params: speed Display
xohms Touchpanel sensitivity (X-plate resistance)
Name: ov2311
Info: Omnivision OV2311 camera module.
Uses Unicam 1, which is the standard camera connector on most Pi
-diff --git a/arch/arm/boot/dts/overlays/nospi10-overlay.dts b/arch/arm/boot/dts/overlays/nospi10-overlay.dts
-new file mode 100644
-index 000000000000..7cf1a325dae8
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/nospi10-overlay.dts
@@ -0,0 +1,13 @@
+ };
+ };
+};
---
-2.54.0
-
drivers/gpio/gpio-pwm.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-diff --git a/drivers/gpio/gpio-pwm.c b/drivers/gpio/gpio-pwm.c
-index 01a2d404d4a3..6fe586847ce7 100644
--- a/drivers/gpio/gpio-pwm.c
+++ b/drivers/gpio/gpio-pwm.c
-@@ -27,14 +27,14 @@ static int pwm_gpio_get_direction(struct gpio_chip *gc, unsigned int off)
+@@ -27,14 +27,14 @@ static int pwm_gpio_get_direction(struct
return GPIO_LINE_DIRECTION_OUT;
}
}
static int pwm_gpio_parse_dt(struct pwm_gpio *pwm_gpio,
---
-2.54.0
-
3 files changed, 477 insertions(+)
create mode 100644 drivers/gpu/drm/panel/panel-ilitek-ili79600a.c
-diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig
-index ce422834e213..edaaf7eb2f09 100644
--- a/drivers/gpu/drm/panel/Kconfig
+++ b/drivers/gpu/drm/panel/Kconfig
@@ -228,6 +228,15 @@ config DRM_PANEL_HYDIS_HV101HD1
config DRM_PANEL_ILITEK_IL9322
tristate "Ilitek ILI9322 320x240 QVGA panels"
depends on OF && SPI
-diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile
-index da8f51612683..19871edb6436 100644
--- a/drivers/gpu/drm/panel/Makefile
+++ b/drivers/gpu/drm/panel/Makefile
-@@ -23,6 +23,7 @@ obj-$(CONFIG_DRM_PANEL_HIMAX_HX83112A) += panel-himax-hx83112a.o
+@@ -23,6 +23,7 @@ obj-$(CONFIG_DRM_PANEL_HIMAX_HX83112A) +
obj-$(CONFIG_DRM_PANEL_HIMAX_HX83112B) += panel-himax-hx83112b.o
obj-$(CONFIG_DRM_PANEL_HIMAX_HX8394) += panel-himax-hx8394.o
obj-$(CONFIG_DRM_PANEL_HYDIS_HV101HD1) += panel-hydis-hv101hd1.o
obj-$(CONFIG_DRM_PANEL_ILITEK_IL9322) += panel-ilitek-ili9322.o
obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9341) += panel-ilitek-ili9341.o
obj-$(CONFIG_DRM_PANEL_ILITEK_ILI9805) += panel-ilitek-ili9805.o
-diff --git a/drivers/gpu/drm/panel/panel-ilitek-ili79600a.c b/drivers/gpu/drm/panel/panel-ilitek-ili79600a.c
-new file mode 100644
-index 000000000000..b91ba5511284
--- /dev/null
+++ b/drivers/gpu/drm/panel/panel-ilitek-ili79600a.c
@@ -0,0 +1,467 @@
+MODULE_AUTHOR("Dave Stevenson <dave.stevenson@raspberrypi.com>");
+MODULE_DESCRIPTION("Ilitek ILI79600a Controller Driver");
+MODULE_LICENSE("GPL");
---
-2.54.0
-
3 files changed, 775 insertions(+)
create mode 100644 drivers/input/touchscreen/ilitek_v3_ts_i2c.c
-diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
-index 7d5b72ee07fa..9d543ad267ce 100644
--- a/drivers/input/touchscreen/Kconfig
+++ b/drivers/input/touchscreen/Kconfig
@@ -515,6 +515,19 @@ config TOUCHSCREEN_ILITEK
config TOUCHSCREEN_IPROC
tristate "IPROC touch panel driver support"
depends on ARCH_BCM_IPROC || COMPILE_TEST
-diff --git a/drivers/input/touchscreen/Makefile b/drivers/input/touchscreen/Makefile
-index ab9abd151078..53930469552e 100644
--- a/drivers/input/touchscreen/Makefile
+++ b/drivers/input/touchscreen/Makefile
-@@ -54,6 +54,7 @@ obj-$(CONFIG_TOUCHSCREEN_HYNITRON_CSTXXX) += hynitron_cstxxx.o
+@@ -54,6 +54,7 @@ obj-$(CONFIG_TOUCHSCREEN_HYNITRON_CSTXXX
obj-$(CONFIG_TOUCHSCREEN_HYNITRON_CST816X) += hynitron-cst816x.o
obj-$(CONFIG_TOUCHSCREEN_ILI210X) += ili210x.o
obj-$(CONFIG_TOUCHSCREEN_ILITEK) += ilitek_ts_i2c.o
obj-$(CONFIG_TOUCHSCREEN_IMAGIS) += imagis.o
obj-$(CONFIG_TOUCHSCREEN_IMX6UL_TSC) += imx6ul_tsc.o
obj-$(CONFIG_TOUCHSCREEN_INEXIO) += inexio.o
-diff --git a/drivers/input/touchscreen/ilitek_v3_ts_i2c.c b/drivers/input/touchscreen/ilitek_v3_ts_i2c.c
-new file mode 100644
-index 000000000000..a02cd79b30d6
--- /dev/null
+++ b/drivers/input/touchscreen/ilitek_v3_ts_i2c.c
@@ -0,0 +1,761 @@
+MODULE_AUTHOR("Dave Stevenson <dave.stevenson@raspberrypi.com>");
+MODULE_DESCRIPTION("Ilitek V3 I2C Touchscreen Driver");
+MODULE_LICENSE("GPL");
---
-2.54.0
-
-From 458416daef0a76a09a37efb57a5f5f58c7ec0ba4 Mon Sep 17 00:00:00 2001
-From: Dave Stevenson <dave.stevenson@raspberrypi.com>
-Date: Wed, 16 Jul 2025 14:17:53 +0100
-Subject: [PATCH] arm64: config: Add modules for the new panel to the 64bit
- defconfig
-
-SIMPLE_PANEL and REGULATOR_RASPBERRYPI_TOUCHSCREEN_V2 are already
-in the defconfig.
-
-Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
----
- arch/arm64/configs/bcm2711_defconfig | 2 ++
- arch/arm64/configs/bcm2712_defconfig | 2 ++
- 2 files changed, 4 insertions(+)
-
-diff --git a/arch/arm64/configs/bcm2711_defconfig b/arch/arm64/configs/bcm2711_defconfig
-index d08c0795b3ce..1920a748d178 100644
---- a/arch/arm64/configs/bcm2711_defconfig
-+++ b/arch/arm64/configs/bcm2711_defconfig
-@@ -700,6 +700,7 @@ CONFIG_TOUCHSCREEN_EXC3000=m
- CONFIG_TOUCHSCREEN_GOODIX=m
- CONFIG_TOUCHSCREEN_ILI210X=m
- CONFIG_TOUCHSCREEN_ILITEK=m
-+CONFIG_TOUCHSCREEN_ILITEK_V3=m
- CONFIG_TOUCHSCREEN_EDT_FT5X06=m
- CONFIG_TOUCHSCREEN_RASPBERRYPI_FW=m
- CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
-@@ -1070,6 +1071,7 @@ CONFIG_DRM=m
- CONFIG_DRM_LOAD_EDID_FIRMWARE=y
- CONFIG_DRM_UDL=m
- CONFIG_DRM_PANEL_LVDS=m
-+CONFIG_DRM_PANEL_ILITEK_IL79600A=m
- CONFIG_DRM_PANEL_ILITEK_ILI9806E=m
- CONFIG_DRM_PANEL_ILITEK_ILI9806E_SPI=m
- CONFIG_DRM_PANEL_ILITEK_ILI9881C=m
-diff --git a/arch/arm64/configs/bcm2712_defconfig b/arch/arm64/configs/bcm2712_defconfig
-index 0c0771cfbb3a..50c328e3bdfd 100644
---- a/arch/arm64/configs/bcm2712_defconfig
-+++ b/arch/arm64/configs/bcm2712_defconfig
-@@ -703,6 +703,7 @@ CONFIG_TOUCHSCREEN_EXC3000=m
- CONFIG_TOUCHSCREEN_GOODIX=m
- CONFIG_TOUCHSCREEN_ILI210X=m
- CONFIG_TOUCHSCREEN_ILITEK=m
-+CONFIG_TOUCHSCREEN_ILITEK_V3=m
- CONFIG_TOUCHSCREEN_EDT_FT5X06=m
- CONFIG_TOUCHSCREEN_RASPBERRYPI_FW=m
- CONFIG_TOUCHSCREEN_USB_COMPOSITE=m
-@@ -1072,6 +1073,7 @@ CONFIG_DRM=m
- CONFIG_DRM_LOAD_EDID_FIRMWARE=y
- CONFIG_DRM_UDL=m
- CONFIG_DRM_PANEL_LVDS=m
-+CONFIG_DRM_PANEL_ILITEK_IL79600A=m
- CONFIG_DRM_PANEL_ILITEK_ILI9806E=m
- CONFIG_DRM_PANEL_ILITEK_ILI9806E_SPI=m
- CONFIG_DRM_PANEL_ILITEK_ILI9881C=m
---
-2.54.0
-
3 files changed, 142 insertions(+)
create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-dsi-ili79600-10-1inch-overlay.dts
-diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile
-index 56c93053f597..398c8d65de19 100644
--- a/arch/arm/boot/dts/overlays/Makefile
+++ b/arch/arm/boot/dts/overlays/Makefile
@@ -338,6 +338,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
vc4-kms-dsi-ili9881-5inch.dtbo \
vc4-kms-dsi-ili9881-7inch.dtbo \
vc4-kms-dsi-lt070me05000.dtbo \
-diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
-index b673ddf74565..a52af8dd6182 100644
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
-@@ -5731,6 +5731,21 @@ Params: clock-frequency Display clock frequency (Hz)
+@@ -5731,6 +5731,21 @@ Params: clock-frequency Display
Only supported on Pi5 and CM
Name: vc4-kms-dsi-ili9881-5inch
Info: Enable the Raspberry Pi 5" ILI9881 based touchscreen panel.
Requires vc4-kms-v3d to be loaded.
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dsi-ili79600-10-1inch-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dsi-ili79600-10-1inch-overlay.dts
-new file mode 100644
-index 000000000000..7aec9e59fcb8
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vc4-kms-dsi-ili79600-10-1inch-overlay.dts
@@ -0,0 +1,126 @@
+ <&display_reg>, "regulator-name=display_reg_0";
+ };
+};
---
-2.54.0
-
drivers/regulator/rpi-panel-v2-regulator.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
-diff --git a/drivers/regulator/rpi-panel-v2-regulator.c b/drivers/regulator/rpi-panel-v2-regulator.c
-index 30b78aa75ee3..f9446dd92ea6 100644
--- a/drivers/regulator/rpi-panel-v2-regulator.c
+++ b/drivers/regulator/rpi-panel-v2-regulator.c
-@@ -48,7 +48,10 @@ static int rpi_panel_v2_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
+@@ -48,7 +48,10 @@ static int rpi_panel_v2_pwm_apply(struct
return regmap_write(regmap, REG_PWM, 0);
duty = pwm_get_relative_duty_cycle(state, PWM_BL_MASK);
}
static const struct pwm_ops rpi_panel_v2_pwm_ops = {
---
-2.54.0
-
arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4s.dts | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
-diff --git a/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4s.dts b/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4s.dts
-index badf2a2fc3e9..07627625396a 100644
--- a/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4s.dts
+++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4s.dts
-@@ -74,7 +74,19 @@ &gpio {
+@@ -74,7 +74,19 @@
"GPIO42",
"GPIO43",
"GPIO44",
};
&hdmi0 {
---
-2.54.0
-
arch/arm/boot/dts/overlays/README | 4 ++++
2 files changed, 13 insertions(+)
-diff --git a/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4s.dts b/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4s.dts
-index 07627625396a..47a5f5ee140c 100644
--- a/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4s.dts
+++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4s.dts
-@@ -255,6 +255,13 @@ audio_pins: audio_pins {
+@@ -255,6 +255,13 @@
brcm,pins = <>;
brcm,function = <>;
};
};
/* Permanently disable HDMI1 */
-@@ -301,5 +308,7 @@ __overrides__ {
+@@ -301,5 +308,7 @@ i2c_csi_dsi0: &i2c0 {
act_led_gpio = <&led_act>,"gpios:4";
act_led_activelow = <&led_act>,"gpios:8";
act_led_trigger = <&led_act>,"linux,default-trigger";
+ enable_eeprom = <&enable_eeprom_hog>,"status";
};
};
-diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
-index a52af8dd6182..4e950ddb0a07 100644
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
@@ -236,6 +236,10 @@ Params:
eth_downshift_after Set the number of auto-negotiation failures
after which the 1000Mbps modes are disabled.
Legal values are 2, 3, 4, 5 and 0, where
---
-2.54.0
-
.../boot/dts/overlays/uart4-pi5-overlay.dts | 7 ++
6 files changed, 105 insertions(+)
-diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
-index 4e950ddb0a07..18e0a02b3c52 100644
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
@@ -5377,6 +5377,20 @@ Name: uart0-pi5
Name: uart5
-diff --git a/arch/arm/boot/dts/overlays/uart0-pi5-overlay.dts b/arch/arm/boot/dts/overlays/uart0-pi5-overlay.dts
-index 3cc9843b812d..1e378478b6c0 100755
--- a/arch/arm/boot/dts/overlays/uart0-pi5-overlay.dts
+++ b/arch/arm/boot/dts/overlays/uart0-pi5-overlay.dts
-@@ -9,10 +9,17 @@ fragment@0 {
+@@ -9,10 +9,17 @@
frag0: __overlay__ {
status = "okay";
pinctrl-0 = <&uart0_pins>;
+ rs485_rts_off_delay = <&frag0>,"rs485-rts-delay:4";
};
};
-diff --git a/arch/arm/boot/dts/overlays/uart1-pi5-overlay.dts b/arch/arm/boot/dts/overlays/uart1-pi5-overlay.dts
-index 739f5a941ffa..0a26181b6e78 100755
--- a/arch/arm/boot/dts/overlays/uart1-pi5-overlay.dts
+++ b/arch/arm/boot/dts/overlays/uart1-pi5-overlay.dts
-@@ -9,10 +9,17 @@ fragment@0 {
+@@ -9,10 +9,17 @@
frag0: __overlay__ {
status = "okay";
pinctrl-0 = <&uart1_pins>;
+ rs485_rts_off_delay = <&frag0>,"rs485-rts-delay:4";
};
};
-diff --git a/arch/arm/boot/dts/overlays/uart2-pi5-overlay.dts b/arch/arm/boot/dts/overlays/uart2-pi5-overlay.dts
-index 1df956425d3a..009bad568e0f 100755
--- a/arch/arm/boot/dts/overlays/uart2-pi5-overlay.dts
+++ b/arch/arm/boot/dts/overlays/uart2-pi5-overlay.dts
-@@ -9,10 +9,17 @@ fragment@0 {
+@@ -9,10 +9,17 @@
frag0: __overlay__ {
status = "okay";
pinctrl-0 = <&uart2_pins>;
+ rs485_rts_off_delay = <&frag0>,"rs485-rts-delay:4";
};
};
-diff --git a/arch/arm/boot/dts/overlays/uart3-pi5-overlay.dts b/arch/arm/boot/dts/overlays/uart3-pi5-overlay.dts
-index d8ef51b403dd..4eec772e7811 100755
--- a/arch/arm/boot/dts/overlays/uart3-pi5-overlay.dts
+++ b/arch/arm/boot/dts/overlays/uart3-pi5-overlay.dts
-@@ -9,10 +9,17 @@ fragment@0 {
+@@ -9,10 +9,17 @@
frag0: __overlay__ {
status = "okay";
pinctrl-0 = <&uart3_pins>;
+ rs485_rts_off_delay = <&frag0>,"rs485-rts-delay:4";
};
};
-diff --git a/arch/arm/boot/dts/overlays/uart4-pi5-overlay.dts b/arch/arm/boot/dts/overlays/uart4-pi5-overlay.dts
-index 7ce5be8cc95c..792d61beb398 100755
--- a/arch/arm/boot/dts/overlays/uart4-pi5-overlay.dts
+++ b/arch/arm/boot/dts/overlays/uart4-pi5-overlay.dts
-@@ -9,10 +9,17 @@ fragment@0 {
+@@ -9,10 +9,17 @@
frag0: __overlay__ {
status = "okay";
pinctrl-0 = <&uart4_pins>;
+ rs485_rts_off_delay = <&frag0>,"rs485-rts-delay:4";
};
};
---
-2.54.0
-
arch/arm/boot/dts/overlays/pcf857x-overlay.dts | 9 +++++++++
2 files changed, 18 insertions(+)
-diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
-index 18e0a02b3c52..4c133251080a 100644
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
-@@ -3860,10 +3860,19 @@ Params: addr I2C address of expander. Default
+@@ -3860,10 +3860,19 @@ Params: addr I2C addr
depends on model selected.
i2c-bus Supports all the standard I2C bus selection
parameters - see "dtoverlay -h i2c-bus"
Name: pcie-32bit-dma
-diff --git a/arch/arm/boot/dts/overlays/pcf857x-overlay.dts b/arch/arm/boot/dts/overlays/pcf857x-overlay.dts
-index 6b81d32c3818..7016ba207fdb 100644
--- a/arch/arm/boot/dts/overlays/pcf857x-overlay.dts
+++ b/arch/arm/boot/dts/overlays/pcf857x-overlay.dts
-@@ -25,10 +25,19 @@ pcf857x: pcf857x@0 {
+@@ -25,10 +25,19 @@
};
__overrides__ {
addr = <&pcf857x>,"reg:0";
};
};
---
-2.54.0
-
arch/arm/boot/dts/overlays/README | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
-index 4c133251080a..7dd0e6b4bc4f 100644
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
@@ -234,7 +234,7 @@ Params:
enable_eeprom Set to "on" to enable the onboard bootloader
EEPROM by driving GPIO 57 low
---
-2.54.0
-
.../arm/boot/dts/overlays/mcp2515-overlay.dts | 61 ++++++++++++++++++-
2 files changed, 62 insertions(+), 5 deletions(-)
-diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
-index 7dd0e6b4bc4f..1badc8ba6c44 100644
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
-@@ -3399,9 +3399,9 @@ Params: s08-spi<n>-<m>-present 4-bit integer, bitmap indicating MCP23S08
+@@ -3399,9 +3399,9 @@ Params: s08-spi<n>-<m>-present 4-bit in
Name: mcp2515
Load: dtoverlay=mcp2515,<param>=<val>
Params: spi<n>-<m> Configure device at spi<n>, cs<m>
(boolean, required)
-diff --git a/arch/arm/boot/dts/overlays/mcp2515-overlay.dts b/arch/arm/boot/dts/overlays/mcp2515-overlay.dts
-index cda1fb0b1199..36b5c4688871 100644
--- a/arch/arm/boot/dts/overlays/mcp2515-overlay.dts
+++ b/arch/arm/boot/dts/overlays/mcp2515-overlay.dts
-@@ -67,6 +67,34 @@ __dormant__ {
+@@ -67,6 +67,34 @@
};
fragment@8 {
target = <&gpio>;
__overlay__ {
mcp2515_pins: mcp2515_pins {
-@@ -76,7 +104,7 @@ mcp2515_pins: mcp2515_pins {
+@@ -76,7 +104,7 @@
};
};
target-path = "/clocks";
__overlay__ {
clk_mcp2515_osc: mcp2515-osc {
-@@ -87,7 +115,7 @@ clk_mcp2515_osc: mcp2515-osc {
+@@ -87,7 +115,7 @@
};
};
target = <&spi0>;
__overlay__ {
status = "okay";
-@@ -118,6 +146,7 @@ __overrides__ {
+@@ -118,6 +146,7 @@
<&mcp2515>, "reg:0=1",
<&mcp2515_pins>, "name=mcp2515_spi0_1_pins",
<&clk_mcp2515_osc>, "name=mcp2515-spi0-1-osc";
spi1-0 = <0>, "+2",
<&mcp2515_frag>, "target:0=", <&spi1>,
<&mcp2515>, "reg:0=0",
-@@ -133,6 +162,7 @@ __overrides__ {
+@@ -133,6 +162,7 @@
<&mcp2515>, "reg:0=2",
<&mcp2515_pins>, "name=mcp2515_spi1_2_pins",
<&clk_mcp2515_osc>, "name=mcp2515-spi1-2-osc";
spi2-0 = <0>, "+5",
<&mcp2515_frag>, "target:0=", <&spi2>,
<&mcp2515>, "reg:0=0",
-@@ -148,6 +178,33 @@ __overrides__ {
+@@ -148,6 +178,33 @@
<&mcp2515>, "reg:0=2",
<&mcp2515_pins>, "name=mcp2515_spi2_2_pins",
<&clk_mcp2515_osc>, "name=mcp2515-spi2-2-osc";
oscillator = <&clk_mcp2515_osc>, "clock-frequency:0";
speed = <&mcp2515>, "spi-max-frequency:0";
interrupt = <&mcp2515_pins>, "brcm,pins:0",
---
-2.54.0
-
arch/arm/boot/dts/overlays/README | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
-diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
-index 1badc8ba6c44..89fd5d39b165 100644
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
-@@ -2620,6 +2620,9 @@ Params: addr Set the address for the AD799X, ADS7828,
+@@ -2620,6 +2620,9 @@ Params: addr Set the
scd4x Select the Sensirion SCD40/41 CO2 sensors.
sht3x Select the Sensirion SHT3x temperature and
humidity sensors. Valid addresses 0x44-0x45,
default 0x44
-@@ -2637,8 +2640,6 @@ Params: addr Set the address for the AD799X, ADS7828,
+@@ -2637,8 +2640,6 @@ Params: addr Set the
sps30 Select the Sensirion SPS30 particulate matter
sensor. Fixed address 0x69.
tcs3472 Select the AMS TAOS TCS3472 family of RGBW light
sensors.
---
-2.54.0
-
.../boot/dts/overlays/i2c-sensor-common.dtsi | 18 +++++++++++++++++-
2 files changed, 21 insertions(+), 2 deletions(-)
-diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
-index 89fd5d39b165..afcfff32b6e0 100644
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
-@@ -2444,7 +2444,8 @@ Params: addr Set the address for the AD799X, ADS7828,
+@@ -2444,7 +2444,8 @@ Params: addr Set the
BME280, BME680, BMP280, BMP380, BMP58x, CCS811,
DS1621, HDC100X, HDC3020, JC42, LM75, MCP980x,
MPU6050, MPU9250, MS5637, MS5803, MS5805,
i2c-bus Supports all the standard I2C bus selection
parameters - see "dtoverlay -h i2c-bus"
-@@ -2640,6 +2641,8 @@ Params: addr Set the address for the AD799X, ADS7828,
+@@ -2640,6 +2641,8 @@ Params: addr Set the
sps30 Select the Sensirion SPS30 particulate matter
sensor. Fixed address 0x69.
tcs3472 Select the AMS TAOS TCS3472 family of RGBW light
sensors.
-diff --git a/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi b/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi
-index 04802f6dca1e..08f3fa5f8b97 100755
--- a/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi
+++ b/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi
-@@ -878,6 +878,21 @@ ad799x: ad799x@20 {
+@@ -878,6 +878,21 @@
};
};
fragment@98 {
target-path = "/";
__dormant__ {
-@@ -967,6 +982,7 @@ __overrides__ {
+@@ -967,6 +982,7 @@
ad7997 = <0>,"+56", <&ad799x>,"compatible=adi,ad7997";
ad7998 = <0>,"+56", <&ad799x>,"compatible=adi,ad7998";
ad7999 = <0>,"+56", <&ad799x>,"compatible=adi,ad7999", <&ad799x>,"reg:0=0x29";
addr = <&bme280>,"reg:0", <&bmp280>,"reg:0", <&tmp102>,"reg:0",
<&lm75>,"reg:0", <&hdc100x>,"reg:0", <&sht3x>,"reg:0",
-@@ -982,7 +998,7 @@ __overrides__ {
+@@ -982,7 +998,7 @@
<&ads7828>,"reg:0", <&ads7830>,"reg:0",
<&adxl355>,"reg:0", <&bmp58x>,"reg:0",
<&veml6030>,"reg:0", <&tmp117>,"reg:0",
int_pin = <&int_pins>, "brcm,pins:0",
<&int_pins>, "reg:0",
<&max30102>, "interrupts:0",
---
-2.54.0
-
.../arm/boot/dts/overlays/i2c-sensor-common.dtsi | 16 ++++++++++++++++
2 files changed, 19 insertions(+)
-diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
-index afcfff32b6e0..f01783f58b53 100644
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
-@@ -2632,6 +2632,9 @@ Params: addr Set the address for the AD799X, ADS7828,
+@@ -2632,6 +2632,9 @@ Params: addr Set the
humidity sensors. Valid addresses 0x44-0x45,
default 0x44
shtc3 Select the Sensirion SHTC3 temperature and
humidity sensors.
-diff --git a/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi b/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi
-index 08f3fa5f8b97..7aea55f042f8 100755
--- a/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi
+++ b/arch/arm/boot/dts/overlays/i2c-sensor-common.dtsi
-@@ -893,6 +893,21 @@ sts3x: sts3x@4a {
+@@ -893,6 +893,21 @@
};
};
fragment@98 {
target-path = "/";
__dormant__ {
-@@ -983,6 +998,7 @@ __overrides__ {
+@@ -983,6 +998,7 @@
ad7998 = <0>,"+56", <&ad799x>,"compatible=adi,ad7998";
ad7999 = <0>,"+56", <&ad799x>,"compatible=adi,ad7999", <&ad799x>,"reg:0=0x29";
sts3x = <0>,"+57";
addr = <&bme280>,"reg:0", <&bmp280>,"reg:0", <&tmp102>,"reg:0",
<&lm75>,"reg:0", <&hdc100x>,"reg:0", <&sht3x>,"reg:0",
---
-2.54.0
-
drivers/clk/bcm/clk-raspberrypi.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/clk/bcm/clk-raspberrypi.c b/drivers/clk/bcm/clk-raspberrypi.c
-index dcc3ae5fb916..d51821f462a7 100644
--- a/drivers/clk/bcm/clk-raspberrypi.c
+++ b/drivers/clk/bcm/clk-raspberrypi.c
-@@ -151,7 +151,7 @@ raspberrypi_clk_variants[RPI_FIRMWARE_NUM_CLK_ID] = {
+@@ -151,7 +151,7 @@ raspberrypi_clk_variants[RPI_FIRMWARE_NU
[RPI_FIRMWARE_ISP_CLK_ID] = {
.export = true,
.minimize = true,
},
[RPI_FIRMWARE_PIXEL_BVB_CLK_ID] = {
.export = true,
---
-2.54.0
-
drivers/gpu/drm/v3d/v3d_submit.c | 80 ++------------------------------
4 files changed, 3 insertions(+), 116 deletions(-)
-diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
-index feb9eda3c526..e4417847c488 100644
--- a/drivers/gpu/drm/v3d/v3d_drv.c
+++ b/drivers/gpu/drm/v3d/v3d_drv.c
@@ -26,8 +26,6 @@
#include <uapi/drm/v3d_drm.h>
#include "v3d_drv.h"
-@@ -333,8 +331,6 @@ map_regs(struct v3d_dev *v3d, void __iomem **regs, const char *name)
+@@ -341,8 +339,6 @@ map_regs(struct v3d_dev *v3d, void __iom
static int v3d_platform_drm_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
struct drm_device *drm;
struct v3d_dev *v3d;
enum v3d_gen gen;
-@@ -422,31 +418,6 @@ static int v3d_platform_drm_probe(struct platform_device *pdev)
+@@ -430,31 +426,6 @@ static int v3d_platform_drm_probe(struct
}
}
if (v3d->ver < V3D_GEN_41) {
ret = map_regs(v3d, &v3d->gca_regs, "gca");
if (ret)
-@@ -476,8 +447,6 @@ static int v3d_platform_drm_probe(struct platform_device *pdev)
+@@ -484,8 +455,6 @@ static int v3d_platform_drm_probe(struct
ret = v3d_sysfs_init(dev);
if (ret)
goto drm_unregister;
return 0;
-diff --git a/drivers/gpu/drm/v3d/v3d_drv.h b/drivers/gpu/drm/v3d/v3d_drv.h
-index 4ebb3dcd7ab4..40f9a09b0e17 100644
--- a/drivers/gpu/drm/v3d/v3d_drv.h
+++ b/drivers/gpu/drm/v3d/v3d_drv.h
@@ -134,11 +134,6 @@ struct v3d_dev {
struct reset_control *reset;
-@@ -645,4 +640,3 @@ int v3d_perfmon_set_global_ioctl(struct drm_device *dev, void *data,
+@@ -645,4 +640,3 @@ int v3d_perfmon_set_global_ioctl(struct
/* v3d_sysfs.c */
int v3d_sysfs_init(struct device *dev);
void v3d_sysfs_destroy(struct device *dev);
-void v3d_submit_init(struct drm_device *dev);
-diff --git a/drivers/gpu/drm/v3d/v3d_gem.c b/drivers/gpu/drm/v3d/v3d_gem.c
-index 62fcd8c9cbc4..1945986a20f6 100644
--- a/drivers/gpu/drm/v3d/v3d_gem.c
+++ b/drivers/gpu/drm/v3d/v3d_gem.c
-@@ -291,8 +291,6 @@ v3d_gem_init(struct drm_device *dev)
+@@ -299,8 +299,6 @@ v3d_gem_init(struct drm_device *dev)
if (ret)
return ret;
/* Note: We don't allocate address 0. Various bits of HW
* treat 0 as special, such as the occlusion query counters
* where 0 means "disabled".
-diff --git a/drivers/gpu/drm/v3d/v3d_submit.c b/drivers/gpu/drm/v3d/v3d_submit.c
-index e6ca93125666..f3652e90683c 100644
--- a/drivers/gpu/drm/v3d/v3d_submit.c
+++ b/drivers/gpu/drm/v3d/v3d_submit.c
@@ -5,52 +5,11 @@
int i;
if (job->bo) {
-@@ -141,31 +99,12 @@ v3d_job_free_common(struct v3d_job *job,
+@@ -141,9 +99,6 @@ v3d_job_free_common(struct v3d_job *job,
dma_fence_put(job->irq_fence);
dma_fence_put(job->done_fence);
if (job->perfmon)
v3d_perfmon_put(job->perfmon);
- kfree(job);
+@@ -151,22 +106,6 @@ v3d_job_free_common(struct v3d_job *job,
}
--static void
+ static void
-v3d_job_free(struct kref *ref)
-{
- struct v3d_job *job = container_of(ref, struct v3d_job, refcount);
- v3d_job_free_common(job, false);
-}
-
- static void
+-static void
v3d_render_job_free(struct kref *ref)
{
-@@ -260,8 +199,6 @@ v3d_job_init(struct v3d_dev *v3d, struct drm_file *file_priv,
+ struct v3d_render_job *job = container_of(ref, struct v3d_render_job,
+@@ -278,8 +217,6 @@ v3d_job_init(struct v3d_dev *v3d, struct
if (ret && ret != -ENOENT)
goto fail_deps;
}
kref_init(&job->refcount);
-@@ -1379,7 +1316,7 @@ v3d_submit_cpu_ioctl(struct drm_device *dev, void *data,
+@@ -1402,7 +1339,7 @@ v3d_submit_cpu_ioctl(struct drm_device *
trace_v3d_submit_cpu_ioctl(&v3d->drm, cpu_job->job_type);
ret = v3d_job_init(v3d, file_priv, &cpu_job->base,
if (ret) {
v3d_job_deallocate((void *)&cpu_job);
goto fail;
-@@ -1467,14 +1404,3 @@ v3d_submit_cpu_ioctl(struct drm_device *dev, void *data,
+@@ -1488,14 +1425,3 @@ fail:
return ret;
}
- v3d_clock_up_put(v3d);
-}
\ No newline at end of file
---
-2.54.0
-
drivers/clk/bcm/clk-raspberrypi.c | 61 ++++++++++++++++++-------------
1 file changed, 35 insertions(+), 26 deletions(-)
-diff --git a/drivers/clk/bcm/clk-raspberrypi.c b/drivers/clk/bcm/clk-raspberrypi.c
-index d51821f462a7..150bbdf99a83 100644
--- a/drivers/clk/bcm/clk-raspberrypi.c
+++ b/drivers/clk/bcm/clk-raspberrypi.c
-@@ -66,7 +66,8 @@ const struct raspberrypi_clk_data *clk_hw_to_data(const struct clk_hw *hw)
+@@ -66,7 +66,8 @@ const struct raspberrypi_clk_data *clk_h
struct raspberrypi_clk_variant {
bool export;
char *clkdev;
bool minimize;
bool maximize;
u32 flags;
-@@ -290,16 +291,22 @@ static int raspberrypi_fw_dumb_determine_rate(struct clk_hw *hw,
+@@ -290,16 +291,22 @@ static int raspberrypi_fw_dumb_determine
static int raspberrypi_fw_prepare(struct clk_hw *hw)
{
const struct raspberrypi_clk_data *data = clk_hw_to_data(hw);
return ret;
}
-@@ -307,10 +314,19 @@ static int raspberrypi_fw_prepare(struct clk_hw *hw)
+@@ -307,10 +314,19 @@ static int raspberrypi_fw_prepare(struct
static void raspberrypi_fw_unprepare(struct clk_hw *hw)
{
const struct raspberrypi_clk_data *data = clk_hw_to_data(hw);
ret = raspberrypi_clock_property(rpi->firmware, data,
RPI_FIRMWARE_SET_CLOCK_STATE, &state);
if (ret)
-@@ -335,7 +351,7 @@ static struct clk_hw *raspberrypi_clk_register(struct raspberrypi_clk *rpi,
+@@ -335,7 +351,7 @@ static struct clk_hw *raspberrypi_clk_re
{
struct raspberrypi_clk_data *data;
struct clk_init_data init = {};
int ret;
data = devm_kzalloc(rpi->dev, sizeof(*data), GFP_KERNEL);
-@@ -355,18 +371,20 @@ static struct clk_hw *raspberrypi_clk_register(struct raspberrypi_clk *rpi,
+@@ -355,18 +371,20 @@ static struct clk_hw *raspberrypi_clk_re
data->hw.init = &init;
if (ret) {
dev_err(rpi->dev, "Failed to get clock %d max freq: %d\n",
id, ret);
-@@ -377,7 +395,7 @@ static struct clk_hw *raspberrypi_clk_register(struct raspberrypi_clk *rpi,
+@@ -377,7 +395,7 @@ static struct clk_hw *raspberrypi_clk_re
if (ret)
return ERR_PTR(ret);
if (variant->clkdev) {
ret = devm_clk_hw_register_clkdev(rpi->dev, &data->hw,
-@@ -388,20 +406,11 @@ static struct clk_hw *raspberrypi_clk_register(struct raspberrypi_clk *rpi,
+@@ -388,20 +406,11 @@ static struct clk_hw *raspberrypi_clk_re
}
}
}
return &data->hw;
---
-2.54.0
-
drivers/clk/bcm/clk-raspberrypi.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-diff --git a/drivers/clk/bcm/clk-raspberrypi.c b/drivers/clk/bcm/clk-raspberrypi.c
-index 150bbdf99a83..90103d9498d0 100644
--- a/drivers/clk/bcm/clk-raspberrypi.c
+++ b/drivers/clk/bcm/clk-raspberrypi.c
-@@ -142,12 +142,12 @@ raspberrypi_clk_variants[RPI_FIRMWARE_NUM_CLK_ID] = {
+@@ -142,12 +142,12 @@ raspberrypi_clk_variants[RPI_FIRMWARE_NU
[RPI_FIRMWARE_PIXEL_CLK_ID] = {
.export = true,
.minimize = true,
},
[RPI_FIRMWARE_ISP_CLK_ID] = {
.export = true,
---
-2.54.0
-
drivers/gpu/drm/v3d/v3d_drv.c | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
-diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
-index e4417847c488..b95cba4b900b 100644
--- a/drivers/gpu/drm/v3d/v3d_drv.c
+++ b/drivers/gpu/drm/v3d/v3d_drv.c
-@@ -402,18 +402,17 @@ static int v3d_platform_drm_probe(struct platform_device *pdev)
+@@ -410,18 +410,17 @@ static int v3d_platform_drm_probe(struct
v3d_perfmon_init(v3d);
goto clk_disable;
}
}
---
-2.54.0
-
drivers/gpu/drm/v3d/v3d_irq.c | 15 +++---
4 files changed, 61 insertions(+), 65 deletions(-)
-diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
-index b95cba4b900b..3e156481c4c1 100644
--- a/drivers/gpu/drm/v3d/v3d_drv.c
+++ b/drivers/gpu/drm/v3d/v3d_drv.c
-@@ -364,14 +364,50 @@ static int v3d_platform_drm_probe(struct platform_device *pdev)
+@@ -372,14 +372,50 @@ static int v3d_platform_drm_probe(struct
return ret;
}
}
v3d_idle_sms(v3d);
-@@ -400,44 +436,9 @@ static int v3d_platform_drm_probe(struct platform_device *pdev)
+@@ -408,44 +444,9 @@ static int v3d_platform_drm_probe(struct
ident3 = V3D_READ(V3D_HUB_IDENT3);
v3d->rev = V3D_GET_FIELD(ident3, V3D_HUB_IDENT3_IPREV);
ret = drm_dev_register(drm, 0);
if (ret)
-@@ -453,12 +454,13 @@ static int v3d_platform_drm_probe(struct platform_device *pdev)
+@@ -461,12 +462,13 @@ drm_unregister:
drm_dev_unregister(drm);
irq_disable:
v3d_irq_disable(v3d);
return ret;
}
-@@ -472,14 +474,13 @@ static void v3d_platform_drm_remove(struct platform_device *pdev)
+@@ -480,14 +482,13 @@ static void v3d_platform_drm_remove(stru
drm_dev_unregister(drm);
}
static struct platform_driver v3d_platform_driver = {
-diff --git a/drivers/gpu/drm/v3d/v3d_drv.h b/drivers/gpu/drm/v3d/v3d_drv.h
-index 40f9a09b0e17..5a318f13cb6e 100644
--- a/drivers/gpu/drm/v3d/v3d_drv.h
+++ b/drivers/gpu/drm/v3d/v3d_drv.h
-@@ -570,6 +570,7 @@ extern const struct dma_fence_ops v3d_fence_ops;
+@@ -570,6 +570,7 @@ extern const struct dma_fence_ops v3d_fe
struct dma_fence *v3d_fence_create(struct v3d_dev *v3d, enum v3d_queue q);
/* v3d_gem.c */
int v3d_gem_init(struct drm_device *dev);
void v3d_gem_destroy(struct drm_device *dev);
void v3d_reset_sms(struct v3d_dev *v3d);
-diff --git a/drivers/gpu/drm/v3d/v3d_gem.c b/drivers/gpu/drm/v3d/v3d_gem.c
-index 1945986a20f6..82fda76a2daf 100644
--- a/drivers/gpu/drm/v3d/v3d_gem.c
+++ b/drivers/gpu/drm/v3d/v3d_gem.c
-@@ -36,13 +36,6 @@ v3d_init_core(struct v3d_dev *v3d, int core)
+@@ -36,13 +36,6 @@ v3d_init_core(struct v3d_dev *v3d, int c
V3D_CORE_WRITE(core, V3D_CTL_L2TFLEND, ~0);
}
static void
v3d_idle_axi(struct v3d_dev *v3d, int core)
{
-@@ -259,6 +252,13 @@ v3d_invalidate_caches(struct v3d_dev *v3d)
+@@ -267,6 +260,13 @@ v3d_invalidate_caches(struct v3d_dev *v3
v3d_invalidate_slices(v3d, 0);
}
int
v3d_gem_init(struct drm_device *dev)
{
-@@ -307,9 +307,6 @@ v3d_gem_init(struct drm_device *dev)
+@@ -315,9 +315,6 @@ v3d_gem_init(struct drm_device *dev)
return -ENOMEM;
}
v3d_gemfs_init(v3d);
ret = v3d_sched_init(v3d);
-diff --git a/drivers/gpu/drm/v3d/v3d_irq.c b/drivers/gpu/drm/v3d/v3d_irq.c
-index 2a7988adcd04..d9fd912e86bb 100644
--- a/drivers/gpu/drm/v3d/v3d_irq.c
+++ b/drivers/gpu/drm/v3d/v3d_irq.c
@@ -251,17 +251,10 @@ v3d_hub_irq(int irq, void *arg)
/* Enable our set of interrupts, masking out any others. */
for (core = 0; core < v3d->cores; core++) {
V3D_CORE_WRITE(core, V3D_CTL_INT_MSK_SET, ~V3D_CORE_IRQS(v3d->ver));
---
-2.54.0
-
8 files changed, 198 insertions(+), 59 deletions(-)
create mode 100644 drivers/gpu/drm/v3d/v3d_power.c
-diff --git a/drivers/gpu/drm/v3d/Makefile b/drivers/gpu/drm/v3d/Makefile
-index fcf710926057..c2d6d4b95343 100644
--- a/drivers/gpu/drm/v3d/Makefile
+++ b/drivers/gpu/drm/v3d/Makefile
@@ -14,7 +14,8 @@ v3d-y := \
v3d-$(CONFIG_DEBUG_FS) += v3d_debugfs.o
-diff --git a/drivers/gpu/drm/v3d/v3d_debugfs.c b/drivers/gpu/drm/v3d/v3d_debugfs.c
-index 7e789e181af0..d4cd4360ad21 100644
--- a/drivers/gpu/drm/v3d/v3d_debugfs.c
+++ b/drivers/gpu/drm/v3d/v3d_debugfs.c
-@@ -96,7 +96,11 @@ static int v3d_v3d_debugfs_regs(struct seq_file *m, void *unused)
+@@ -96,7 +96,11 @@ static int v3d_v3d_debugfs_regs(struct s
struct drm_debugfs_entry *entry = m->private;
struct drm_device *dev = entry->dev;
struct v3d_dev *v3d = to_v3d_dev(dev);
for (i = 0; i < ARRAY_SIZE(v3d_hub_reg_defs); i++) {
const struct v3d_reg_def *def = &v3d_hub_reg_defs[i];
-@@ -138,6 +142,8 @@ static int v3d_v3d_debugfs_regs(struct seq_file *m, void *unused)
+@@ -138,6 +142,8 @@ static int v3d_v3d_debugfs_regs(struct s
}
}
return 0;
}
-@@ -147,7 +153,11 @@ static int v3d_v3d_debugfs_ident(struct seq_file *m, void *unused)
+@@ -147,7 +153,11 @@ static int v3d_v3d_debugfs_ident(struct
struct drm_device *dev = entry->dev;
struct v3d_dev *v3d = to_v3d_dev(dev);
u32 ident0, ident1, ident2, ident3, cores;
ident0 = V3D_READ(V3D_HUB_IDENT0);
ident1 = V3D_READ(V3D_HUB_IDENT1);
-@@ -206,6 +216,8 @@ static int v3d_v3d_debugfs_ident(struct seq_file *m, void *unused)
+@@ -206,6 +216,8 @@ static int v3d_v3d_debugfs_ident(struct
}
}
return 0;
}
-@@ -233,6 +245,11 @@ static int v3d_measure_clock(struct seq_file *m, void *unused)
+@@ -233,6 +245,11 @@ static int v3d_measure_clock(struct seq_
uint32_t cycles;
int core = 0;
int measure_ms = 1000;
if (v3d->ver >= V3D_GEN_41) {
int cycle_count_reg = V3D_PCTR_CYCLE_COUNT(v3d->ver);
-@@ -252,6 +269,8 @@ static int v3d_measure_clock(struct seq_file *m, void *unused)
+@@ -252,6 +269,8 @@ static int v3d_measure_clock(struct seq_
msleep(measure_ms);
cycles = V3D_CORE_READ(core, V3D_PCTR_0_PCTR0);
seq_printf(m, "cycles: %d (%d.%d Mhz)\n",
cycles,
cycles / (measure_ms * 1000),
-diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
-index 3e156481c4c1..960d4de7ae01 100644
--- a/drivers/gpu/drm/v3d/v3d_drv.c
+++ b/drivers/gpu/drm/v3d/v3d_drv.c
-@@ -63,6 +63,7 @@ static int v3d_get_param_ioctl(struct drm_device *dev, void *data,
+@@ -63,6 +63,7 @@ static int v3d_get_param_ioctl(struct dr
[DRM_V3D_PARAM_V3D_CORE0_IDENT1] = V3D_CTL_IDENT1,
[DRM_V3D_PARAM_V3D_CORE0_IDENT2] = V3D_CTL_IDENT2,
};
if (args->pad != 0)
return -EINVAL;
-@@ -79,12 +80,19 @@ static int v3d_get_param_ioctl(struct drm_device *dev, void *data,
+@@ -79,12 +80,19 @@ static int v3d_get_param_ioctl(struct dr
if (args->value != 0)
return -EINVAL;
return 0;
}
-@@ -291,36 +299,6 @@ static const struct of_device_id v3d_of_match[] = {
+@@ -299,36 +307,6 @@ static const struct of_device_id v3d_of_
};
MODULE_DEVICE_TABLE(of, v3d_of_match);
static int
map_regs(struct v3d_dev *v3d, void __iomem **regs, const char *name)
{
-@@ -404,19 +382,26 @@ static int v3d_platform_drm_probe(struct platform_device *pdev)
+@@ -412,19 +390,26 @@ static int v3d_platform_drm_probe(struct
if (ret)
goto dma_free;
dma_set_max_seg_size(&pdev->dev, UINT_MAX);
-@@ -437,26 +422,27 @@ static int v3d_platform_drm_probe(struct platform_device *pdev)
+@@ -445,26 +430,27 @@ static int v3d_platform_drm_probe(struct
v3d->rev = V3D_GET_FIELD(ident3, V3D_HUB_IDENT3_IPREV);
v3d_init_hw_state(v3d);
gem_destroy:
v3d_gem_destroy(drm);
dma_free:
-@@ -474,21 +460,27 @@ static void v3d_platform_drm_remove(struct platform_device *pdev)
+@@ -482,21 +468,27 @@ static void v3d_platform_drm_remove(stru
drm_dev_unregister(drm);
},
};
-diff --git a/drivers/gpu/drm/v3d/v3d_drv.h b/drivers/gpu/drm/v3d/v3d_drv.h
-index 5a318f13cb6e..a1da44ec6567 100644
--- a/drivers/gpu/drm/v3d/v3d_drv.h
+++ b/drivers/gpu/drm/v3d/v3d_drv.h
@@ -3,6 +3,7 @@
};
struct v3d_bin_job {
-@@ -608,6 +611,20 @@ int v3d_mmu_set_page_table(struct v3d_dev *v3d);
+@@ -608,6 +611,20 @@ int v3d_mmu_set_page_table(struct v3d_de
void v3d_mmu_insert_ptes(struct v3d_bo *bo);
void v3d_mmu_remove_ptes(struct v3d_bo *bo);
/* v3d_sched.c */
void v3d_timestamp_query_info_free(struct v3d_timestamp_query_info *query_info,
unsigned int count);
-diff --git a/drivers/gpu/drm/v3d/v3d_mmu.c b/drivers/gpu/drm/v3d/v3d_mmu.c
-index a25d25a8ae61..01f0b7c7b864 100644
--- a/drivers/gpu/drm/v3d/v3d_mmu.c
+++ b/drivers/gpu/drm/v3d/v3d_mmu.c
-@@ -37,7 +37,11 @@ static bool v3d_mmu_is_aligned(u32 page, u32 page_address, size_t alignment)
+@@ -37,7 +37,11 @@ static bool v3d_mmu_is_aligned(u32 page,
int v3d_mmu_flush_all(struct v3d_dev *v3d)
{
V3D_WRITE(V3D_MMUC_CONTROL, V3D_MMUC_CONTROL_FLUSH |
V3D_MMUC_CONTROL_ENABLE);
-@@ -46,7 +50,7 @@ int v3d_mmu_flush_all(struct v3d_dev *v3d)
+@@ -46,7 +50,7 @@ int v3d_mmu_flush_all(struct v3d_dev *v3
V3D_MMUC_CONTROL_FLUSHING), 100);
if (ret) {
dev_err(v3d->drm.dev, "MMUC flush wait idle failed\n");
}
V3D_WRITE(V3D_MMU_CTL, V3D_READ(V3D_MMU_CTL) |
-@@ -57,6 +61,8 @@ int v3d_mmu_flush_all(struct v3d_dev *v3d)
+@@ -57,6 +61,8 @@ int v3d_mmu_flush_all(struct v3d_dev *v3
if (ret)
dev_err(v3d->drm.dev, "MMU TLB clear wait idle failed\n");
return ret;
}
-diff --git a/drivers/gpu/drm/v3d/v3d_perfmon.c b/drivers/gpu/drm/v3d/v3d_perfmon.c
-index 9a3fe5255874..b0873fe20347 100644
--- a/drivers/gpu/drm/v3d/v3d_perfmon.c
+++ b/drivers/gpu/drm/v3d/v3d_perfmon.c
-@@ -235,6 +235,9 @@ void v3d_perfmon_start(struct v3d_dev *v3d, struct v3d_perfmon *perfmon)
+@@ -235,6 +235,9 @@ void v3d_perfmon_start(struct v3d_dev *v
if (WARN_ON_ONCE(!perfmon || v3d->active_perfmon))
return;
ncounters = perfmon->ncounters;
mask = GENMASK(ncounters - 1, 0);
-@@ -260,6 +263,8 @@ void v3d_perfmon_start(struct v3d_dev *v3d, struct v3d_perfmon *perfmon)
+@@ -260,6 +263,8 @@ void v3d_perfmon_start(struct v3d_dev *v
V3D_CORE_WRITE(0, V3D_PCTR_0_OVERFLOW, mask);
v3d->active_perfmon = perfmon;
}
void v3d_perfmon_stop(struct v3d_dev *v3d, struct v3d_perfmon *perfmon,
-@@ -271,10 +276,11 @@ void v3d_perfmon_stop(struct v3d_dev *v3d, struct v3d_perfmon *perfmon,
+@@ -271,10 +276,11 @@ void v3d_perfmon_stop(struct v3d_dev *v3
return;
mutex_lock(&perfmon->lock);
if (capture)
for (i = 0; i < perfmon->ncounters; i++)
-@@ -282,7 +288,11 @@ void v3d_perfmon_stop(struct v3d_dev *v3d, struct v3d_perfmon *perfmon,
+@@ -282,7 +288,11 @@ void v3d_perfmon_stop(struct v3d_dev *v3
V3D_CORE_WRITE(0, V3D_V4_PCTR_0_EN, 0);
mutex_unlock(&perfmon->lock);
}
-diff --git a/drivers/gpu/drm/v3d/v3d_power.c b/drivers/gpu/drm/v3d/v3d_power.c
-new file mode 100644
-index 000000000000..f3d30ef5de4e
--- /dev/null
+++ b/drivers/gpu/drm/v3d/v3d_power.c
@@ -0,0 +1,83 @@
+ clk_disable_unprepare(v3d->clk);
+ return ret;
+}
-diff --git a/drivers/gpu/drm/v3d/v3d_submit.c b/drivers/gpu/drm/v3d/v3d_submit.c
-index f3652e90683c..614cb6e3cf81 100644
--- a/drivers/gpu/drm/v3d/v3d_submit.c
+++ b/drivers/gpu/drm/v3d/v3d_submit.c
@@ -102,6 +102,9 @@ v3d_job_free(struct kref *ref)
kfree(job);
}
-@@ -183,13 +186,13 @@ v3d_job_init(struct v3d_dev *v3d, struct drm_file *file_priv,
+@@ -201,13 +204,13 @@ v3d_job_init(struct v3d_dev *v3d, struct
if (copy_from_user(&in, handle++, sizeof(in))) {
ret = -EFAULT;
DRM_DEBUG("Failed to copy wait dep handle.\n");
}
}
} else {
-@@ -197,14 +200,22 @@ v3d_job_init(struct v3d_dev *v3d, struct drm_file *file_priv,
+@@ -215,14 +218,22 @@ v3d_job_init(struct v3d_dev *v3d, struct
// TODO: Investigate why this was filtered out for the IOCTL.
if (ret && ret != -ENOENT)
drm_sched_job_cleanup(&job->base);
return ret;
}
---
-2.54.0
-
drivers/net/ethernet/cadence/macb.h | 12 ++++++++++++
1 file changed, 12 insertions(+)
-diff --git a/drivers/net/ethernet/cadence/macb.h b/drivers/net/ethernet/cadence/macb.h
-index 2c814a2d06b7..abf5778beb0c 100644
--- a/drivers/net/ethernet/cadence/macb.h
+++ b/drivers/net/ethernet/cadence/macb.h
@@ -176,6 +176,10 @@
};
/* Describes the name and offset of an individual statistic register, as
-@@ -1165,6 +1173,10 @@ static const struct gem_statistic gem_statistics[] = {
+@@ -1165,6 +1173,10 @@ static const struct gem_statistic gem_st
GEM_BIT(NDS_RXERR)),
GEM_STAT_TITLE_BITS(RXUDPCCNT, "rx_udp_checksum_errors",
GEM_BIT(NDS_RXERR)),
};
#define GEM_STATS_LEN ARRAY_SIZE(gem_statistics)
---
-2.54.0
-
drivers/net/ethernet/cadence/macb_main.c | 124 +++++++++++++++++++++++
2 files changed, 132 insertions(+)
-diff --git a/drivers/net/ethernet/cadence/macb.h b/drivers/net/ethernet/cadence/macb.h
-index abf5778beb0c..8c344f70849f 100644
--- a/drivers/net/ethernet/cadence/macb.h
+++ b/drivers/net/ethernet/cadence/macb.h
@@ -315,6 +315,8 @@
int rx_bd_rd_prefetch;
int tx_bd_rd_prefetch;
-diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
-index 3cf1df8634ed..abcaf121b06b 100644
--- a/drivers/net/ethernet/cadence/macb_main.c
+++ b/drivers/net/ethernet/cadence/macb_main.c
@@ -10,6 +10,7 @@
#include <linux/dma-mapping.h>
#include <linux/etherdevice.h>
#include <linux/firmware/xlnx-zynqmp.h>
-@@ -644,6 +645,107 @@ static const struct phylink_pcs_ops macb_phylink_pcs_ops = {
+@@ -644,6 +645,107 @@ static const struct phylink_pcs_ops macb
.pcs_config = macb_pcs_config,
};
static void macb_mac_config(struct phylink_config *config, unsigned int mode,
const struct phylink_link_state *state)
{
-@@ -899,6 +1001,8 @@ static const struct phylink_mac_ops macb_phylink_ops = {
+@@ -899,6 +1001,8 @@ static const struct phylink_mac_ops macb
.mac_config = macb_mac_config,
.mac_link_down = macb_mac_link_down,
.mac_link_up = macb_mac_link_up,
};
static bool macb_phy_handle_exists(struct device_node *dn)
-@@ -994,6 +1098,18 @@ static int macb_mii_probe(struct net_device *dev)
+@@ -994,6 +1098,18 @@ static int macb_mii_probe(struct net_dev
}
}
bp->phylink = phylink_create(&bp->phylink_config, bp->pdev->dev.fwnode,
bp->phy_interface, &macb_phylink_ops);
if (IS_ERR(bp->phylink)) {
-@@ -1395,6 +1511,9 @@ static int macb_tx_complete(struct macb_queue *queue, int budget)
+@@ -1395,6 +1511,9 @@ static int macb_tx_complete(struct macb_
netif_wake_subqueue(bp->dev, queue_index);
spin_unlock_irqrestore(&queue->tx_ptr_lock, flags);
return packets;
}
-@@ -2504,6 +2623,7 @@ static netdev_tx_t macb_start_xmit(struct sk_buff *skb, struct net_device *dev)
+@@ -2504,6 +2623,7 @@ static netdev_tx_t macb_start_xmit(struc
skb->len);
spin_lock(&bp->lock);
/* TSTART write might get dropped, so make the IRQ retrigger a buffer read */
if (macb_readl(bp, TSR) & MACB_BIT(TGO))
-@@ -3206,6 +3326,8 @@ static int macb_close(struct net_device *dev)
+@@ -3206,6 +3326,8 @@ static int macb_close(struct net_device
netdev_tx_reset_queue(netdev_get_tx_queue(dev, q));
}
phylink_stop(bp->phylink);
phylink_disconnect_phy(bp->phylink);
-@@ -5847,6 +5969,7 @@ static int macb_probe(struct platform_device *pdev)
+@@ -5847,6 +5969,7 @@ static int macb_probe(struct platform_de
}
INIT_WORK(&bp->hresp_err_bh_work, macb_hresp_error_task);
netdev_info(dev, "Cadence %s rev 0x%08x at 0x%08lx irq %d (%pM)\n",
macb_is_gem(bp) ? "GEM" : "MACB", macb_readl(bp, MID),
-@@ -5891,6 +6014,7 @@ static void macb_remove(struct platform_device *pdev)
+@@ -5891,6 +6014,7 @@ static void macb_remove(struct platform_
mdiobus_free(bp->mii_bus);
device_set_wakeup_enable(&bp->pdev->dev, 0);
cancel_work_sync(&bp->hresp_err_bh_work);
pm_runtime_disable(&pdev->dev);
pm_runtime_dont_use_autosuspend(&pdev->dev);
---
-2.54.0
-
drivers/net/ethernet/cadence/macb_main.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
-diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
-index abcaf121b06b..a5f11ee5e5f1 100644
--- a/drivers/net/ethernet/cadence/macb_main.c
+++ b/drivers/net/ethernet/cadence/macb_main.c
-@@ -4287,6 +4287,20 @@ static const struct ethtool_ops macb_ethtool_ops = {
+@@ -4287,6 +4287,20 @@ static const struct ethtool_ops macb_eth
.set_ringparam = macb_set_ringparam,
};
static const struct ethtool_ops gem_ethtool_ops = {
.supported_coalesce_params = ETHTOOL_COALESCE_RX_USECS |
ETHTOOL_COALESCE_TX_USECS,
-@@ -4311,6 +4325,8 @@ static const struct ethtool_ops gem_ethtool_ops = {
+@@ -4311,6 +4325,8 @@ static const struct ethtool_ops gem_etht
.set_ringparam = macb_set_ringparam,
.get_rxnfc = gem_get_rxnfc,
.set_rxnfc = gem_set_rxnfc,
};
static int macb_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
---
-2.54.0
-
drivers/net/ethernet/cadence/macb_main.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
-diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
-index a5f11ee5e5f1..606e1151ef71 100644
--- a/drivers/net/ethernet/cadence/macb_main.c
+++ b/drivers/net/ethernet/cadence/macb_main.c
-@@ -5727,7 +5727,8 @@ static const struct macb_config versal_config = {
+@@ -5727,7 +5727,8 @@ static const struct macb_config versal_c
static const struct macb_config raspberrypi_rp1_config = {
.caps = MACB_CAPS_GIGABIT_MODE_AVAILABLE | MACB_CAPS_CLK_HW_CHG |
MACB_CAPS_JUMBO |
.dma_burst_length = 16,
.clk_init = macb_clk_init,
.init = macb_init,
---
-2.54.0
-
drivers/net/phy/broadcom.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
-diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c
-index 428ff5a01b08..f2d8f4336589 100644
--- a/drivers/net/phy/broadcom.c
+++ b/drivers/net/phy/broadcom.c
-@@ -498,14 +498,17 @@ static int bcm54xx_config_init(struct phy_device *phydev)
+@@ -498,14 +498,17 @@ static int bcm54xx_config_init(struct ph
err = bcm54xx_config_clock_delay(phydev);
break;
case PHY_ID_BCM54210E:
case PHY_ID_BCM54616S:
err = bcm54616s_config_init(phydev);
break;
---
-2.54.0
-
include/linux/brcmphy.h | 3 +++
2 files changed, 12 insertions(+)
-diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c
-index f2d8f4336589..a4d8c4d6f19f 100644
--- a/drivers/net/phy/broadcom.c
+++ b/drivers/net/phy/broadcom.c
-@@ -490,6 +490,15 @@ static int bcm54xx_config_init(struct phy_device *phydev)
+@@ -490,6 +490,15 @@ static int bcm54xx_config_init(struct ph
if (of_property_read_bool(np, "brcm,powerdown-enable"))
phydev->dev_flags |= PHY_BRCM_AUTO_PWRDWN_ENABLE;
bcm54xx_adjust_rxrefclk(phydev);
switch (phydev->drv->phy_id & PHY_ID_MATCH_MODEL_MASK) {
-diff --git a/include/linux/brcmphy.h b/include/linux/brcmphy.h
-index 97e6a716740b..5f9034cc92b8 100644
--- a/include/linux/brcmphy.h
+++ b/include/linux/brcmphy.h
@@ -267,6 +267,9 @@
#define BCM54XX_TOP_MISC_LED_CTL (MII_BCM54XX_EXP_SEL_TOP + 0x0C)
#define BCM54XX_LED4_SEL_INTR BIT(1)
---
-2.54.0
-
arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5.dtsi | 2 --
2 files changed, 4 deletions(-)
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts
-index a9c9eb978045..c8908f6b3143 100644
--- a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts
-@@ -176,8 +176,6 @@ &rp1_eth {
+@@ -176,8 +176,6 @@ rp1_target: &pcie2 {
phy1: ethernet-phy@1 {
reg = <0x1>;
brcm,powerdown-enable;
};
};
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5.dtsi b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5.dtsi
-index 7558978cbf92..dfad85a666a8 100644
--- a/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5.dtsi
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-rpi-cm5.dtsi
-@@ -167,8 +167,6 @@ phy1: ethernet-phy@0 {
+@@ -167,8 +167,6 @@ rp1_target: &pcie2 {
brcm,powerdown-enable;
interrupt-parent = <&rp1_gpio>;
interrupts = <37 IRQ_TYPE_LEVEL_LOW>;
};
};
---
-2.54.0
-
arch/arm64/boot/dts/broadcom/bcm2712-rpi.dtsi | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
-diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
-index f01783f58b53..7ab189972291 100644
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
@@ -234,7 +234,7 @@ Params:
enable_eeprom Set to "on" to enable the onboard bootloader
EEPROM by driving GPIO 57 low
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-rpi.dtsi b/arch/arm64/boot/dts/broadcom/bcm2712-rpi.dtsi
-index e6a12bd2b941..2fa5eb16ae08 100644
--- a/arch/arm64/boot/dts/broadcom/bcm2712-rpi.dtsi
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-rpi.dtsi
-@@ -189,6 +189,8 @@ __overrides__ {
+@@ -189,6 +189,8 @@ watchdog: &pm {};
drm_fb2_rp1_dsi0 = <&aliases>, "drm-fb2=",&dsi0;
drm_fb2_rp1_dsi1 = <&aliases>, "drm-fb2=",&dsi1;
drm_fb2_vc4 = <&aliases>, "drm-fb2=",&vc4;
eth_led0 = <&phy1>,"led-modes:0";
eth_led1 = <&phy1>,"led-modes:4";
eth_max_speed = <&phy1>,"max-speed:0";
---
-2.54.0
-
arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi | 1 -
3 files changed, 4 insertions(+), 1 deletion(-)
-diff --git a/arch/arm/boot/dts/broadcom/bcm2711-rpi-4-b.dts b/arch/arm/boot/dts/broadcom/bcm2711-rpi-4-b.dts
-index e376a5bf8913..f38204056152 100644
--- a/arch/arm/boot/dts/broadcom/bcm2711-rpi-4-b.dts
+++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi-4-b.dts
-@@ -504,6 +504,8 @@ __overrides__ {
+@@ -504,6 +504,8 @@ i2c_csi_dsi0: &i2c0 {
pwr_led_activelow = <&led_pwr>,"gpios:8";
pwr_led_trigger = <&led_pwr>,"linux,default-trigger";
eth_led0 = <&phy1>,"led-modes:0";
eth_led1 = <&phy1>,"led-modes:4";
eth_max_speed = <&phy1>,"max-speed:0";
-diff --git a/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4.dts b/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4.dts
-index 14cdca845300..22624338e74f 100644
--- a/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4.dts
+++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4.dts
-@@ -474,6 +474,8 @@ __overrides__ {
+@@ -474,6 +474,8 @@ i2c_csi_dsi0: &i2c0 {
pwr_led_activelow = <&led_pwr>,"gpios:8";
pwr_led_trigger = <&led_pwr>,"linux,default-trigger";
eth_led0 = <&phy1>,"led-modes:0";
eth_led1 = <&phy1>,"led-modes:4";
eth_max_speed = <&phy1>,"max-speed:0";
-diff --git a/arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi b/arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi
-index 8cc1ef5bf6d0..74cad51d3330 100644
--- a/arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi
+++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi
-@@ -8,7 +8,6 @@ chosen {
+@@ -8,7 +8,6 @@
__overrides__ {
arm_freq;
hdmi = <&hdmi0>,"status",
<&hdmi1>,"status";
nvmem_cust_rw = <&nvmem_cust>,"rw?";
---
-2.54.0
-
drivers/input/touchscreen/goodix.c | 8 ++++++++
1 file changed, 8 insertions(+)
-diff --git a/drivers/input/touchscreen/goodix.c b/drivers/input/touchscreen/goodix.c
-index f8798d11ec03..e8b4b02c0a60 100644
--- a/drivers/input/touchscreen/goodix.c
+++ b/drivers/input/touchscreen/goodix.c
-@@ -299,6 +299,14 @@ static int goodix_ts_read_input_report(struct goodix_ts_data *ts, u8 *data)
+@@ -299,6 +299,14 @@ static int goodix_ts_read_input_report(s
return 0;
}
usleep_range(1000, 2000); /* Poll every 1 - 2 ms */
} while (time_before(jiffies, max_timeout));
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_plane.c | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
-diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
-index 40398a5c27fd..2c4826ede21b 100644
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -63,6 +63,30 @@ static const struct hvs_format {
- .pixel_order = HVS_PIXEL_ORDER_ARGB,
+@@ -64,6 +64,30 @@ static const struct hvs_format {
.pixel_order_hvs5 = HVS_PIXEL_ORDER_ABGR,
},
-+ {
+ {
+ .drm = DRM_FORMAT_RGBX8888,
+ .hvs = HVS_PIXEL_FORMAT_RGBA8888,
+ .pixel_order = HVS_PIXEL_ORDER_RGBA,
+ .pixel_order = HVS_PIXEL_ORDER_BGRA,
+ .pixel_order_hvs5 = HVS_PIXEL_ORDER_BGRA,
+ },
- {
++ {
.drm = DRM_FORMAT_RGB565,
.hvs = HVS_PIXEL_FORMAT_RGB565,
---
-2.54.0
-
+ .pixel_order = HVS_PIXEL_ORDER_XRGB,
drivers/clk/bcm/clk-bcm2835.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
-diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c
-index 9ba61a9d9890..4654d84dcf04 100644
--- a/drivers/clk/bcm/clk-bcm2835.c
+++ b/drivers/clk/bcm/clk-bcm2835.c
-@@ -1262,6 +1262,8 @@ static unsigned long bcm2835_clock_choose_div_and_prate(struct clk_hw *hw,
+@@ -1262,6 +1262,8 @@ static unsigned long bcm2835_clock_choos
static int bcm2835_clock_determine_rate(struct clk_hw *hw,
struct clk_rate_request *req)
{
struct clk_hw *parent, *best_parent = NULL;
bool current_parent_is_pllc;
unsigned long rate, best_rate = 0;
-@@ -1281,13 +1283,17 @@ static int bcm2835_clock_determine_rate(struct clk_hw *hw,
+@@ -1281,13 +1283,17 @@ static int bcm2835_clock_determine_rate(
continue;
/*
continue;
rate = bcm2835_clock_choose_div_and_prate(hw, i, req->rate,
---
-2.54.0
-
drivers/clk/bcm/clk-raspberrypi.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-diff --git a/drivers/clk/bcm/clk-raspberrypi.c b/drivers/clk/bcm/clk-raspberrypi.c
-index 90103d9498d0..150bbdf99a83 100644
--- a/drivers/clk/bcm/clk-raspberrypi.c
+++ b/drivers/clk/bcm/clk-raspberrypi.c
-@@ -142,12 +142,12 @@ raspberrypi_clk_variants[RPI_FIRMWARE_NUM_CLK_ID] = {
+@@ -142,12 +142,12 @@ raspberrypi_clk_variants[RPI_FIRMWARE_NU
[RPI_FIRMWARE_PIXEL_CLK_ID] = {
.export = true,
.minimize = true,
},
[RPI_FIRMWARE_ISP_CLK_ID] = {
.export = true,
---
-2.54.0
-
drivers/clk/bcm/clk-raspberrypi.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/clk/bcm/clk-raspberrypi.c b/drivers/clk/bcm/clk-raspberrypi.c
-index 150bbdf99a83..6ce37af33a7a 100644
--- a/drivers/clk/bcm/clk-raspberrypi.c
+++ b/drivers/clk/bcm/clk-raspberrypi.c
-@@ -152,7 +152,7 @@ raspberrypi_clk_variants[RPI_FIRMWARE_NUM_CLK_ID] = {
+@@ -152,7 +152,7 @@ raspberrypi_clk_variants[RPI_FIRMWARE_NU
[RPI_FIRMWARE_ISP_CLK_ID] = {
.export = true,
.minimize = true,
},
[RPI_FIRMWARE_PIXEL_BVB_CLK_ID] = {
.export = true,
---
-2.54.0
-
arch/arm64/boot/dts/broadcom/bcm2712-ds.dtsi | 2 +-
3 files changed, 7 insertions(+), 7 deletions(-)
-diff --git a/arch/arm/boot/dts/broadcom/bcm270x.dtsi b/arch/arm/boot/dts/broadcom/bcm270x.dtsi
-index ccc203e3131f..a3cb24cdcdb3 100644
--- a/arch/arm/boot/dts/broadcom/bcm270x.dtsi
+++ b/arch/arm/boot/dts/broadcom/bcm270x.dtsi
-@@ -239,7 +239,7 @@ dpi_16bit_cpadhi_gpio2: dpi_16bit_cpadhi_gpio2 {
+@@ -239,7 +239,7 @@
};
&uart0 {
/* Enable CTS bug workaround */
cts-event-workaround;
};
-diff --git a/arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi b/arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi
-index 74cad51d3330..652062b5ba37 100644
--- a/arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi
+++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi
-@@ -509,29 +509,29 @@ &spi6 {
+@@ -509,29 +509,29 @@ i2c_vc: &i2c0 {};
};
&uart0 {
pinctrl-0 = <&uart5_pins>;
pinctrl-names = "default";
};
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-ds.dtsi b/arch/arm64/boot/dts/broadcom/bcm2712-ds.dtsi
-index a7fc6b37165b..32a40daba68a 100644
--- a/arch/arm64/boot/dts/broadcom/bcm2712-ds.dtsi
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-ds.dtsi
-@@ -411,7 +411,7 @@ &gicv2 {
+@@ -411,7 +411,7 @@
};
&uart10 {
};
&aon_intr {
---
-2.54.0
-
drivers/clk/bcm/clk-raspberrypi.c | 1 +
1 file changed, 1 insertion(+)
-diff --git a/drivers/clk/bcm/clk-raspberrypi.c b/drivers/clk/bcm/clk-raspberrypi.c
-index 6ce37af33a7a..b19b55129f4f 100644
--- a/drivers/clk/bcm/clk-raspberrypi.c
+++ b/drivers/clk/bcm/clk-raspberrypi.c
-@@ -162,6 +162,7 @@ raspberrypi_clk_variants[RPI_FIRMWARE_NUM_CLK_ID] = {
+@@ -162,6 +162,7 @@ raspberrypi_clk_variants[RPI_FIRMWARE_NU
[RPI_FIRMWARE_VEC_CLK_ID] = {
.export = true,
.minimize = true,
},
[RPI_FIRMWARE_DISP_CLK_ID] = {
.export = true,
---
-2.54.0
-
include/uapi/linux/const.h | 18 ++++++++++++++++++
2 files changed, 19 insertions(+), 17 deletions(-)
-diff --git a/include/linux/math.h b/include/linux/math.h
-index 0198c92cbe3e..24bb868f971c 100644
--- a/include/linux/math.h
+++ b/include/linux/math.h
@@ -89,23 +89,7 @@
/*
* Same as above but for u64 dividends. divisor must be a 32-bit
* number.
-diff --git a/include/uapi/linux/const.h b/include/uapi/linux/const.h
-index b8f629ef135f..565f309b9df8 100644
--- a/include/uapi/linux/const.h
+++ b/include/uapi/linux/const.h
@@ -50,4 +50,22 @@
+})
+
#endif /* _UAPI_LINUX_CONST_H */
---
-2.54.0
-
include/uapi/drm/drm_mode.h | 80 +++++++++++++++++++++++
9 files changed, 147 insertions(+), 5 deletions(-)
-diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
-index 4e9a84db479b..cef19351a411 100644
--- a/drivers/gpu/drm/drm_atomic.c
+++ b/drivers/gpu/drm/drm_atomic.c
-@@ -453,6 +453,7 @@ static void drm_atomic_crtc_print_state(struct drm_printer *p,
+@@ -453,6 +453,7 @@ static void drm_atomic_crtc_print_state(
drm_printf(p, "\tconnector_mask=%x\n", state->connector_mask);
drm_printf(p, "\tencoder_mask=%x\n", state->encoder_mask);
drm_printf(p, "\tmode: " DRM_MODE_FMT "\n", DRM_MODE_ARG(&state->mode));
if (crtc->funcs->atomic_print_state)
crtc->funcs->atomic_print_state(p, state);
-diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c
-index a6414a2c488e..e62cca50875d 100644
--- a/drivers/gpu/drm/drm_atomic_state_helper.c
+++ b/drivers/gpu/drm/drm_atomic_state_helper.c
-@@ -75,6 +75,7 @@ __drm_atomic_helper_crtc_state_reset(struct drm_crtc_state *crtc_state,
+@@ -75,6 +75,7 @@ __drm_atomic_helper_crtc_state_reset(str
struct drm_crtc *crtc)
{
crtc_state->crtc = crtc;
}
EXPORT_SYMBOL(__drm_atomic_helper_crtc_state_reset);
-diff --git a/drivers/gpu/drm/drm_atomic_uapi.c b/drivers/gpu/drm/drm_atomic_uapi.c
-index d1556527cca3..adc75d821d1d 100644
--- a/drivers/gpu/drm/drm_atomic_uapi.c
+++ b/drivers/gpu/drm/drm_atomic_uapi.c
-@@ -407,6 +407,8 @@ static int drm_atomic_crtc_set_property(struct drm_crtc *crtc,
+@@ -407,6 +407,8 @@ static int drm_atomic_crtc_set_property(
&replaced);
state->color_mgmt_changed |= replaced;
return ret;
} else if (property == config->prop_out_fence_ptr) {
s32 __user *fence_ptr = u64_to_user_ptr(val);
-@@ -452,6 +454,8 @@ drm_atomic_crtc_get_property(struct drm_crtc *crtc,
+@@ -452,6 +454,8 @@ drm_atomic_crtc_get_property(struct drm_
*val = (state->ctm) ? state->ctm->base.id : 0;
else if (property == config->gamma_lut_property)
*val = (state->gamma_lut) ? state->gamma_lut->base.id : 0;
else if (property == config->prop_out_fence_ptr)
*val = 0;
else if (property == crtc->scaling_filter_property)
-diff --git a/drivers/gpu/drm/drm_blend.c b/drivers/gpu/drm/drm_blend.c
-index e802c9f0331a..ad8e52c07939 100644
--- a/drivers/gpu/drm/drm_blend.c
+++ b/drivers/gpu/drm/drm_blend.c
@@ -191,10 +191,6 @@
*/
/**
-@@ -654,3 +669,19 @@ int drm_plane_create_blend_mode_property(struct drm_plane *plane,
+@@ -654,3 +669,19 @@ int drm_plane_create_blend_mode_property
return 0;
}
EXPORT_SYMBOL(drm_plane_create_blend_mode_property);
+ DRM_ARGB64_PREP(0xffff, 0, 0, 0));
+}
+EXPORT_SYMBOL(drm_crtc_attach_background_color_property);
-diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c
-index cd0a81df3f33..3e67bc06931d 100644
--- a/drivers/gpu/drm/drm_mode_config.c
+++ b/drivers/gpu/drm/drm_mode_config.c
-@@ -375,6 +375,12 @@ static int drm_mode_create_standard_properties(struct drm_device *dev)
+@@ -375,6 +375,12 @@ static int drm_mode_create_standard_prop
return -ENOMEM;
dev->mode_config.gamma_lut_size_property = prop;
prop = drm_property_create(dev,
DRM_MODE_PROP_IMMUTABLE | DRM_MODE_PROP_BLOB,
"IN_FORMATS", 0);
-diff --git a/include/drm/drm_blend.h b/include/drm/drm_blend.h
-index a84c58f3f13c..87fbf64e6649 100644
--- a/include/drm/drm_blend.h
+++ b/include/drm/drm_blend.h
@@ -31,8 +31,9 @@
struct drm_plane;
struct drm_connector;
-@@ -59,6 +60,7 @@ int drm_atomic_normalize_zpos(struct drm_device *dev,
+@@ -59,6 +60,7 @@ int drm_atomic_normalize_zpos(struct drm
struct drm_atomic_state *state);
int drm_plane_create_blend_mode_property(struct drm_plane *plane,
unsigned int supported_modes);
int drm_connector_create_rotation_property(struct drm_connector *conn,
unsigned int rotation,
-diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
-index c85b9f6b94f1..ed7b1490a49f 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
-@@ -274,6 +274,18 @@ struct drm_crtc_state {
- */
+@@ -275,6 +275,18 @@ struct drm_crtc_state {
struct drm_property_blob *gamma_lut;
-+ /**
+ /**
+ * @background_color:
+ *
+ * RGB value representing the CRTC's background color. The background
+ */
+ u64 background_color;
+
- /**
++ /**
* @target_vblank:
*
-diff --git a/include/drm/drm_mode_config.h b/include/drm/drm_mode_config.h
-index 2e848b816218..ea422afec5c4 100644
+ * Target vertical blank period when a page flip
--- a/include/drm/drm_mode_config.h
+++ b/include/drm/drm_mode_config.h
@@ -814,6 +814,11 @@ struct drm_mode_config {
/**
* @suggested_x_property: Optional connector property with a hint for
-diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
-index 6a04b6107614..dc5a4049df1d 100644
--- a/include/uapi/drm/drm_mode.h
+++ b/include/uapi/drm/drm_mode.h
@@ -27,6 +27,9 @@
#if defined(__cplusplus)
}
#endif
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_regs.h | 6 ------
1 file changed, 6 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_regs.h b/drivers/gpu/drm/vc4/vc4_regs.h
-index 68d83d27c32a..2ce8a4f4a70c 100644
--- a/drivers/gpu/drm/vc4/vc4_regs.h
+++ b/drivers/gpu/drm/vc4/vc4_regs.h
-@@ -698,12 +698,6 @@
- #define SCALER6D_HISTBIN7 0x000000f0
- #define SCALER6D_HVS_ID 0x000000fc
+@@ -700,12 +700,6 @@
--#define SCALER6D_DISP0_CTRL0 0x00000100
--#define SCALER6D_DISP0_CTRL1 0x00000104
+ #define SCALER6D_DISP0_CTRL0 0x00000100
+ #define SCALER6D_DISP0_CTRL1 0x00000104
-#define SCALER6D_DISP0_BGND 0x00000108
-#define SCALER6D_DISP0_LPTRS 0x00000110
-#define SCALER6D_DISP0_COB 0x00000114
-#define SCALER6D_DISP0_STATUS 0x00000118
- #define SCALER6D_DISP0_CTRL0 0x00000100
- #define SCALER6D_DISP0_CTRL1 0x00000104
+-#define SCALER6D_DISP0_CTRL0 0x00000100
+-#define SCALER6D_DISP0_CTRL1 0x00000104
#define SCALER6D_DISP0_BGND0 0x00000108
---
-2.54.0
-
+ #define SCALER6D_DISP0_BGND1 0x0000010c
+ #define SCALER6D_DISP0_LPTRS 0x00000110
drivers/gpu/drm/vc4/vc4_regs.h | 34 ++++++++++++++++++++++++++++++---
3 files changed, 67 insertions(+), 5 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c
-index 5ce7ad53e184..64265651dbb2 100644
--- a/drivers/gpu/drm/vc4/vc4_crtc.c
+++ b/drivers/gpu/drm/vc4/vc4_crtc.c
@@ -38,6 +38,7 @@
#include <drm/drm_fb_dma_helper.h>
#include <drm/drm_framebuffer.h>
#include <drm/drm_drv.h>
-@@ -1434,6 +1435,8 @@ int __vc4_crtc_init(struct drm_device *drm,
+@@ -1434,6 +1435,8 @@ int __vc4_crtc_init(struct drm_device *d
if (ret)
return ret;
drm_crtc_helper_add(crtc, crtc_helper_funcs);
if (vc4->gen == VC4_GEN_4) {
-diff --git a/drivers/gpu/drm/vc4/vc4_hvs.c b/drivers/gpu/drm/vc4/vc4_hvs.c
-index 9f7cff04a6ef..4ae905855bb4 100644
--- a/drivers/gpu/drm/vc4/vc4_hvs.c
+++ b/drivers/gpu/drm/vc4/vc4_hvs.c
-@@ -1256,6 +1256,7 @@ void vc4_hvs_atomic_flush(struct drm_crtc *crtc,
+@@ -1256,6 +1256,7 @@ void vc4_hvs_atomic_flush(struct drm_crt
struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc);
struct vc4_crtc_state *vc4_state = to_vc4_crtc_state(crtc->state);
unsigned int channel = vc4_state->assigned_channel;
struct drm_plane *plane;
struct vc4_plane_state *vc4_plane_state;
bool debug_dump_regs = false;
-@@ -1320,16 +1321,46 @@ void vc4_hvs_atomic_flush(struct drm_crtc *crtc,
+@@ -1320,16 +1321,46 @@ void vc4_hvs_atomic_flush(struct drm_crt
WARN_ON_ONCE(dlist_next - dlist_start != vc4_state->mm->mm_node.size);
if (vc4->gen >= VC4_GEN_6_C) {
SCALER_DISPBKGND_FILL);
}
-diff --git a/drivers/gpu/drm/vc4/vc4_regs.h b/drivers/gpu/drm/vc4/vc4_regs.h
-index 2ce8a4f4a70c..c43874590468 100644
--- a/drivers/gpu/drm/vc4/vc4_regs.h
+++ b/drivers/gpu/drm/vc4/vc4_regs.h
@@ -402,6 +402,15 @@
#define SCALER6D_DISP0_LPTRS 0x00000110
#define SCALER6D_DISP0_COB 0x00000114
#define SCALER6D_DISP0_STATUS 0x00000118
---
-2.54.0
-
drivers/gpu/drm/v3d/v3d_drv.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
-index 960d4de7ae01..4a421e815148 100644
--- a/drivers/gpu/drm/v3d/v3d_drv.c
+++ b/drivers/gpu/drm/v3d/v3d_drv.c
-@@ -423,7 +423,7 @@ static int v3d_platform_drm_probe(struct platform_device *pdev)
+@@ -431,7 +431,7 @@ static int v3d_platform_drm_probe(struct
v3d_init_hw_state(v3d);
pm_runtime_use_autosuspend(dev);
ret = drm_dev_register(drm, 0);
---
-2.54.0
-
drivers/media/platform/raspberrypi/rp1_cfe/dphy.h | 2 ++
3 files changed, 19 insertions(+)
-diff --git a/drivers/media/platform/raspberrypi/rp1_cfe/cfe.c b/drivers/media/platform/raspberrypi/rp1_cfe/cfe.c
-index f18715a97f82..f4999391563f 100644
--- a/drivers/media/platform/raspberrypi/rp1_cfe/cfe.c
+++ b/drivers/media/platform/raspberrypi/rp1_cfe/cfe.c
-@@ -2206,12 +2206,18 @@ static int of_cfe_connect_subdevs(struct cfe_device *cfe)
+@@ -2206,12 +2206,18 @@ static int of_cfe_connect_subdevs(struct
return -EINVAL;
}
}
cfe->csi2.dphy.max_lanes = ep.bus.mipi_csi2.num_data_lanes;
-diff --git a/drivers/media/platform/raspberrypi/rp1_cfe/dphy.c b/drivers/media/platform/raspberrypi/rp1_cfe/dphy.c
-index 7eec3e77109e..f87d445f9361 100644
--- a/drivers/media/platform/raspberrypi/rp1_cfe/dphy.c
+++ b/drivers/media/platform/raspberrypi/rp1_cfe/dphy.c
@@ -34,6 +34,11 @@
static u32 dw_csi2_host_read(struct dphy_data *dphy, u32 offset)
{
-@@ -141,6 +146,12 @@ static void dphy_init(struct dphy_data *dphy)
+@@ -141,6 +146,12 @@ static void dphy_init(struct dphy_data *
dphy_set_hsfreqrange(dphy, dphy->dphy_rate);
usleep_range(5, 10);
dw_csi2_host_write(dphy, PHY_SHUTDOWNZ, 1);
usleep_range(5, 10);
-diff --git a/drivers/media/platform/raspberrypi/rp1_cfe/dphy.h b/drivers/media/platform/raspberrypi/rp1_cfe/dphy.h
-index 9d7a80b3f684..8acfd7c58e82 100644
--- a/drivers/media/platform/raspberrypi/rp1_cfe/dphy.h
+++ b/drivers/media/platform/raspberrypi/rp1_cfe/dphy.h
@@ -9,6 +9,7 @@
};
void dphy_probe(struct dphy_data *dphy);
---
-2.54.0
-
drivers/spi/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig
-index dceeded97cba..ab04f4bcf672 100644
--- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig
@@ -934,7 +934,7 @@ config SPI_RB4XX
help
Support for the Raspberry Pi RP2040 GPIO bridge.
---
-2.54.0
-
net/core/dev_ioctl.c | 9 +++++----
3 files changed, 13 insertions(+), 4 deletions(-)
-diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
-index 02da4a203ddd..b6fae9299b36 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
-@@ -476,6 +476,9 @@ int __phy_hwtstamp_get(struct phy_device *phydev,
+@@ -476,6 +476,9 @@ int __phy_hwtstamp_get(struct phy_device
if (!phydev)
return -ENODEV;
return -EOPNOTSUPP;
}
-diff --git a/include/linux/mii_timestamper.h b/include/linux/mii_timestamper.h
-index 995db62570f9..b6485f602eb9 100644
--- a/include/linux/mii_timestamper.h
+++ b/include/linux/mii_timestamper.h
@@ -29,6 +29,8 @@ struct phy_device;
void (*link_state)(struct mii_timestamper *mii_ts,
struct phy_device *phydev);
-diff --git a/net/core/dev_ioctl.c b/net/core/dev_ioctl.c
-index 8bb71a10dba0..65be262c6bb0 100644
--- a/net/core/dev_ioctl.c
+++ b/net/core/dev_ioctl.c
-@@ -249,10 +249,11 @@ int net_hwtstamp_validate(const struct kernel_hwtstamp_config *cfg)
+@@ -249,10 +249,11 @@ int net_hwtstamp_validate(const struct k
*
* Helper for calling the default hardware provider timestamping.
*
*/
int dev_get_hwtstamp_phylib(struct net_device *dev,
struct kernel_hwtstamp_config *cfg)
---
-2.54.0
-
drivers/net/phy/bcm-phy-ptp.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
-diff --git a/drivers/net/phy/bcm-phy-ptp.c b/drivers/net/phy/bcm-phy-ptp.c
-index fcb004fcba3d..bbaf8e4deedb 100644
--- a/drivers/net/phy/bcm-phy-ptp.c
+++ b/drivers/net/phy/bcm-phy-ptp.c
-@@ -780,6 +780,18 @@ static void bcm_ptp_txtstamp(struct mii_timestamper *mii_ts,
+@@ -780,6 +780,18 @@ out:
kfree_skb(skb);
}
static int bcm_ptp_hwtstamp(struct mii_timestamper *mii_ts,
struct kernel_hwtstamp_config *cfg,
struct netlink_ext_ack *extack)
-@@ -899,6 +911,7 @@ static void bcm_ptp_init(struct bcm_ptp_private *priv)
+@@ -899,6 +911,7 @@ static void bcm_ptp_init(struct bcm_ptp_
priv->mii_ts.rxtstamp = bcm_ptp_rxtstamp;
priv->mii_ts.txtstamp = bcm_ptp_txtstamp;
priv->mii_ts.hwtstamp = bcm_ptp_hwtstamp;
priv->mii_ts.ts_info = bcm_ptp_ts_info;
priv->phydev->mii_ts = &priv->mii_ts;
---
-2.54.0
-
drivers/usb/dwc2/hcd.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
-diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c
-index ea8711e2ef67..9b8d28f2eb4d 100644
--- a/drivers/usb/dwc2/hcd.c
+++ b/drivers/usb/dwc2/hcd.c
-@@ -685,7 +685,8 @@ static void dwc2_hc_init(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan)
+@@ -685,7 +685,8 @@ static void dwc2_hc_init(struct dwc2_hso
* Devices are none the wiser - the handshake tokens are the same.
* The fakery is undone in dwc2_hc_n_intr().
*/
chan->ep_type = USB_ENDPOINT_XFER_CONTROL;
hcchar |= chan->ep_type << HCCHAR_EPTYPE_SHIFT & HCCHAR_EPTYPE_MASK;
---
-2.54.0
-
drivers/net/ethernet/broadcom/genet/bcmmii.c | 2 --
1 file changed, 2 deletions(-)
-diff --git a/drivers/net/ethernet/broadcom/genet/bcmmii.c b/drivers/net/ethernet/broadcom/genet/bcmmii.c
-index fcf86e1e0147..034f9b359964 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmmii.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c
-@@ -312,8 +312,6 @@ int bcmgenet_mii_probe(struct net_device *dev)
+@@ -312,8 +312,6 @@ int bcmgenet_mii_probe(struct net_device
/* Communicate the integrated PHY revision */
if (priv->internal_phy)
phy_flags = priv->gphy_rev;
/* This is an ugly quirk but we have not been correctly interpreting
* the phy_interface values and we have done that across different
---
-2.54.0
-
arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4.dts | 1 +
2 files changed, 2 insertions(+)
-diff --git a/arch/arm/boot/dts/broadcom/bcm2711-rpi-4-b.dts b/arch/arm/boot/dts/broadcom/bcm2711-rpi-4-b.dts
-index f38204056152..7728da73a518 100644
--- a/arch/arm/boot/dts/broadcom/bcm2711-rpi-4-b.dts
+++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi-4-b.dts
-@@ -213,6 +213,7 @@ &genet_mdio {
+@@ -213,6 +213,7 @@
phy1: ethernet-phy@1 {
/* No PHY interrupt */
reg = <0x1>;
leds {
#address-cells = <1>;
-diff --git a/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4.dts b/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4.dts
-index 22624338e74f..233dfe8e3890 100644
--- a/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4.dts
+++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi-cm4.dts
-@@ -216,6 +216,7 @@ &genet_mdio {
+@@ -216,6 +216,7 @@
phy1: ethernet-phy@0 {
/* No PHY interrupt */
reg = <0x0>;
};
};
---
-2.54.0
-
drivers/net/ethernet/broadcom/genet/bcmgenet.c | 14 --------------
1 file changed, 14 deletions(-)
-diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
-index 94646b73e4d0..d095968730c5 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
-@@ -68,9 +68,6 @@ static void bcmgenet_set_rx_mode(struct net_device *dev);
+@@ -68,9 +68,6 @@ static void bcmgenet_set_rx_mode(struct
static bool skip_umac_reset = false;
module_param(skip_umac_reset, bool, 0444);
MODULE_PARM_DESC(skip_umac_reset, "Skip UMAC reset step");
static inline void bcmgenet_writel(u32 value, void __iomem *offset)
{
-@@ -3367,17 +3364,6 @@ static int bcmgenet_open(struct net_device *dev)
+@@ -3368,17 +3365,6 @@ static int bcmgenet_open(struct net_devi
bcmgenet_phy_pause_set(dev, priv->rx_pause, priv->tx_pause);
bcmgenet_netif_start(dev);
netif_tx_start_all_queues(dev);
---
-2.54.0
-
drivers/net/ethernet/broadcom/genet/bcmgenet.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
-index d095968730c5..226af052bf53 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
@@ -65,7 +65,7 @@
module_param(skip_umac_reset, bool, 0444);
MODULE_PARM_DESC(skip_umac_reset, "Skip UMAC reset step");
---
-2.54.0
-
drivers/net/ethernet/broadcom/genet/bcmgenet.c | 8 --------
1 file changed, 8 deletions(-)
-diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
-index 226af052bf53..3b8a062004b7 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
@@ -65,9 +65,6 @@
static inline void bcmgenet_writel(u32 value, void __iomem *offset)
{
-@@ -2562,11 +2559,6 @@ static void reset_umac(struct bcmgenet_priv *priv)
+@@ -2563,11 +2560,6 @@ static void reset_umac(struct bcmgenet_p
bcmgenet_rbuf_ctrl_set(priv, 0);
udelay(10);
/* issue soft reset and disable MAC while updating its registers */
spin_lock_bh(&priv->reg_lock);
bcmgenet_umac_writel(priv, CMD_SW_RESET, UMAC_CMD);
---
-2.54.0
-
include/linux/pio_rp1.h | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
-diff --git a/include/linux/pio_rp1.h b/include/linux/pio_rp1.h
-index f262fdd9c8f1..68083b83a201 100644
--- a/include/linux/pio_rp1.h
+++ b/include/linux/pio_rp1.h
@@ -42,6 +42,7 @@
#define GPIOS_MASK ((1 << RP1_PIO_GPIO_COUNT) - 1)
#define PICO_NO_HARDWARE 0
-@@ -280,7 +281,7 @@ static inline bool pio_can_add_program(struct rp1_pio_client *client,
+@@ -280,7 +281,7 @@ static inline bool pio_can_add_program(s
if (bad_params_if(client, program->length > PIO_INSTRUCTION_COUNT))
return false;
args.num_instrs = program->length;
memcpy(args.instrs, program->instructions, args.num_instrs * sizeof(args.instrs[0]));
-@@ -295,7 +296,7 @@ static inline bool pio_can_add_program_at_offset(struct rp1_pio_client *client,
+@@ -295,7 +296,7 @@ static inline bool pio_can_add_program_a
if (bad_params_if(client, program->length > PIO_INSTRUCTION_COUNT ||
offset >= PIO_INSTRUCTION_COUNT))
return false;
args.num_instrs = program->length;
memcpy(args.instrs, program->instructions, args.num_instrs * sizeof(args.instrs[0]));
-@@ -308,13 +309,13 @@ static inline uint pio_add_program(struct rp1_pio_client *client, const pio_prog
+@@ -308,13 +309,13 @@ static inline uint pio_add_program(struc
int offset;
if (bad_params_if(client, program->length > PIO_INSTRUCTION_COUNT))
}
static inline int pio_add_program_at_offset(struct rp1_pio_client *client,
-@@ -325,7 +326,7 @@ static inline int pio_add_program_at_offset(struct rp1_pio_client *client,
+@@ -325,7 +326,7 @@ static inline int pio_add_program_at_off
if (bad_params_if(client, program->length > PIO_INSTRUCTION_COUNT ||
offset >= PIO_INSTRUCTION_COUNT))
return -EINVAL;
args.num_instrs = program->length;
memcpy(args.instrs, program->instructions, args.num_instrs * sizeof(args.instrs[0]));
-@@ -337,7 +338,7 @@ static inline int pio_remove_program(struct rp1_pio_client *client, const pio_pr
+@@ -337,7 +338,7 @@ static inline int pio_remove_program(str
{
struct rp1_pio_remove_program_args args;
args.num_instrs = program->length;
return rp1_pio_remove_program(client, &args);
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_txp.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_txp.c b/drivers/gpu/drm/vc4/vc4_txp.c
-index fae31e56346d..ed719e09e818 100644
--- a/drivers/gpu/drm/vc4/vc4_txp.c
+++ b/drivers/gpu/drm/vc4/vc4_txp.c
-@@ -261,11 +261,11 @@ static int vc4_txp_connector_atomic_check(struct drm_connector *conn,
+@@ -261,11 +261,11 @@ static int vc4_txp_connector_atomic_chec
fb = conn_state->writeback_job->fb;
if ((conn_state->rotation == DRM_MODE_ROTATE_0 &&
DRM_DEBUG_KMS("Invalid framebuffer size %ux%u vs mode %ux%u\n",
fb->width, fb->height,
crtc_state->mode.hdisplay, crtc_state->mode.vdisplay);
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_txp.c | 18 +++++++++++++++++-
2 files changed, 18 insertions(+), 1 deletion(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h
-index 13c88b7a241b..b13817ec5a10 100644
--- a/drivers/gpu/drm/vc4/vc4_drv.h
+++ b/drivers/gpu/drm/vc4/vc4_drv.h
-@@ -1060,6 +1060,7 @@ extern struct platform_driver vc4_vec_driver;
+@@ -1060,6 +1060,7 @@ extern struct platform_driver vc4_vec_dr
/* vc4_txp.c */
extern struct platform_driver vc4_txp_driver;
/* vc4_irq.c */
void vc4_irq_enable(struct drm_device *dev);
-diff --git a/drivers/gpu/drm/vc4/vc4_txp.c b/drivers/gpu/drm/vc4/vc4_txp.c
-index ed719e09e818..c6f7d94f653a 100644
--- a/drivers/gpu/drm/vc4/vc4_txp.c
+++ b/drivers/gpu/drm/vc4/vc4_txp.c
-@@ -390,11 +390,27 @@ vc4_txp_connector_detect(struct drm_connector *connector, bool force)
+@@ -390,11 +390,27 @@ vc4_txp_connector_detect(struct drm_conn
return connector_status_connected;
}
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
};
---
-2.54.0
-
drivers/mfd/rp1.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
-diff --git a/drivers/mfd/rp1.c b/drivers/mfd/rp1.c
-index 9880cde51e43..b60486374d42 100644
--- a/drivers/mfd/rp1.c
+++ b/drivers/mfd/rp1.c
-@@ -145,8 +145,14 @@ static int rp1_irq_set_affinity(struct irq_data *irqd, const struct cpumask *des
+@@ -145,8 +145,14 @@ static int rp1_irq_set_affinity(struct i
{
struct rp1_dev *rp1 = irqd->domain->host_data;
struct irq_data *pcie_irqd = rp1->pcie_irqds[irqd->hwirq];
}
static struct irq_chip rp1_irq_chip = {
---
-2.54.0
-
drivers/pinctrl/pinctrl-rp1.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
-diff --git a/drivers/pinctrl/pinctrl-rp1.c b/drivers/pinctrl/pinctrl-rp1.c
-index ecb7762545de..7e8f5f600ea4 100644
--- a/drivers/pinctrl/pinctrl-rp1.c
+++ b/drivers/pinctrl/pinctrl-rp1.c
-@@ -958,8 +958,15 @@ static int rp1_gpio_irq_set_affinity(struct irq_data *data, const struct cpumask
+@@ -958,8 +958,15 @@ static int rp1_gpio_irq_set_affinity(str
}
}
return -EINVAL;
}
---
-2.54.0
-
drivers/nvme/host/pci.c | 98 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 98 insertions(+)
-diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
-index a64b4b4a18a1..89615cac702d 100644
--- a/drivers/nvme/host/pci.c
+++ b/drivers/nvme/host/pci.c
@@ -183,9 +183,11 @@ struct nvme_dev {
void **host_mem_desc_bufs;
unsigned int nr_allocated_queues;
unsigned int nr_write_queues;
-@@ -2300,6 +2302,13 @@ static int nvme_set_host_mem(struct nvme_dev *dev, u32 bits)
+@@ -2301,6 +2303,13 @@ static int nvme_set_host_mem(struct nvme
return ret;
}
static void nvme_free_host_mem_multi(struct nvme_dev *dev)
{
int i;
-@@ -2316,6 +2325,7 @@ static void nvme_free_host_mem_multi(struct nvme_dev *dev)
+@@ -2317,6 +2326,7 @@ static void nvme_free_host_mem_multi(str
kfree(dev->host_mem_desc_bufs);
dev->host_mem_desc_bufs = NULL;
}
static void nvme_free_host_mem(struct nvme_dev *dev)
{
-@@ -2358,6 +2368,93 @@ static int nvme_alloc_host_mem_single(struct nvme_dev *dev, u64 size)
+@@ -2361,6 +2371,93 @@ static int nvme_alloc_host_mem_single(st
return 0;
}
static int nvme_alloc_host_mem_multi(struct nvme_dev *dev, u64 preferred,
u32 chunk_size)
{
-@@ -2418,6 +2515,7 @@ static int nvme_alloc_host_mem_multi(struct nvme_dev *dev, u64 preferred,
+@@ -2421,6 +2518,7 @@ out:
dev->host_mem_descs = NULL;
return -ENOMEM;
}
static int nvme_alloc_host_mem(struct nvme_dev *dev, u64 min, u64 preferred)
{
---
-2.54.0
-
arch/arm64/boot/dts/broadcom/bcm2712-rpi.dtsi | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
-diff --git a/arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi b/arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi
-index 652062b5ba37..e498c634fb72 100644
--- a/arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi
+++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi
@@ -3,7 +3,7 @@
};
__overrides__ {
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-rpi.dtsi b/arch/arm64/boot/dts/broadcom/bcm2712-rpi.dtsi
-index 2fa5eb16ae08..b25e761dd23f 100644
--- a/arch/arm64/boot/dts/broadcom/bcm2712-rpi.dtsi
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-rpi.dtsi
-@@ -113,7 +113,7 @@ pio: &rp1_pio {
+@@ -113,7 +113,7 @@ watchdog: &pm {};
/ {
chosen: chosen {
stdout-path = "serial10:115200n8";
};
---
-2.54.0
-
drivers/gpu/drm/panel/panel-sitronix-st7701.c | 4 ++++
1 file changed, 4 insertions(+)
-diff --git a/drivers/gpu/drm/panel/panel-sitronix-st7701.c b/drivers/gpu/drm/panel/panel-sitronix-st7701.c
-index 285aad105c01..99d8fbc0e5eb 100644
--- a/drivers/gpu/drm/panel/panel-sitronix-st7701.c
+++ b/drivers/gpu/drm/panel/panel-sitronix-st7701.c
@@ -109,6 +109,7 @@ struct st7701_panel_desc {
/* TFT matrix driver configuration, panel specific. */
const u8 pv_gamma[16]; /* Positive voltage gamma control */
-@@ -728,6 +729,7 @@ static int st7701_get_modes(struct drm_panel *panel,
+@@ -728,6 +729,7 @@ static int st7701_get_modes(struct drm_p
connector->display_info.width_mm = desc_mode->width_mm;
connector->display_info.height_mm = desc_mode->height_mm;
/*
* TODO: Remove once all drm drivers call
-@@ -1435,6 +1437,7 @@ static const struct st7701_panel_desc txw210001b0_desc = {
+@@ -1435,6 +1437,7 @@ static const struct st7701_panel_desc tx
CFIELD_PREP(ST7701_CMD2_BK0_GAMCTRL_VC255_MASK, 0x1d)
},
.gip_sequence = txw210001b0_gip_sequence,
};
static const struct st7701_panel_desc hyperpixel2r_desc = {
-@@ -1499,6 +1502,7 @@ static const struct st7701_panel_desc hyperpixel2r_desc = {
+@@ -1499,6 +1502,7 @@ static const struct st7701_panel_desc hy
CFIELD_PREP(ST7701_CMD2_BK0_GAMCTRL_VC255_MASK, 0x1d)
},
.gip_sequence = txw210001b0_gip_sequence,
};
static void st7701_cleanup(void *data)
---
-2.54.0
-
drivers/media/i2c/imx500.c | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
-diff --git a/drivers/media/i2c/imx500.c b/drivers/media/i2c/imx500.c
-index c5a0e1d1491b..5226160bb0b6 100644
--- a/drivers/media/i2c/imx500.c
+++ b/drivers/media/i2c/imx500.c
-@@ -1924,9 +1924,17 @@ static int imx500_clear_weights(struct imx500 *imx500)
+@@ -1924,9 +1924,17 @@ static int imx500_clear_weights(struct i
static void imx500_clear_fw_network(struct imx500 *imx500)
{
imx500->fw_network = NULL;
imx500->network_written = false;
-@@ -2138,6 +2146,13 @@ static int imx500_set_ctrl(struct v4l2_ctrl *ctrl)
+@@ -2138,6 +2146,13 @@ static int imx500_set_ctrl(struct v4l2_c
}
imx500_clear_fw_network(imx500);
ret = kernel_read_file_from_fd(ctrl->val, 0,
(void **)&imx500->fw_network, INT_MAX,
&imx500->fw_network_size,
-@@ -2151,7 +2166,8 @@ static int imx500_set_ctrl(struct v4l2_ctrl *ctrl)
+@@ -2151,7 +2166,8 @@ static int imx500_set_ctrl(struct v4l2_c
if (ret < 0) {
dev_err(&client->dev, "%s failed to read fw image: %d\n",
__func__, ret);
return ret;
}
if (ret != imx500->fw_network_size) {
---
-2.54.0
-
drivers/media/i2c/imx500.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
-diff --git a/drivers/media/i2c/imx500.c b/drivers/media/i2c/imx500.c
-index 5226160bb0b6..5fc593340e95 100644
--- a/drivers/media/i2c/imx500.c
+++ b/drivers/media/i2c/imx500.c
@@ -22,6 +22,7 @@
#include <media/v4l2-fwnode.h>
#include <media/v4l2-mediabus.h>
-@@ -2331,6 +2332,26 @@ static const struct v4l2_ctrl_ops imx500_ctrl_ops = {
+@@ -2331,6 +2332,26 @@ static const struct v4l2_ctrl_ops imx500
.s_ctrl = imx500_set_ctrl,
};
static const struct v4l2_ctrl_config imx500_notify_gains_ctrl = {
.ops = &imx500_ctrl_ops,
.id = V4L2_CID_NOTIFY_GAINS,
-@@ -3632,6 +3653,7 @@ static int imx500_probe(struct i2c_client *client)
+@@ -3632,6 +3653,7 @@ static int imx500_probe(struct i2c_clien
goto error_power_off;
/* Initialize subdev */
imx500->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE |
V4L2_SUBDEV_FL_HAS_EVENTS;
imx500->sd.entity.function = MEDIA_ENT_F_CAM_SENSOR;
---
-2.54.0
-
drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
-diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
-index 190d4808ffd9..ec42af0ed45a 100644
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
-@@ -478,12 +478,19 @@ static void event_to_host_cb(struct vchiq_mmal_instance *instance,
+@@ -478,12 +478,19 @@ static void event_to_host_cb(struct vchi
struct mmal_msg *msg, u32 msg_len)
{
int comp_idx = msg->u.event_to_host.client_component;
if (msg->u.buffer_from_host.drvbuf.magic == MMAL_MAGIC) {
pr_err("%s: MMAL_MSG_TYPE_BUFFER_TO_HOST with bad magic\n",
__func__);
---
-2.54.0
-
3 files changed, 504 insertions(+)
create mode 100644 drivers/gpu/drm/panel/panel-tdo-dsi-v1.c
-diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig
-index edaaf7eb2f09..71b550a06ab0 100644
--- a/drivers/gpu/drm/panel/Kconfig
+++ b/drivers/gpu/drm/panel/Kconfig
@@ -1087,6 +1087,20 @@ config DRM_PANEL_TPO_Y17P
config DRM_PANEL_TPO_TD028TTEC1
tristate "Toppoly (TPO) TD028TTEC1 panel driver"
depends on OF && SPI
-diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile
-index 19871edb6436..75f6bf2729a6 100644
--- a/drivers/gpu/drm/panel/Makefile
+++ b/drivers/gpu/drm/panel/Makefile
-@@ -108,6 +108,7 @@ obj-$(CONFIG_DRM_PANEL_SONY_TULIP_TRULY_NT35521) += panel-sony-tulip-truly-nt355
+@@ -108,6 +108,7 @@ obj-$(CONFIG_DRM_PANEL_SONY_TULIP_TRULY_
obj-$(CONFIG_DRM_PANEL_STARTEK_KD070FHFID015) += panel-startek-kd070fhfid015.o
obj-$(CONFIG_DRM_PANEL_TDO_TL070WSH30) += panel-tdo-tl070wsh30.o
obj-$(CONFIG_DRM_PANEL_TPO_Y17P) += panel-tdo-y17p.o
obj-$(CONFIG_DRM_PANEL_TPO_TD028TTEC1) += panel-tpo-td028ttec1.o
obj-$(CONFIG_DRM_PANEL_TPO_TD043MTEA1) += panel-tpo-td043mtea1.o
obj-$(CONFIG_DRM_PANEL_TPO_TPG110) += panel-tpo-tpg110.o
-diff --git a/drivers/gpu/drm/panel/panel-tdo-dsi-v1.c b/drivers/gpu/drm/panel/panel-tdo-dsi-v1.c
-new file mode 100644
-index 000000000000..4bfcbe8cbeb9
--- /dev/null
+++ b/drivers/gpu/drm/panel/panel-tdo-dsi-v1.c
@@ -0,0 +1,489 @@
+MODULE_AUTHOR("LK <kun_liu@shtdo.com>");
+MODULE_DESCRIPTION("TDO DSI panel driver");
+MODULE_LICENSE("GPL");
---
-2.54.0
-
3 files changed, 92 insertions(+)
create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-dsi-tdo-panel-overlay.dts
-diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile
-index 398c8d65de19..261dfb885a03 100644
--- a/arch/arm/boot/dts/overlays/Makefile
+++ b/arch/arm/boot/dts/overlays/Makefile
@@ -343,6 +343,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
vc4-kms-dsi-waveshare-800x480.dtbo \
vc4-kms-dsi-waveshare-panel.dtbo \
vc4-kms-dsi-waveshare-panel-v2.dtbo \
-diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
-index 7ab189972291..6b0eb5efbbde 100644
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
-@@ -5887,6 +5887,20 @@ Load: dtoverlay=vc4-kms-dsi-lt070me05000-v2
+@@ -5887,6 +5887,20 @@ Load: dtoverlay=vc4-kms-dsi-lt070me050
Params: <None>
Name: vc4-kms-dsi-waveshare-800x480
Info: Enable the Waveshare 4.3" 800x480 DSI screen.
It tries to look like the Pi 7" display, but won't accept some of the
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dsi-tdo-panel-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dsi-tdo-panel-overlay.dts
-new file mode 100644
-index 000000000000..03b9c75330d5
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vc4-kms-dsi-tdo-panel-overlay.dts
@@ -0,0 +1,77 @@
+ <&reset_gpio_frag>, "reset-gpios:4";
+ };
+};
---
-2.54.0
-
drivers/media/i2c/imx477.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/media/i2c/imx477.c b/drivers/media/i2c/imx477.c
-index 3737c98dc3e6..04a77d41f083 100644
--- a/drivers/media/i2c/imx477.c
+++ b/drivers/media/i2c/imx477.c
-@@ -884,7 +884,7 @@ static const struct imx477_mode supported_modes[] = {
+@@ -884,7 +884,7 @@ static const struct imx477_mode supporte
.left = IMX477_PIXEL_ARRAY_LEFT,
.top = IMX477_PIXEL_ARRAY_TOP + 440,
.width = 4056,
},
.frm_length_default = 10,
.reg_list = {
---
-2.54.0
-
drivers/media/i2c/imx708.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
-diff --git a/drivers/media/i2c/imx708.c b/drivers/media/i2c/imx708.c
-index 6ab38e6a30e5..23af2f3f08bf 100644
--- a/drivers/media/i2c/imx708.c
+++ b/drivers/media/i2c/imx708.c
-@@ -112,6 +112,9 @@ MODULE_PARM_DESC(qbc_adjust, "Quad Bayer broken line correction strength [0,2-5]
+@@ -112,6 +112,9 @@ MODULE_PARM_DESC(qbc_adjust, "Quad Bayer
#define IMX708_REG_MID_ANALOG_GAIN 0x3118
#define IMX708_REG_SHT_ANALOG_GAIN 0x0216
};
static inline struct imx708 *to_imx708(struct v4l2_subdev *_sd)
-@@ -1499,6 +1504,16 @@ static int imx708_start_streaming(struct imx708 *imx708)
+@@ -1499,6 +1504,16 @@ static int imx708_start_streaming(struct
return ret;
}
ret = imx708_read_reg(imx708, IMX708_REG_BASE_SPC_GAINS_L,
IMX708_REG_VALUE_08BIT, &val);
if (ret == 0 && val == 0x40) {
-@@ -1972,6 +1987,8 @@ static int imx708_check_hwcfg(struct device *dev, struct imx708 *imx708)
+@@ -1972,6 +1987,8 @@ static int imx708_check_hwcfg(struct dev
goto error_out;
}
ret = 0;
error_out:
---
-2.54.0
-
drivers/regulator/rpi-panel-v2-regulator.c | 1 +
1 file changed, 1 insertion(+)
-diff --git a/drivers/regulator/rpi-panel-v2-regulator.c b/drivers/regulator/rpi-panel-v2-regulator.c
-index f9446dd92ea6..119b315ac384 100644
--- a/drivers/regulator/rpi-panel-v2-regulator.c
+++ b/drivers/regulator/rpi-panel-v2-regulator.c
-@@ -33,6 +33,7 @@ static const struct regmap_config rpi_panel_regmap_config = {
+@@ -33,6 +33,7 @@ static const struct regmap_config rpi_pa
.val_bits = 8,
.max_register = REG_PWM,
.can_sleep = true,
};
static int rpi_panel_v2_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
---
-2.54.0
-
.../vc4-kms-dsi-ili79600-10-1inch-overlay.dts | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dsi-ili79600-10-1inch-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dsi-ili79600-10-1inch-overlay.dts
-index 7aec9e59fcb8..45ff5e967e9c 100644
--- a/arch/arm/boot/dts/overlays/vc4-kms-dsi-ili79600-10-1inch-overlay.dts
+++ b/arch/arm/boot/dts/overlays/vc4-kms-dsi-ili79600-10-1inch-overlay.dts
-@@ -19,10 +19,11 @@ __overlay__ {
+@@ -19,10 +19,11 @@
display_mcu: display_mcu@45
{
};
touch: ts@41 {
-@@ -57,7 +58,7 @@ dsi_panel: dsi_panel@0 {
+@@ -57,7 +58,7 @@
reg = <0>;
compatible = "raspberrypi,dsi-10-1inch";
power-supply = <&display_reg>;
port {
panel_in: endpoint {
-@@ -93,6 +94,14 @@ display_reg: display_reg@1 {
+@@ -93,6 +94,14 @@
startup-delay-us = <50000>;
enable-active-high;
};
};
};
-@@ -121,6 +130,7 @@ __overrides__ {
+@@ -121,6 +130,7 @@
dsi0 = <&dsi_frag>, "target:0=",<&dsi0>,
<&i2c_frag>, "target:0=",<&i2c_csi_dsi0>,
<&display_reg>, "reg:0=0",
+ <&backlight>, "reg:0=0";
};
};
---
-2.54.0
-
drivers/gpu/drm/drm_connector.c | 61 ++++++++++++++++++++++++++++++---
1 file changed, 57 insertions(+), 4 deletions(-)
-diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c
-index 82dae59606fa..9a5f20596126 100644
--- a/drivers/gpu/drm/drm_connector.c
+++ b/drivers/gpu/drm/drm_connector.c
@@ -34,6 +34,7 @@
};
/*
-@@ -114,12 +116,41 @@ static struct drm_conn_prop_enum_list drm_connector_enum_list[] = {
+@@ -114,12 +116,41 @@ static struct drm_conn_prop_enum_list dr
{ DRM_MODE_CONNECTOR_USB, "USB" },
};
}
void drm_connector_ida_destroy(void)
-@@ -227,7 +258,9 @@ static int drm_connector_init_only(struct drm_device *dev,
+@@ -227,7 +258,9 @@ static int drm_connector_init_only(struc
struct i2c_adapter *ddc)
{
struct drm_mode_config *config = &dev->mode_config;
struct ida *connector_ida =
&drm_connector_enum_list[connector_type].ida;
-@@ -257,8 +290,28 @@ static int drm_connector_init_only(struct drm_device *dev,
+@@ -257,8 +290,28 @@ static int drm_connector_init_only(struc
ret = 0;
connector->connector_type = connector_type;
if (connector->connector_type_id < 0) {
ret = connector->connector_type_id;
goto out_put_id;
---
-2.54.0
-
drivers/gpio/gpiolib.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
-index de62a64911c8..79a5b6f14232 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
-@@ -1092,7 +1092,7 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,
+@@ -1092,7 +1092,7 @@ int gpiochip_add_data_with_key(struct gp
first_dynamic_gpiochip_num = (id >= 0) ? (id + 1) : 0;
}
if (id < 0)
id = first_dynamic_gpiochip_num;
---
-2.54.0
-
arch/arm/boot/dts/overlays/README | 68 +++++++++++++++----------------
1 file changed, 34 insertions(+), 34 deletions(-)
-diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
-index 6b0eb5efbbde..50d0b849ae21 100644
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
@@ -273,27 +273,27 @@ Params:
4th cooling level (default 5000). Pi5 only.
fan_temp3_speed Fan PWM setting for 4th cooling level (0-255,
default 250). Pi5 only.
-@@ -1532,8 +1532,8 @@ Info: Configure a GPIO pin to control a cooling fan.
+@@ -1532,8 +1532,8 @@ Info: Configure a GPIO pin to control
Load: dtoverlay=gpio-fan,<param>=<val>
Params: gpiopin GPIO used to control the fan (default 12)
temp Temperature at which the fan switches on, in
temp at which the fan will drop to minrpm
(default 10000)
-@@ -2194,17 +2194,17 @@ Params: addr Sets the address for the fan controller. Note
+@@ -2194,17 +2194,17 @@ Params: addr Sets the
mintemp (range 0-255. default 0)
maxpwm PWM setting for the fan when the SoC is above
maxtemp (range 0-255. default 255)
maxtemp at which the fan begins to slow down
(default 2000)
-@@ -4296,16 +4296,16 @@ Params: fan_gpio BCM number of the pin driving the fan,
+@@ -4296,16 +4296,16 @@ Params: fan_gpio BCM numb
fan_temp3 CPU temperature at which fan is switched
to max speed in millicelsius,
default 75000 (75 °C)
back to high speed in millicelsius,
default 5000 (resulting in 70 °C)
fan_temp0_speed Fan speed for low cooling state in range
-@@ -4560,21 +4560,21 @@ Params: txd0_pin GPIO pin for TXD0 (any free - default 20)
+@@ -4560,21 +4560,21 @@ Params: txd0_pin GPIO pin
Name: rpi-poe
Info: Raspberry Pi PoE HAT fan
Load: dtoverlay=rpi-poe,<param>[=<val>]
the fan slows down (default 5000)
i2c Control the fan via Linux I2C drivers instead of
the firmware.
-@@ -4583,21 +4583,21 @@ Params: poe_fan_temp0 Temperature (in millicelcius) at which the fan
+@@ -4583,21 +4583,21 @@ Params: poe_fan_temp0 Temperat
Name: rpi-poe-plus
Info: Raspberry Pi PoE+ HAT fan
Load: dtoverlay=rpi-poe-plus,<param>[=<val>]
the fan slows down (default 5000)
i2c Control the fan via Linux I2C drivers instead of
the firmware.
---
-2.54.0
-
sound/soc/codecs/pcm1794a.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/sound/soc/codecs/pcm1794a.c b/sound/soc/codecs/pcm1794a.c
-index 3877a138f896..a99c1ab87347 100644
--- a/sound/soc/codecs/pcm1794a.c
+++ b/sound/soc/codecs/pcm1794a.c
-@@ -26,7 +26,7 @@ static struct snd_soc_dai_driver pcm1794a_dai = {
+@@ -26,7 +26,7 @@ static struct snd_soc_dai_driver pcm1794
.playback = {
.channels_min = 2,
.channels_max = 2,
.formats = SNDRV_PCM_FMTBIT_S16_LE |
SNDRV_PCM_FMTBIT_S24_LE
},
---
-2.54.0
-
.../platform/raspberrypi/rp1_cfe/pisp_fe.c | 4 ++
4 files changed, 50 insertions(+), 5 deletions(-)
-diff --git a/drivers/media/platform/raspberrypi/rp1_cfe/csi2.c b/drivers/media/platform/raspberrypi/rp1_cfe/csi2.c
-index 25dc4354c67d..85408880e029 100644
--- a/drivers/media/platform/raspberrypi/rp1_cfe/csi2.c
+++ b/drivers/media/platform/raspberrypi/rp1_cfe/csi2.c
-@@ -574,7 +574,7 @@ int csi2_init(struct csi2_device *csi2, struct dentry *debugfs)
+@@ -574,7 +574,7 @@ int csi2_init(struct csi2_device *csi2,
spin_lock_init(&csi2->errors_lock);
csi2->dphy.dev = csi2->v4l2_dev->dev;
debugfs_create_file("csi2_regs", 0444, debugfs, csi2, &csi2_regs_fops);
-diff --git a/drivers/media/platform/raspberrypi/rp1_cfe/dphy.c b/drivers/media/platform/raspberrypi/rp1_cfe/dphy.c
-index f87d445f9361..e7db0fbd9fb4 100644
--- a/drivers/media/platform/raspberrypi/rp1_cfe/dphy.c
+++ b/drivers/media/platform/raspberrypi/rp1_cfe/dphy.c
@@ -16,7 +16,7 @@
+ if (debugfs)
+ debugfs_create_file("dphy_debug", 0444, debugfs, dphy, &dphy_debug_fops);
}
-diff --git a/drivers/media/platform/raspberrypi/rp1_cfe/dphy.h b/drivers/media/platform/raspberrypi/rp1_cfe/dphy.h
-index 8acfd7c58e82..c1042a738bb6 100644
--- a/drivers/media/platform/raspberrypi/rp1_cfe/dphy.h
+++ b/drivers/media/platform/raspberrypi/rp1_cfe/dphy.h
@@ -7,6 +7,7 @@
void dphy_start(struct dphy_data *dphy);
void dphy_stop(struct dphy_data *dphy);
-diff --git a/drivers/media/platform/raspberrypi/rp1_cfe/pisp_fe.c b/drivers/media/platform/raspberrypi/rp1_cfe/pisp_fe.c
-index 07bc550deea7..627b9e43d2eb 100644
--- a/drivers/media/platform/raspberrypi/rp1_cfe/pisp_fe.c
+++ b/drivers/media/platform/raspberrypi/rp1_cfe/pisp_fe.c
@@ -24,6 +24,8 @@
/* CONTROL */
#define FE_CONTROL_QUEUE BIT(0)
-@@ -162,6 +164,8 @@ static int pisp_regs_show(struct seq_file *s, void *data)
+@@ -162,6 +164,8 @@ static int pisp_regs_show(struct seq_fil
DUMP(FE_OUTPUT_STATUS);
DUMP(FE_INT_EN);
DUMP(FE_INT_STATUS);
#undef DUMP
pm_runtime_put(fe->v4l2_dev->dev);
---
-2.54.0
-
drivers/net/ethernet/cadence/macb_main.c | 10 ++++++++++
1 file changed, 10 insertions(+)
-diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
-index 606e1151ef71..bf5beeb3a349 100644
--- a/drivers/net/ethernet/cadence/macb_main.c
+++ b/drivers/net/ethernet/cadence/macb_main.c
-@@ -1949,6 +1949,12 @@ static void macb_tx_restart(struct macb_queue *queue)
+@@ -1949,6 +1949,12 @@ static void macb_tx_restart(struct macb_
spin_lock(&bp->lock);
macb_writel(bp, NCR, macb_readl(bp, NCR) | MACB_BIT(TSTART));
spin_unlock(&bp->lock);
out_tx_ptr_unlock:
-@@ -2630,6 +2636,10 @@ static netdev_tx_t macb_start_xmit(struct sk_buff *skb, struct net_device *dev)
+@@ -2630,6 +2636,10 @@ static netdev_tx_t macb_start_xmit(struc
queue->tx_pending = 1;
macb_writel(bp, NCR, macb_readl(bp, NCR) | MACB_BIT(TSTART));
spin_unlock(&bp->lock);
if (CIRC_SPACE(queue->tx_head, queue->tx_tail, bp->tx_ring_size) < 1)
---
-2.54.0
-
drivers/net/ethernet/cadence/macb_main.c | 27 +++++++++++++++---------
1 file changed, 17 insertions(+), 10 deletions(-)
-diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
-index bf5beeb3a349..fbc7893b017b 100644
--- a/drivers/net/ethernet/cadence/macb_main.c
+++ b/drivers/net/ethernet/cadence/macb_main.c
-@@ -1999,17 +1999,24 @@ static int macb_tx_poll(struct napi_struct *napi, int budget)
+@@ -1999,17 +1999,24 @@ static int macb_tx_poll(struct napi_stru
if (work_done < budget && napi_complete_done(napi, work_done)) {
queue_writel(queue, IER, MACB_BIT(TCOMP));
queue_writel(queue, IDR, MACB_BIT(TCOMP));
if (bp->caps & MACB_CAPS_ISR_CLEAR_ON_WRITE)
queue_writel(queue, ISR, MACB_BIT(TCOMP));
---
-2.54.0
-
drivers/net/ethernet/cadence/macb_main.c | 65 ++++++++++++++++++++++++
2 files changed, 76 insertions(+)
-diff --git a/drivers/net/ethernet/cadence/macb.h b/drivers/net/ethernet/cadence/macb.h
-index 8c344f70849f..bdbafe09714d 100644
--- a/drivers/net/ethernet/cadence/macb.h
+++ b/drivers/net/ethernet/cadence/macb.h
@@ -1294,6 +1294,17 @@ struct macb_queue {
struct napi_struct napi_tx;
dma_addr_t rx_ring_dma;
-diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
-index fbc7893b017b..423aac02a0d4 100644
--- a/drivers/net/ethernet/cadence/macb_main.c
+++ b/drivers/net/ethernet/cadence/macb_main.c
-@@ -1505,6 +1505,8 @@ static int macb_tx_complete(struct macb_queue *queue, int budget)
+@@ -1505,6 +1505,8 @@ static int macb_tx_complete(struct macb_
packets, bytes);
queue->tx_tail = tail;
if (__netif_subqueue_stopped(bp->dev, queue_index) &&
CIRC_CNT(queue->tx_head, queue->tx_tail,
bp->tx_ring_size) <= MACB_TX_WAKEUP_THRESH(bp))
-@@ -2028,6 +2030,63 @@ static int macb_tx_poll(struct napi_struct *napi, int budget)
+@@ -2028,6 +2030,63 @@ static int macb_tx_poll(struct napi_stru
return work_done;
}
static void macb_hresp_error_task(struct work_struct *work)
{
struct macb *bp = from_work(bp, work, hresp_err_bh_work);
-@@ -3294,6 +3353,9 @@ static int macb_open(struct net_device *dev)
+@@ -3294,6 +3353,9 @@ static int macb_open(struct net_device *
for (q = 0, queue = bp->queues; q < bp->num_queues; ++q, ++queue) {
napi_enable(&queue->napi_rx);
napi_enable(&queue->napi_tx);
}
macb_init_hw(bp);
-@@ -3340,6 +3402,7 @@ static int macb_close(struct net_device *dev)
+@@ -3340,6 +3402,7 @@ static int macb_close(struct net_device
for (q = 0, queue = bp->queues; q < bp->num_queues; ++q, ++queue) {
napi_disable(&queue->napi_rx);
napi_disable(&queue->napi_tx);
netdev_tx_reset_queue(netdev_get_tx_queue(dev, q));
}
-@@ -4938,6 +5001,8 @@ static int macb_init(struct platform_device *pdev)
+@@ -4938,6 +5001,8 @@ static int macb_init(struct platform_dev
}
INIT_WORK(&queue->tx_error_task, macb_tx_error_task);
q++;
}
---
-2.54.0
-
drivers/char/broadcom/vcio.c | 205 ++++++++++++++++++++++++++++++++---
1 file changed, 188 insertions(+), 17 deletions(-)
-diff --git a/drivers/char/broadcom/vcio.c b/drivers/char/broadcom/vcio.c
-index 9db2408c781a..b40d4e779d10 100644
--- a/drivers/char/broadcom/vcio.c
+++ b/drivers/char/broadcom/vcio.c
@@ -30,12 +30,138 @@
{
u32 *buf, size;
int ret;
-@@ -44,6 +170,9 @@ static int vcio_user_property_list(struct vcio_data *vcio, void *user)
+@@ -44,6 +170,9 @@ static int vcio_user_property_list(struc
if (copy_from_user(&size, user, sizeof(size)))
return -EFAULT;
buf = kmalloc(size, GFP_KERNEL);
if (!buf)
return -ENOMEM;
-@@ -53,8 +182,14 @@ static int vcio_user_property_list(struct vcio_data *vcio, void *user)
+@@ -53,8 +182,14 @@ static int vcio_user_property_list(struc
return -EFAULT;
}
if (ret) {
kfree(buf);
return ret;
-@@ -86,12 +221,12 @@ static int vcio_device_release(struct inode *inode, struct file *file)
+@@ -86,12 +221,12 @@ static int vcio_device_release(struct in
static long vcio_device_ioctl(struct file *file, unsigned int ioctl_num,
unsigned long ioctl_param)
{
default:
pr_err("unknown ioctl: %x\n", ioctl_num);
return -EINVAL;
-@@ -102,12 +237,12 @@ static long vcio_device_ioctl(struct file *file, unsigned int ioctl_num,
+@@ -102,12 +237,12 @@ static long vcio_device_ioctl(struct fil
static long vcio_device_compat_ioctl(struct file *file, unsigned int ioctl_num,
unsigned long ioctl_param)
{
default:
pr_err("unknown ioctl: %x\n", ioctl_num);
return -EINVAL;
-@@ -124,6 +259,21 @@ const struct file_operations vcio_fops = {
+@@ -124,6 +259,21 @@ const struct file_operations vcio_fops =
.release = vcio_device_release,
};
static int vcio_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
-@@ -131,6 +281,8 @@ static int vcio_probe(struct platform_device *pdev)
+@@ -131,6 +281,8 @@ static int vcio_probe(struct platform_de
struct device_node *fw_node;
struct rpi_firmware *fw;
struct vcio_data *vcio;
fw_node = of_get_parent(np);
if (!fw_node) {
-@@ -143,24 +295,43 @@ static int vcio_probe(struct platform_device *pdev)
+@@ -143,24 +295,43 @@ static int vcio_probe(struct platform_de
if (!fw)
return -EPROBE_DEFER;
+ ret = vcio_register(dev, &vcio->vcio, fw, "vcio", NULL, 0);
+ if (ret)
+ return ret;
-
-- return misc_register(&vcio->misc_dev);
++
+ for (i = 0; i < ARRAY_SIZE(vcio_groups); i++) {
+ const struct vcio_group *g = &vcio_groups[i];
-+
+
+- return misc_register(&vcio->misc_dev);
+ ret = vcio_register(dev, &vcio->groups[i], fw, g->name,
+ g->tags, g->num_tags);
+ if (ret)
}
static const struct of_device_id vcio_ids[] = {
---
-2.54.0
-
.../vc4-kms-dpi-hyperpixel2r-overlay.dts | 65 +++++++++++++++++--
1 file changed, 59 insertions(+), 6 deletions(-)
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dpi-hyperpixel2r-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dpi-hyperpixel2r-overlay.dts
-index 4cd9d6a55c48..1526d6637263 100644
--- a/arch/arm/boot/dts/overlays/vc4-kms-dpi-hyperpixel2r-overlay.dts
+++ b/arch/arm/boot/dts/overlays/vc4-kms-dpi-hyperpixel2r-overlay.dts
-@@ -31,7 +31,6 @@ panel: display@0 {
+@@ -31,7 +31,6 @@
reg = <0>;
/* 100 kHz */
spi-max-frequency = <100000>;
rotation = <0>;
port {
-@@ -41,11 +40,6 @@ panel_in: endpoint {
+@@ -41,11 +40,6 @@
};
};
};
};
};
-@@ -103,12 +97,71 @@ polytouch: edt-ft5x06@15 {
+@@ -103,12 +97,71 @@
};
};
};
};
---
-2.54.0
-
arch/arm/boot/dts/overlays/README | 1 +
1 file changed, 1 insertion(+)
-diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
-index 50d0b849ae21..3076ead83fe8 100644
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
-@@ -5722,6 +5722,7 @@ Params: disable-touch Disables the touch controller
+@@ -5722,6 +5722,7 @@ Params: disable-touch Disables
touchscreen-inverted-y Inverts Y direction of touch controller
touchscreen-swapped-x-y Swaps X & Y axes of touch controller
rotate Display rotation {0,90,180,270} (default 0)
Name: vc4-kms-dpi-hyperpixel4
---
-2.54.0
-
drivers/mmc/core/quirks.h | 4 ++++
2 files changed, 5 insertions(+)
-diff --git a/drivers/mmc/core/card.h b/drivers/mmc/core/card.h
-index ce00466411fa..b5e7f089e210 100644
--- a/drivers/mmc/core/card.h
+++ b/drivers/mmc/core/card.h
-@@ -92,6 +92,7 @@ struct mmc_fixup {
- #define CID_MANFID_APACER 0x27
+@@ -93,6 +93,7 @@ struct mmc_fixup {
+ #define CID_MANFID_SANDISK_MMC 0x45
#define CID_MANFID_SWISSBIT 0x5D
#define CID_MANFID_KINGSTON 0x70
+#define CID_MANFID_TRANSCEND_SD 0x74
#define CID_MANFID_HYNIX 0x90
#define CID_MANFID_KINGSTON_SD 0x9F
#define CID_MANFID_LONGSYS_SD 0xAD
-diff --git a/drivers/mmc/core/quirks.h b/drivers/mmc/core/quirks.h
-index 40469584bf9c..841a4ecda647 100644
--- a/drivers/mmc/core/quirks.h
+++ b/drivers/mmc/core/quirks.h
-@@ -88,6 +88,10 @@ static const struct mmc_fixup __maybe_unused mmc_sd_fixups[] = {
+@@ -88,6 +88,10 @@ static const struct mmc_fixup __maybe_un
cid_rev(1, 0, 0, 0), -1ull, SDIO_ANY_ID, SDIO_ANY_ID, add_quirk_sd,
MMC_QUIRK_WORKING_SD_CQ, EXT_CSD_REV_ANY),
END_FIXUP
};
---
-2.54.0
-
arch/arm64/boot/dts/broadcom/bcm2712-d-rpi-5-b.dts | 8 --------
1 file changed, 8 deletions(-)
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-d-rpi-5-b.dts b/arch/arm64/boot/dts/broadcom/bcm2712-d-rpi-5-b.dts
-index 4c8d28a1a0dc..7de24d60bcd1 100644
--- a/arch/arm64/boot/dts/broadcom/bcm2712-d-rpi-5-b.dts
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-d-rpi-5-b.dts
-@@ -35,11 +35,3 @@ &gio_aon {
- "PMIC_SCL", // AON_SGPIO_04
- "PMIC_SDA"; // AON_SGPIO_05
+@@ -49,11 +49,3 @@
+ &uart10 {
+ interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
};
-
-&pinctrl_aon {
-&pinctrl {
- compatible = "brcm,bcm2712c0-aon-pinctrl";
-};
---
-2.54.0
-
arch/arm64/boot/dts/broadcom/bcm2712-d-rpi-5-b.dts | 10 ++--------
1 file changed, 2 insertions(+), 8 deletions(-)
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-d-rpi-5-b.dts b/arch/arm64/boot/dts/broadcom/bcm2712-d-rpi-5-b.dts
-index 127be0fc27c2..4c8d28a1a0dc 100644
--- a/arch/arm64/boot/dts/broadcom/bcm2712-d-rpi-5-b.dts
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-d-rpi-5-b.dts
-@@ -36,16 +36,10 @@ &gio_aon {
+@@ -36,16 +36,10 @@
"PMIC_SDA"; // AON_SGPIO_05
};
+&pinctrl {
+ compatible = "brcm,bcm2712c0-aon-pinctrl";
};
---
-2.54.0
-
drivers/usb/dwc3/core.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
-diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
-index bb96e92c6233..aba0f096e58d 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
-@@ -1336,11 +1336,11 @@ static void dwc3_set_axi_pipe_limit(struct dwc3 *dwc)
+@@ -1336,11 +1336,11 @@ static void dwc3_set_axi_pipe_limit(stru
dev_err(dev, "Invalid axi_pipe_limit property\n");
return;
}
}
/**
-@@ -1554,7 +1554,7 @@ static int dwc3_core_init(struct dwc3 *dwc)
+@@ -1554,7 +1554,7 @@ static int dwc3_core_init(struct dwc3 *d
u8 tx_maxburst = dwc->tx_max_burst_prd;
if (tx_thr_num && tx_maxburst) {
reg |= DWC3_GTXTHRCFG_PKTCNTSEL;
reg &= ~DWC3_GTXTHRCFG_TXPKTCNT(~0);
-@@ -1563,7 +1563,7 @@ static int dwc3_core_init(struct dwc3 *dwc)
+@@ -1563,7 +1563,7 @@ static int dwc3_core_init(struct dwc3 *d
reg &= ~DWC3_GTXTHRCFG_MAXTXBURSTSIZE(~0);
reg |= DWC3_GTXTHRCFG_MAXTXBURSTSIZE(tx_maxburst);
}
}
---
-2.54.0
-
.../raspberrypi/hevc_dec/hevc_d_h265.c | 18 +++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_h265.c b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_h265.c
-index b86c935e8b3a..e1fc9f69a5f3 100644
--- a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_h265.c
+++ b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_h265.c
-@@ -1578,6 +1578,8 @@ static int hevc_d_h265_setup(struct hevc_d_ctx *ctx, struct hevc_d_run *run)
+@@ -1578,6 +1578,8 @@ static int hevc_d_h265_setup(struct hevc
bool slice_temporal_mvp;
unsigned int ctb_size_y;
bool sps_changed = false;
de = dec_env_new(ctx);
if (!de) {
-@@ -1646,6 +1648,7 @@ static int hevc_d_h265_setup(struct hevc_d_ctx *ctx, struct hevc_d_run *run)
+@@ -1646,6 +1648,7 @@ static int hevc_d_h265_setup(struct hevc
de->chroma_stride = de->luma_stride;
de->frame_chroma_addr = de->frame_luma_addr +
(ctx->dst_fmt.height * 128);
break;
}
-@@ -1776,15 +1779,24 @@ static int hevc_d_h265_setup(struct hevc_d_ctx *ctx, struct hevc_d_run *run)
+@@ -1776,15 +1779,24 @@ static int hevc_d_h265_setup(struct hevc
for (i = 0; i != run->h265.slice_ents; ++i) {
const struct v4l2_ctrl_hevc_slice_params *const sh = sh0 + i;
const bool last_slice = i + 1 == run->h265.slice_ents;
run->src->planes[0].bytesused);
goto fail;
}
-@@ -1794,7 +1806,7 @@ static int hevc_d_h265_setup(struct hevc_d_ctx *ctx, struct hevc_d_run *run)
+@@ -1794,7 +1806,7 @@ static int hevc_d_h265_setup(struct hevc
* actual size of the buffer (which may well be what is used to set
* bit_size if the caller isn't being very pedantic).
*/
run->src->planes[0].bytesused - sh->data_byte_offset);
s->slice_qp = 26 + s->pps.init_qp_minus26 + sh->slice_qp_delta;
---
-2.54.0
-
drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-diff --git a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c
-index cff997f74d64..9c33ca8cba96 100644
--- a/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c
+++ b/drivers/media/platform/raspberrypi/hevc_dec/hevc_d_video.c
-@@ -144,7 +144,7 @@ static void hevc_d_prepare_dst_format(struct v4l2_pix_format_mplane *pix_fmt)
+@@ -144,7 +144,7 @@ static void hevc_d_prepare_dst_format(st
case V4L2_PIX_FMT_NV12_COL128:
/* Width rounds up to columns */
width = ALIGN(width, 128);
/* column height
* Accept suggested shape if at least min & < 2 * min
-@@ -158,7 +158,7 @@ static void hevc_d_prepare_dst_format(struct v4l2_pix_format_mplane *pix_fmt)
+@@ -158,7 +158,7 @@ static void hevc_d_prepare_dst_format(st
* columns
*/
width = ALIGN(((width + 2) / 3), 32) * 3;
/* column height
* Accept suggested shape if at least min & < 2 * min
---
-2.54.0
-
drivers/clk/Kconfig | 1 +
1 file changed, 1 insertion(+)
-diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig
-index cc95f10ed01b..60b454677d47 100644
--- a/drivers/clk/Kconfig
+++ b/drivers/clk/Kconfig
@@ -90,6 +90,7 @@ config COMMON_CLK_RK808
default MISC_RP1
help
Enable common clock framework support for Raspberry Pi RP1.
---
-2.54.0
-
drivers/gpu/drm/panel/panel-simple.c | 225 ++++++++++++---------------
1 file changed, 102 insertions(+), 123 deletions(-)
-diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c
-index 6e9f437c852b..ac45dae3f043 100644
--- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c
-@@ -469,6 +469,90 @@ static struct panel_desc *panel_dpi_probe(struct device *dev)
+@@ -469,6 +469,90 @@ static struct panel_desc *panel_dpi_prob
return desc;
}
#define PANEL_SIMPLE_BOUNDS_CHECK(to_check, bounds, field) \
(to_check->field.typ >= bounds->field.min && \
to_check->field.typ <= bounds->field.max)
-@@ -568,8 +652,17 @@ static const struct panel_desc *panel_simple_get_desc(struct device *dev)
+@@ -568,8 +652,17 @@ static const struct panel_desc *panel_si
const struct panel_desc_dsi *dsi_desc;
dsi_desc = of_device_get_match_data(dev);
return &dsi_desc->desc;
}
-@@ -689,7 +782,8 @@ static struct panel_simple *panel_simple_probe(struct device *dev)
+@@ -689,7 +782,8 @@ static struct panel_simple *panel_simple
return ERR_PTR(-EPROBE_DEFER);
}
!of_get_display_timing(dev->of_node, "panel-timing", &dt))
panel_simple_parse_panel_timing_node(dev, panel, &dt);
-@@ -5782,9 +5876,6 @@ static const struct panel_desc_dsi osd101t2045_53ts = {
+@@ -5782,9 +5876,6 @@ static const struct panel_desc_dsi osd10
.lanes = 4,
};
static const struct of_device_id dsi_of_match[] = {
{
.compatible = "auo,b080uan01",
-@@ -5810,113 +5901,15 @@ static const struct of_device_id dsi_of_match[] = {
+@@ -5810,113 +5901,15 @@ static const struct of_device_id dsi_of_
}, {
/* Must be the last entry */
.compatible = "panel-dsi",
struct panel_simple *panel;
int err;
-@@ -5924,25 +5917,11 @@ static int panel_simple_dsi_probe(struct mipi_dsi_device *dsi)
+@@ -5924,25 +5917,11 @@ static int panel_simple_dsi_probe(struct
if (IS_ERR(panel))
return PTR_ERR(panel);
err = mipi_dsi_attach(dsi);
if (err) {
---
-2.54.0
-
drivers/gpu/drm/panel/panel-waveshare-dsi.c | 24 +++++++++++++++++++++
1 file changed, 24 insertions(+)
-diff --git a/drivers/gpu/drm/panel/panel-waveshare-dsi.c b/drivers/gpu/drm/panel/panel-waveshare-dsi.c
-index 711b4c36c62f..02e1bd9fa15a 100644
--- a/drivers/gpu/drm/panel/panel-waveshare-dsi.c
+++ b/drivers/gpu/drm/panel/panel-waveshare-dsi.c
-@@ -246,6 +246,27 @@ static const struct ws_panel_data ws_panel_6_25_data = {
+@@ -246,6 +246,27 @@ static const struct ws_panel_data ws_pan
.mode_flags = MIPI_DSI_MODE_VIDEO_HSE | MIPI_DSI_MODE_VIDEO | MIPI_DSI_CLOCK_NON_CONTINUOUS,
};
/* 8.8inch 480x1920
* https://www.waveshare.com/8.8inch-dsi-lcd.htm
*/
-@@ -599,6 +620,9 @@ static const struct of_device_id ws_panel_of_ids[] = {
- }, {
+@@ -600,6 +621,9 @@ static const struct of_device_id ws_pane
.compatible = "waveshare,6.25inch-panel",
.data = &ws_panel_6_25_data,
-+ }, {
+ }, {
+ .compatible = "waveshare,6.25inch-b-panel",
+ .data = &ws_panel_6_25_b_data,
- }, {
++ }, {
.compatible = "waveshare,8.8inch-panel",
.data = &ws_panel_8_8_data,
---
-2.54.0
-
+ }, {
.../boot/dts/overlays/vc4-kms-dsi-waveshare-panel-overlay.dts | 3 +++
2 files changed, 4 insertions(+)
-diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
-index 3076ead83fe8..6356b356221d 100644
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
-@@ -5937,6 +5937,7 @@ Params: 2_8_inch 2.8" 480x640
+@@ -5937,6 +5937,7 @@ Params: 2_8_inch 2.8" 480
4_0_inchC 4.0" 720x720
5_0_inch 5.0" 720x1280
6_25_inch 6.25" 720x1560
8_8_inch 8.8" 480x1920
7_0_inchC 7.0" C 1024x600
7_0_inchH 7.0" H 1280x720
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dsi-waveshare-panel-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dsi-waveshare-panel-overlay.dts
-index c9faf02c907f..7af0f3763fc4 100644
--- a/arch/arm/boot/dts/overlays/vc4-kms-dsi-waveshare-panel-overlay.dts
+++ b/arch/arm/boot/dts/overlays/vc4-kms-dsi-waveshare-panel-overlay.dts
-@@ -125,6 +125,9 @@ __overrides__ {
+@@ -125,6 +125,9 @@
6_25_inch = <&panel>, "compatible=waveshare,6.25inch-panel",
<&touch>, "touchscreen-inverted-x?",
<&touch>, "touchscreen-inverted-y?";
8_8_inch = <&panel>, "compatible=waveshare,8.8inch-panel";
13_3_inch_4lane = <&panel>, "compatible=waveshare,13.3inch-4lane-panel",
<&touch2>, "status=okay";
---
-2.54.0
-
drivers/ata/ahci.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
-index 1d73a53370cf..eb2d896daa66 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
-@@ -216,7 +216,7 @@ static const struct ata_port_info ahci_port_info[] = {
+@@ -216,7 +216,7 @@ static const struct ata_port_info ahci_p
/* JMicron JMB582/585: 64-bit DMA is broken, force 32-bit */
[board_ahci_jmb585] = {
AHCI_HFLAGS (AHCI_HFLAG_IGN_IRQ_IF_ERR |
.flags = AHCI_FLAG_COMMON,
.pio_mask = ATA_PIO4,
.udma_mask = ATA_UDMA6,
---
-2.54.0
-
drivers/net/usb/lan78xx.c | 1 -
1 file changed, 1 deletion(-)
-diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
-index 8403616a1cc7..6a077c2ce00f 100644
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -1960,7 +1960,6 @@ static const struct ethtool_ops lan78xx_ethtool_ops = {
+@@ -1960,7 +1960,6 @@ static const struct ethtool_ops lan78xx_
.set_link_ksettings = lan78xx_set_link_ksettings,
.get_regs_len = lan78xx_get_regs_len,
.get_regs = lan78xx_get_regs,
};
static int lan78xx_init_mac_address(struct lan78xx_net *dev)
---
-2.54.0
-
drivers/net/usb/lan78xx.c | 23 ++---------------------
1 file changed, 2 insertions(+), 21 deletions(-)
-diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
-index 6a077c2ce00f..209d5c3aa005 100644
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -1818,34 +1818,15 @@ static int lan78xx_set_wol(struct net_device *netdev,
+@@ -1818,34 +1818,15 @@ exit_pm_put:
static int lan78xx_get_eee(struct net_device *net, struct ethtool_keee *edata)
{
struct lan78xx_net *dev = netdev_priv(net);
- u32 buf;
- int ret;
--
+
- ret = phylink_ethtool_get_eee(dev->phylink, edata);
- if (ret < 0)
- return ret;
- edata->tx_lpi_timer = buf;
- else
- edata->tx_lpi_timer = 0;
-
+-
- return 0;
+ return phylink_ethtool_get_eee(dev->phylink, edata);
}
}
static void lan78xx_get_drvinfo(struct net_device *net,
---
-2.54.0
-
drivers/net/usb/lan78xx.c | 23 -----------------------
1 file changed, 23 deletions(-)
-diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
-index 209d5c3aa005..3effec45d0c7 100644
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2897,29 +2897,6 @@ static int lan78xx_phy_init(struct lan78xx_net *dev)
+@@ -2897,29 +2897,6 @@ static int lan78xx_phy_init(struct lan78
goto phylink_uninit;
}
ret = lan78xx_configure_leds_from_dt(dev, phydev);
if (ret < 0)
goto phylink_uninit;
---
-2.54.0
-
arch/arm/boot/dts/overlays/README | 8 ++------
2 files changed, 4 insertions(+), 10 deletions(-)
-diff --git a/arch/arm/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dts b/arch/arm/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dts
-index 8973985e9902..bcea7301c6c5 100644
--- a/arch/arm/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dts
+++ b/arch/arm/boot/dts/broadcom/bcm2710-rpi-3-b-plus.dts
-@@ -258,8 +258,6 @@ &vchiq {
+@@ -258,8 +258,6 @@
};
ð_phy {
microchip,downshift-after = <2>;
};
-@@ -285,8 +283,8 @@ __overrides__ {
+@@ -285,8 +283,8 @@ i2c_csi_dsi0: &i2c0 {
pwr_led_activelow = <&led_pwr>,"gpios:8";
pwr_led_trigger = <&led_pwr>,"linux,default-trigger";
eth_led0 = <ð_phy>,"microchip,led-modes:0";
eth_led1 = <ð_phy>,"microchip,led-modes:4";
eth_downshift_after = <ð_phy>,"microchip,downshift-after:0";
-diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
-index 6356b356221d..9089eccd5694 100644
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
@@ -233,8 +233,8 @@ Params:
uart0 Set to "off" to disable uart0 (default "on")
uart0_console Move the kernel boot console to UART0 on pins
---
-2.54.0
-
drivers/net/ethernet/broadcom/genet/bcmgenet.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.h b/drivers/net/ethernet/broadcom/genet/bcmgenet.h
-index bf6a7eda0f86..9e4110c7fdf6 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.h
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.h
@@ -34,7 +34,7 @@
/* misc. configuration */
#define MAX_NUM_OF_FS_RULES 16
---
-2.54.0
-
drivers/media/i2c/imx219.c | 32 +-------------------------------
1 file changed, 1 insertion(+), 31 deletions(-)
-diff --git a/drivers/media/i2c/imx219.c b/drivers/media/i2c/imx219.c
-index c64f5dd59aeb..7d5917de2a9e 100644
--- a/drivers/media/i2c/imx219.c
+++ b/drivers/media/i2c/imx219.c
@@ -146,12 +146,6 @@
};
static const struct cci_reg_sequence imx219_common_regs[] = {
-@@ -323,44 +313,24 @@ static const struct imx219_mode supported_modes[] = {
+@@ -323,44 +313,24 @@ static const struct imx219_mode supporte
.width = 3280,
.height = 2464,
.fll_def = 3526,
},
};
-@@ -461,7 +431,7 @@ static unsigned int imx219_get_binning(struct v4l2_subdev_state *state,
+@@ -461,7 +431,7 @@ static unsigned int imx219_get_binning(s
*bin_v = IMX219_BINNING_NONE;
if (*bin_h == 2 && *bin_v == 2)
else if (*bin_h == 2 || *bin_v == 2)
/*
* Don't use analog binning if only one dimension
---
-2.54.0
-
drivers/media/i2c/imx219.c | 68 ++++++++++++++------------------------
1 file changed, 25 insertions(+), 43 deletions(-)
-diff --git a/drivers/media/i2c/imx219.c b/drivers/media/i2c/imx219.c
-index 7d5917de2a9e..b8e56a9c58e4 100644
--- a/drivers/media/i2c/imx219.c
+++ b/drivers/media/i2c/imx219.c
-@@ -400,57 +400,42 @@ static u32 imx219_get_format_bpp(const struct v4l2_mbus_framefmt *format)
+@@ -400,57 +400,42 @@ static u32 imx219_get_format_bpp(const s
}
}
}
/* -----------------------------------------------------------------------------
-@@ -686,7 +671,6 @@ static int imx219_set_framefmt(struct imx219 *imx219,
+@@ -686,7 +671,6 @@ static int imx219_set_framefmt(struct im
{
const struct v4l2_mbus_framefmt *format;
const struct v4l2_rect *crop;
u8 bin_h, bin_v;
u32 bpp;
int ret = 0;
-@@ -704,11 +688,9 @@ static int imx219_set_framefmt(struct imx219 *imx219,
+@@ -704,11 +688,9 @@ static int imx219_set_framefmt(struct im
cci_write(imx219->regmap, IMX219_REG_Y_ADD_END_A,
crop->top - IMX219_PIXEL_ARRAY_TOP + crop->height - 1, &ret);
cci_write(imx219->regmap, IMX219_REG_X_OUTPUT_SIZE,
format->width, &ret);
---
-2.54.0
-
drivers/media/i2c/imx219.c | 1 -
1 file changed, 1 deletion(-)
-diff --git a/drivers/media/i2c/imx219.c b/drivers/media/i2c/imx219.c
-index b8e56a9c58e4..4734c7b4d37b 100644
--- a/drivers/media/i2c/imx219.c
+++ b/drivers/media/i2c/imx219.c
-@@ -876,7 +876,6 @@ static int imx219_set_pad_format(struct v4l2_subdev *sd,
+@@ -876,7 +876,6 @@ static int imx219_set_pad_format(struct
*/
bin_h = min(IMX219_PIXEL_ARRAY_WIDTH / format->width, 2U);
bin_v = min(IMX219_PIXEL_ARRAY_HEIGHT / format->height, 2U);
/* Ensure bin_h and bin_v are same to avoid 1:2 or 2:1 stretching */
binning = min(bin_h, bin_v);
---
-2.54.0
-
drivers/pmdomain/bcm/bcm2835-power.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/pmdomain/bcm/bcm2835-power.c b/drivers/pmdomain/bcm/bcm2835-power.c
-index 6c0ae6b62027..b008b47a8ce4 100644
--- a/drivers/pmdomain/bcm/bcm2835-power.c
+++ b/drivers/pmdomain/bcm/bcm2835-power.c
-@@ -175,7 +175,7 @@ static int bcm2835_asb_control(struct bcm2835_power *power, u32 reg, bool enable
+@@ -175,7 +175,7 @@ static int bcm2835_asb_control(struct bc
writel(PM_PASSWORD | val, base + reg);
if (readl_poll_timeout_atomic(base + reg, val,
return -ETIMEDOUT;
return 0;
---
-2.54.0
-
drivers/gpu/drm/v3d/v3d_power.c | 38 ++++++++++++++++++---------------
1 file changed, 21 insertions(+), 17 deletions(-)
-diff --git a/drivers/gpu/drm/v3d/v3d_power.c b/drivers/gpu/drm/v3d/v3d_power.c
-index f3d30ef5de4e..769e90032b04 100644
--- a/drivers/gpu/drm/v3d/v3d_power.c
+++ b/drivers/gpu/drm/v3d/v3d_power.c
@@ -2,53 +2,61 @@
- clk_disable_unprepare(v3d->clk);
- return ret;
}
---
-2.54.0
-
drivers/gpu/drm/v3d/v3d_mmu.c | 31 ++++++++++++++++++++++---------
1 file changed, 22 insertions(+), 9 deletions(-)
-diff --git a/drivers/gpu/drm/v3d/v3d_mmu.c b/drivers/gpu/drm/v3d/v3d_mmu.c
-index 01f0b7c7b864..b2c12a664d8a 100644
--- a/drivers/gpu/drm/v3d/v3d_mmu.c
+++ b/drivers/gpu/drm/v3d/v3d_mmu.c
-@@ -35,13 +35,14 @@ static bool v3d_mmu_is_aligned(u32 page, u32 page_address, size_t alignment)
+@@ -35,13 +35,14 @@ static bool v3d_mmu_is_aligned(u32 page,
IS_ALIGNED(page_address, alignment >> V3D_MMU_PAGE_SHIFT);
}
V3D_WRITE(V3D_MMUC_CONTROL, V3D_MMUC_CONTROL_FLUSH |
V3D_MMUC_CONTROL_ENABLE);
-@@ -50,7 +51,7 @@ int v3d_mmu_flush_all(struct v3d_dev *v3d)
+@@ -50,7 +51,7 @@ int v3d_mmu_flush_all(struct v3d_dev *v3
V3D_MMUC_CONTROL_FLUSHING), 100);
if (ret) {
dev_err(v3d->drm.dev, "MMUC flush wait idle failed\n");
}
V3D_WRITE(V3D_MMU_CTL, V3D_READ(V3D_MMU_CTL) |
-@@ -61,7 +62,19 @@ int v3d_mmu_flush_all(struct v3d_dev *v3d)
+@@ -61,7 +62,19 @@ int v3d_mmu_flush_all(struct v3d_dev *v3
if (ret)
dev_err(v3d->drm.dev, "MMU TLB clear wait idle failed\n");
v3d_pm_runtime_put(v3d);
return ret;
}
-@@ -83,7 +96,7 @@ int v3d_mmu_set_page_table(struct v3d_dev *v3d)
+@@ -83,7 +96,7 @@ int v3d_mmu_set_page_table(struct v3d_de
V3D_MMU_ILLEGAL_ADDR_ENABLE);
V3D_WRITE(V3D_MMUC_CONTROL, V3D_MMUC_CONTROL_ENABLE);
}
void v3d_mmu_insert_ptes(struct v3d_bo *bo)
---
-2.54.0
-
drivers/gpu/drm/v3d/v3d_gem.c | 8 ++++++++
1 file changed, 8 insertions(+)
-diff --git a/drivers/gpu/drm/v3d/v3d_gem.c b/drivers/gpu/drm/v3d/v3d_gem.c
-index 82fda76a2daf..3d771ff45feb 100644
--- a/drivers/gpu/drm/v3d/v3d_gem.c
+++ b/drivers/gpu/drm/v3d/v3d_gem.c
-@@ -206,6 +206,14 @@ v3d_clean_caches(struct v3d_dev *v3d)
-
- trace_v3d_cache_clean_begin(dev);
+@@ -214,6 +214,14 @@ v3d_clean_caches(struct v3d_dev *v3d)
+ }
+ }
+ /* GFXH-1897: Ensure pending flushes complete before writing L2TCACTL */
+ if (v3d->ver < V3D_GEN_71) {
V3D_CORE_WRITE(core, V3D_CTL_L2TCACTL, V3D_L2TCACTL_TMUWCF);
if (wait_for(!(V3D_CORE_READ(core, V3D_CTL_L2TCACTL) &
V3D_L2TCACTL_TMUWCF), 100)) {
---
-2.54.0
-
drivers/gpu/drm/v3d/v3d_power.c | 3 +++
1 file changed, 3 insertions(+)
-diff --git a/drivers/gpu/drm/v3d/v3d_power.c b/drivers/gpu/drm/v3d/v3d_power.c
-index 769e90032b04..865fb9b7b365 100644
--- a/drivers/gpu/drm/v3d/v3d_power.c
+++ b/drivers/gpu/drm/v3d/v3d_power.c
-@@ -52,6 +52,9 @@ int v3d_power_suspend(struct device *dev)
+@@ -52,6 +52,9 @@ int v3d_power_suspend(struct device *dev
v3d_irq_disable(v3d);
ret = v3d_suspend_sms(v3d);
if (ret) {
v3d_irq_enable(v3d);
---
-2.54.0
-
drivers/nvme/host/pci.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
-index 8fe9e696ab4d..5eb3c4d4d0ab 100644
--- a/drivers/nvme/host/pci.c
+++ b/drivers/nvme/host/pci.c
-@@ -2431,9 +2431,9 @@ static int nvme_alloc_host_mem_multi(struct nvme_dev *dev, u64 preferred,
+@@ -2433,9 +2433,9 @@ static int nvme_alloc_host_mem_multi(str
i = dev->nr_host_mem_descs = mapped_nents;
while (--i >= 0) {
}
dev->host_mem_size = size;
---
-2.54.0
-
drivers/pci/controller/pcie-brcmstb.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
-diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c
-index b182ab75a8fc..94d15c85ddba 100644
--- a/drivers/pci/controller/pcie-brcmstb.c
+++ b/drivers/pci/controller/pcie-brcmstb.c
-@@ -1575,7 +1575,7 @@ static void brcm_config_clkreq(struct brcm_pcie *pcie)
+@@ -1575,7 +1575,7 @@ static void brcm_config_clkreq(struct br
{
static const char err_msg[] = "invalid 'brcm,clkreq-mode' DT string\n";
const char *mode = "default";
int ret, tmp;
ret = of_property_read_string(pcie->np, "brcm,clkreq-mode", &mode);
-@@ -1584,6 +1584,10 @@ static void brcm_config_clkreq(struct brcm_pcie *pcie)
+@@ -1584,6 +1584,10 @@ static void brcm_config_clkreq(struct br
mode = "safe";
}
if (strcmp(mode, "no-l1ss") == 0) {
/*
* "no-l1ss" -- Provides Clock Power Management, L0s, and
---
-2.54.0
-
drivers/gpu/drm/v3d/v3d_drv.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/gpu/drm/v3d/v3d_drv.c b/drivers/gpu/drm/v3d/v3d_drv.c
-index 96c052b158bb..97afbd14e7dc 100644
--- a/drivers/gpu/drm/v3d/v3d_drv.c
+++ b/drivers/gpu/drm/v3d/v3d_drv.c
-@@ -431,7 +431,7 @@ static int v3d_platform_drm_probe(struct platform_device *pdev)
+@@ -431,7 +431,7 @@ static int v3d_platform_drm_probe(struct
v3d_init_hw_state(v3d);
pm_runtime_use_autosuspend(dev);
ret = drm_dev_register(drm, 0);
---
-2.54.0
-
drivers/of/of_reserved_mem.c | 45 +++++++++++++++++---
3 files changed, 78 insertions(+), 7 deletions(-)
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712-ds.dtsi b/arch/arm64/boot/dts/broadcom/bcm2712-ds.dtsi
-index 32a40daba68a..874902bc750f 100644
--- a/arch/arm64/boot/dts/broadcom/bcm2712-ds.dtsi
+++ b/arch/arm64/boot/dts/broadcom/bcm2712-ds.dtsi
-@@ -60,6 +60,17 @@ usbphy: phy {
+@@ -60,6 +60,17 @@
};
};
&soc {
system_timer: timer@7c003000 {
compatible = "brcm,bcm2835-system-timer";
-diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
-index 3851ce244585..a107f8dfb3b5 100644
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
-@@ -1033,6 +1033,7 @@ int __init early_init_dt_scan_memory(void)
+@@ -1033,6 +1033,7 @@ int __init early_init_dt_scan_memory(voi
fdt_for_each_subnode(node, fdt, 0) {
const char *type = of_get_flat_dt_prop(node, "device_type", NULL);
const __be32 *reg, *endp;
int l;
bool hotpluggable;
-@@ -1050,17 +1051,41 @@ int __init early_init_dt_scan_memory(void)
+@@ -1050,17 +1051,41 @@ int __init early_init_dt_scan_memory(voi
if (reg == NULL)
continue;
if (size == 0)
continue;
-diff --git a/drivers/of/of_reserved_mem.c b/drivers/of/of_reserved_mem.c
-index fe111d1ea739..3b7b4c1c7b90 100644
--- a/drivers/of/of_reserved_mem.c
+++ b/drivers/of/of_reserved_mem.c
-@@ -159,11 +159,25 @@ static int __init __reserved_mem_reserve_reg(unsigned long node,
+@@ -159,11 +159,25 @@ static int __init __reserved_mem_reserve
int len;
const __be32 *prop;
bool nomap, default_cma;
if (len && len % t_len != 0) {
pr_err("Reserved memory: invalid reg property in '%s', skipping node.\n",
uname);
-@@ -180,7 +194,7 @@ static int __init __reserved_mem_reserve_reg(unsigned long node,
+@@ -180,7 +194,7 @@ static int __init __reserved_mem_reserve
while (len >= t_len) {
base = dt_mem_next_cell(dt_root_addr_cells, &prop);
if (size && early_init_dt_reserve_memory(base, size, nomap) == 0) {
/* Architecture specific contiguous memory fixup. */
-@@ -267,8 +281,21 @@ void __init fdt_scan_reserved_mem_reg_nodes(void)
+@@ -267,8 +281,21 @@ void __init fdt_scan_reserved_mem_reg_no
if (default_cma && cma_skip_dt_default_reserved_mem())
continue;
base = b;
size = s;
-@@ -406,16 +433,24 @@ static int __init __reserved_mem_alloc_size(unsigned long node, const char *unam
+@@ -406,16 +433,24 @@ static int __init __reserved_mem_alloc_s
const __be32 *prop;
bool nomap, default_cma;
int ret;
prop = of_get_flat_dt_prop(node, "alignment", &len);
if (prop) {
---
-2.54.0
-
.../dts/overlays/camera-mux-4port-overlay.dts | 23 ++++++++++++++-----
3 files changed, 36 insertions(+), 12 deletions(-)
-diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
-index 9089eccd5694..4e2ba767bcb8 100644
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
-@@ -945,6 +945,7 @@ Params: cam0-arducam-64mp Select Arducam64MP for camera on port 0
+@@ -945,6 +945,7 @@ Params: cam0-arducam-64mp Select A
cam1-sync-sink Set camera on port 1 as vsync sink
cam0 Connect the mux to CAM0 port (default is CAM1)
Name: camera-mux-4port
-@@ -1014,6 +1015,9 @@ Params: cam0-arducam-64mp Select Arducam64MP for camera on port 0
+@@ -1014,6 +1015,9 @@ Params: cam0-arducam-64mp Select A
cam3-sync-sink Set camera on port 3 as vsync sink
cam0 Connect the mux to CAM0 port (default is CAM1)
Name: cap1106
-diff --git a/arch/arm/boot/dts/overlays/camera-mux-2port-overlay.dts b/arch/arm/boot/dts/overlays/camera-mux-2port-overlay.dts
-index 97d1988dd984..296477c11a4e 100644
--- a/arch/arm/boot/dts/overlays/camera-mux-2port-overlay.dts
+++ b/arch/arm/boot/dts/overlays/camera-mux-2port-overlay.dts
-@@ -339,15 +339,17 @@ __overlay__ {
+@@ -339,15 +339,17 @@
fragment@203 {
target-path="/";
__overlay__ {
mux-controls = <&mux>;
#address-cells = <1>;
#size-cells = <0>;
-@@ -378,7 +380,7 @@ mux_out: endpoint {
+@@ -378,7 +380,7 @@
};
};
compatible = "fixed-clock";
#clock-cells = <0>;
-@@ -386,7 +388,7 @@ clk_24mhz: clk_24mhz {
+@@ -386,7 +388,7 @@
status = "okay";
};
compatible = "fixed-clock";
#clock-cells = <0>;
-@@ -394,7 +396,7 @@ clk_25mhz: clk_25mhz {
+@@ -394,7 +396,7 @@
status = "okay";
};
compatible = "fixed-clock";
#clock-cells = <0>;
-@@ -535,11 +537,18 @@ __overrides__ {
+@@ -535,11 +537,18 @@
<&imx290_1>,"clock-frequency:0";
cam0 = <&i2c_frag>, "target:0=",<&i2c_csi_dsi0>,
+ gpio-sel = <&mux>, "mux-gpios:4";
};
};
-diff --git a/arch/arm/boot/dts/overlays/camera-mux-4port-overlay.dts b/arch/arm/boot/dts/overlays/camera-mux-4port-overlay.dts
-index dbbb476f51e7..75330970f174 100644
--- a/arch/arm/boot/dts/overlays/camera-mux-4port-overlay.dts
+++ b/arch/arm/boot/dts/overlays/camera-mux-4port-overlay.dts
-@@ -617,8 +617,9 @@ __overlay__ {
+@@ -617,8 +617,9 @@
fragment@203 {
target-path="/";
__overlay__ {
#mux-control-cells = <0>;
/* SEL, En2, En1 */
-@@ -627,8 +628,9 @@ mux: mux-controller {
+@@ -627,8 +628,9 @@
<&gpio 17 GPIO_ACTIVE_HIGH>;
};
mux-controls = <&mux>;
#address-cells = <1>;
#size-cells = <0>;
-@@ -684,7 +686,7 @@ mux_out: endpoint {
+@@ -684,7 +686,7 @@
};
};
compatible = "fixed-clock";
#clock-cells = <0>;
-@@ -692,7 +694,7 @@ clk_24mhz: clk_24mhz {
+@@ -692,7 +694,7 @@
status = "okay";
};
compatible = "fixed-clock";
#clock-cells = <0>;
-@@ -700,7 +702,7 @@ clk_25mhz: clk_25mhz {
+@@ -700,7 +702,7 @@
status = "okay";
};
compatible = "fixed-clock";
#clock-cells = <0>;
-@@ -940,7 +942,12 @@ __overrides__ {
+@@ -940,7 +942,12 @@
<&imx290_3>,"clock-frequency:0";
cam0 = <&i2c_frag>, "target:0=",<&i2c_csi_dsi0>,
cam0-sync-source = <&imx477_0>, "trigger-mode:0=1";
cam0-sync-sink = <&imx477_0>, "trigger-mode:0=2";
-@@ -950,5 +957,9 @@ __overrides__ {
+@@ -950,5 +957,9 @@
cam2-sync-sink = <&imx477_2>, "trigger-mode:0=2";
cam3-sync-source = <&imx477_3>, "trigger-mode:0=1";
cam3-sync-sink = <&imx477_3>, "trigger-mode:0=2";
+ gpio-en1 = <&mux>, "mux-gpios:28";
};
};
---
-2.54.0
-
drivers/regulator/waveshare-panel-regulator.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
-diff --git a/drivers/regulator/waveshare-panel-regulator.c b/drivers/regulator/waveshare-panel-regulator.c
-index dfba8cf5b37c..2d288a568e2b 100644
--- a/drivers/regulator/waveshare-panel-regulator.c
+++ b/drivers/regulator/waveshare-panel-regulator.c
-@@ -207,6 +207,7 @@ static int waveshare_panel_i2c_probe(struct i2c_client *i2c)
+@@ -207,6 +207,7 @@ static int waveshare_panel_i2c_probe(str
struct waveshare_panel_lcd *state;
struct regmap *regmap;
unsigned int data;
int ret;
state = devm_kzalloc(&i2c->dev, sizeof(*state), GFP_KERNEL);
-@@ -226,6 +227,8 @@ static int waveshare_panel_i2c_probe(struct i2c_client *i2c)
+@@ -226,6 +227,8 @@ static int waveshare_panel_i2c_probe(str
goto error;
}
ret = waveshare_panel_i2c_read(i2c, REG_ID, &data);
if (ret == 0)
dev_info(&i2c->dev, "waveshare panel hw id = 0x%x\n", data);
-@@ -241,9 +244,14 @@ static int waveshare_panel_i2c_probe(struct i2c_client *i2c)
+@@ -241,9 +244,14 @@ static int waveshare_panel_i2c_probe(str
state->direction_state = 0;
state->poweron_state = BIT(9) | BIT(8); // Enable VCC
state->regmap = regmap;
state->gc.parent = &i2c->dev;
---
-2.54.0
-
drivers/gpu/drm/panel/panel-waveshare-dsi-v2.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
-diff --git a/drivers/gpu/drm/panel/panel-waveshare-dsi-v2.c b/drivers/gpu/drm/panel/panel-waveshare-dsi-v2.c
-index e15dae58a19d..4b0c16dc54ec 100644
--- a/drivers/gpu/drm/panel/panel-waveshare-dsi-v2.c
+++ b/drivers/gpu/drm/panel/panel-waveshare-dsi-v2.c
-@@ -2052,17 +2052,17 @@ static int ws_panel_dsi_probe(struct mipi_dsi_device *dsi)
+@@ -2052,17 +2052,17 @@ static int ws_panel_dsi_probe(struct mip
drm_panel_init(&ctx->panel, &dsi->dev, &ws_panel_funcs,
DRM_MODE_CONNECTOR_DSI);
if (IS_ERR(ctx->avdd))
return dev_err_probe(&dsi->dev, PTR_ERR(ctx->avdd),
"Couldn't get our avdd GPIO\n");
---
-2.54.0
-
.../dts/overlays/vc4-kms-dsi-waveshare-panel-v2-overlay.dts | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dsi-waveshare-panel-v2-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dsi-waveshare-panel-v2-overlay.dts
-index ddb085d03cfa..2cf7e73dccc8 100644
--- a/arch/arm/boot/dts/overlays/vc4-kms-dsi-waveshare-panel-v2-overlay.dts
+++ b/arch/arm/boot/dts/overlays/vc4-kms-dsi-waveshare-panel-v2-overlay.dts
-@@ -87,7 +87,8 @@ __overrides__ {
+@@ -87,7 +87,8 @@
7_0_inch_c = <&dsi_panel>, "compatible=waveshare,7.0-dsi-touch-c";
8_0_inch_a = <&dsi_panel>, "compatible=waveshare,8.0-dsi-touch-a";
8_0_inch_a_4lane = <&dsi_panel>, "compatible=waveshare,8.0-dsi-touch-a-4lane";
9_0_inch_b = <&dsi_panel>, "compatible=waveshare,9.0-dsi-touch-b",
<&touch>, "touchscreen-inverted-x";
9_0_inch_b_4lane = <&dsi_panel>, "compatible=waveshare,9.0-dsi-touch-b,4lane",
---
-2.54.0
-
1 file changed, 78 insertions(+)
create mode 100644 Documentation/devicetree/bindings/display/panel/waveshare,dsi-touch.yaml
-diff --git a/Documentation/devicetree/bindings/display/panel/waveshare,dsi-touch.yaml b/Documentation/devicetree/bindings/display/panel/waveshare,dsi-touch.yaml
-new file mode 100644
-index 000000000000..b5579ac35b42
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/panel/waveshare,dsi-touch.yaml
@@ -0,0 +1,78 @@
+ };
+ };
+ };
---
-2.54.0
-
.../gpu/drm/panel/panel-waveshare-dsi-v2.c | 145 ++++++++++++++++++
1 file changed, 145 insertions(+)
-diff --git a/drivers/gpu/drm/panel/panel-waveshare-dsi-v2.c b/drivers/gpu/drm/panel/panel-waveshare-dsi-v2.c
-index 4b0c16dc54ec..6809b6e2ef3f 100644
--- a/drivers/gpu/drm/panel/panel-waveshare-dsi-v2.c
+++ b/drivers/gpu/drm/panel/panel-waveshare-dsi-v2.c
-@@ -1490,6 +1490,103 @@ static const struct panel_init_cmd ws_panel_5_a_init[] = {
+@@ -1490,6 +1490,103 @@ static const struct panel_init_cmd ws_pa
{},
};
static const struct panel_init_cmd ws_panel_4_c_init[] = {
_INIT_DCS_CMD(0xE0, 0x00), _INIT_DCS_CMD(0xE1, 0x93),
_INIT_DCS_CMD(0xE2, 0x65), _INIT_DCS_CMD(0xE3, 0xF8),
-@@ -1963,6 +2060,34 @@ static const struct drm_display_mode ws_panel_5_a_mode = {
+@@ -1963,6 +2060,34 @@ static const struct drm_display_mode ws_
.height_mm = 110,
};
static const struct drm_display_mode ws_panel_4_c_mode = {
.clock = 36500,
.hdisplay = 720,
-@@ -2261,6 +2386,24 @@ static const struct ws_panel_desc ws_panel_5_inch_a_desc = {
+@@ -2261,6 +2386,24 @@ static const struct ws_panel_desc ws_pan
.format = MIPI_DSI_FMT_RGB888,
};
static const struct ws_panel_desc ws_panel_4_inch_c_desc = {
.init = ws_panel_4_c_init,
.mode = &ws_panel_4_c_mode,
-@@ -2304,6 +2447,8 @@ static const struct of_device_id ws_panel_of_match[] = {
+@@ -2304,6 +2447,8 @@ static const struct of_device_id ws_pane
{ .compatible = "waveshare,5.5-dsi-touch-a",
&ws_panel_5_5_inch_a_desc },
{ .compatible = "waveshare,5.0-dsi-touch-a", &ws_panel_5_inch_a_desc },
{ .compatible = "waveshare,4.0-dsi-touch-c", &ws_panel_4_inch_c_desc },
{ .compatible = "waveshare,3.4-dsi-touch-c",
&ws_panel_3_4_inch_c_desc },
---
-2.54.0
-
.../dts/overlays/vc4-kms-dsi-waveshare-panel-v2-overlay.dts | 2 ++
2 files changed, 4 insertions(+)
-diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
-index 4e2ba767bcb8..ec3b9053cdf8 100644
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
-@@ -5962,7 +5962,9 @@ Info: Enable the Waveshare DSI-TOUCH series screen
+@@ -5962,7 +5962,9 @@ Info: Enable the Waveshare DSI-TOUCH s
Requires vc4-kms-v3d to be loaded.
Load: dtoverlay=vc4-kms-dsi-waveshare-panel-v2,<param>
Params: 3_4_inch_c 3.4" 800x800 2lane
5_0_inch_a 5.0" 720x1280 2lane
5_5_inch_a 5.5" 720x1280 2lane
7_0_inch_a 7.0" A 720x1280 2lane
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dsi-waveshare-panel-v2-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dsi-waveshare-panel-v2-overlay.dts
-index 2cf7e73dccc8..51b773e4afff 100644
--- a/arch/arm/boot/dts/overlays/vc4-kms-dsi-waveshare-panel-v2-overlay.dts
+++ b/arch/arm/boot/dts/overlays/vc4-kms-dsi-waveshare-panel-v2-overlay.dts
-@@ -79,7 +79,9 @@ __overlay__ {
+@@ -79,7 +79,9 @@
__overrides__ {
3_4_inch_c = <&dsi_panel>, "compatible=waveshare,3.4-dsi-touch-c";
5_0_inch_a = <&dsi_panel>, "compatible=waveshare,5.0-dsi-touch-a";
5_5_inch_a = <&dsi_panel>, "compatible=waveshare,5.5-dsi-touch-a";
7_0_inch_a = <&dsi_panel>, "compatible=waveshare,7.0-dsi-touch-a";
---
-2.54.0
-
arch/arm64/boot/dts/broadcom/bcm2712.dtsi | 56 ++++++++++++++++++++++-
1 file changed, 55 insertions(+), 1 deletion(-)
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712.dtsi b/arch/arm64/boot/dts/broadcom/bcm2712.dtsi
-index 0e7570e727c5..205b87f557d6 100644
--- a/arch/arm64/boot/dts/broadcom/bcm2712.dtsi
+++ b/arch/arm64/boot/dts/broadcom/bcm2712.dtsi
-@@ -38,6 +38,13 @@ clk_emmc2: clk-emmc2 {
+@@ -38,6 +38,13 @@
clock-frequency = <200000000>;
clock-output-names = "emmc2-clock";
};
};
cpus: cpus {
-@@ -243,6 +250,39 @@ uart10: serial@7d001000 {
- status = "disabled";
+@@ -252,6 +259,39 @@
+ system-power-controller;
};
+ pinctrl: pinctrl@7d504100 {
interrupt-controller@7d517000 {
compatible = "brcm,bcm7271-l2-intc";
reg = <0x7d517000 0x10>;
-@@ -263,6 +303,21 @@ gio_aon: gpio@7d517c00 {
+@@ -272,6 +312,21 @@
*/
};
gicv2: interrupt-controller@7fff9000 {
compatible = "arm,gic-400";
reg = <0x7fff9000 0x1000>,
-@@ -612,6 +667,5 @@ hvs: hvs@107c580000 {
+@@ -621,6 +676,5 @@
interrupt-parent = <&disp_intr>;
interrupts = <2>, <9>, <16>;
interrupt-names = "ch0-eof", "ch1-eof", "ch2-eof";
- iommus = <&iommu4>;
};
};
---
-2.54.0
-
arch/arm64/boot/dts/broadcom/bcm2712.dtsi | 65 +----------------------
1 file changed, 1 insertion(+), 64 deletions(-)
-diff --git a/arch/arm64/boot/dts/broadcom/bcm2712.dtsi b/arch/arm64/boot/dts/broadcom/bcm2712.dtsi
-index d771694787b2..0e7570e727c5 100644
--- a/arch/arm64/boot/dts/broadcom/bcm2712.dtsi
+++ b/arch/arm64/boot/dts/broadcom/bcm2712.dtsi
-@@ -38,13 +38,6 @@ clk_emmc2: clk-emmc2 {
+@@ -38,13 +38,6 @@
clock-frequency = <200000000>;
clock-output-names = "emmc2-clock";
};
};
cpus: cpus {
-@@ -250,48 +243,6 @@ uart10: serial@7d001000 {
+@@ -250,48 +243,6 @@
status = "disabled";
};
interrupt-controller@7d517000 {
compatible = "brcm,bcm7271-l2-intc";
reg = <0x7d517000 0x10>;
-@@ -312,21 +263,6 @@ gio_aon: gpio@7d517c00 {
+@@ -312,21 +263,6 @@
*/
};
gicv2: interrupt-controller@7fff9000 {
compatible = "arm,gic-400";
reg = <0x7fff9000 0x1000>,
-@@ -676,5 +612,6 @@ hvs: hvs@107c580000 {
+@@ -676,5 +612,6 @@
interrupt-parent = <&disp_intr>;
interrupts = <2>, <9>, <16>;
interrupt-names = "ch0-eof", "ch1-eof", "ch2-eof";
+ iommus = <&iommu4>;
};
};
---
-2.54.0
-
drivers/gpu/drm/panel/panel-ilitek-ili9881c.c | 231 ++++++++++++++++++
1 file changed, 231 insertions(+)
-diff --git a/drivers/gpu/drm/panel/panel-ilitek-ili9881c.c b/drivers/gpu/drm/panel/panel-ilitek-ili9881c.c
-index fe8964d9f8f0..3346bfeb5e5a 100644
--- a/drivers/gpu/drm/panel/panel-ilitek-ili9881c.c
+++ b/drivers/gpu/drm/panel/panel-ilitek-ili9881c.c
-@@ -2230,6 +2230,211 @@ static const struct ili9881c_instr bsd1218_a101kl68_init[] = {
+@@ -2230,6 +2230,211 @@ static const struct ili9881c_instr bsd12
ILI9881C_COMMAND_INSTR(0xd3, 0x3f),
};
static inline struct ili9881c *panel_to_ili9881c(struct drm_panel *panel)
{
return container_of(panel, struct ili9881c, panel);
-@@ -2511,6 +2716,23 @@ static const struct drm_display_mode bsd1218_a101kl68_default_mode = {
+@@ -2511,6 +2716,23 @@ static const struct drm_display_mode bsd
.height_mm = 170,
};
static int ili9881c_get_modes(struct drm_panel *panel,
struct drm_connector *connector)
{
-@@ -2719,6 +2941,14 @@ static const struct ili9881c_desc bsd1218_a101kl68_desc = {
+@@ -2719,6 +2941,14 @@ static const struct ili9881c_desc bsd121
.lanes = 4,
};
static const struct of_device_id ili9881c_of_match[] = {
{ .compatible = "bananapi,lhr050h41", .data = &lhr050h41_desc },
{ .compatible = "bestar,bsd1218-a101kl68", .data = &bsd1218_a101kl68_desc },
-@@ -2731,6 +2961,7 @@ static const struct of_device_id ili9881c_of_match[] = {
+@@ -2731,6 +2961,7 @@ static const struct of_device_id ili9881
{ .compatible = "nwe,nwe080", .data = &nwe080_desc },
{ .compatible = "raspberrypi,dsi-5inch", &rpi_5inch_desc },
{ .compatible = "raspberrypi,dsi-7inch", &rpi_7inch_desc },
{ }
};
MODULE_DEVICE_TABLE(of, ili9881c_of_match);
---
-2.54.0
-
3 files changed, 231 insertions(+)
create mode 100644 drivers/regulator/edatec-panel-regulator.c
-diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig
-index b6ffd0d6ede8..21c8ce80ffa6 100644
--- a/drivers/regulator/Kconfig
+++ b/drivers/regulator/Kconfig
@@ -1828,4 +1828,23 @@ config REGULATOR_QCOM_LABIBB
+ Otherwise, say N.
+
endif
-diff --git a/drivers/regulator/Makefile b/drivers/regulator/Makefile
-index b0b8fd277992..838ccb72bda3 100644
--- a/drivers/regulator/Makefile
+++ b/drivers/regulator/Makefile
-@@ -211,5 +211,6 @@ obj-$(CONFIG_REGULATOR_WM831X) += wm831x-ldo.o
+@@ -211,5 +211,6 @@ obj-$(CONFIG_REGULATOR_WM831X) += wm831x
obj-$(CONFIG_REGULATOR_WM8350) += wm8350-regulator.o
obj-$(CONFIG_REGULATOR_WM8400) += wm8400-regulator.o
obj-$(CONFIG_REGULATOR_WM8994) += wm8994-regulator.o
+obj-$(CONFIG_REGULATOR_EDATEC_PANEL) += edatec-panel-regulator.o
ccflags-$(CONFIG_REGULATOR_DEBUG) += -DDEBUG
-diff --git a/drivers/regulator/edatec-panel-regulator.c b/drivers/regulator/edatec-panel-regulator.c
-new file mode 100644
-index 000000000000..4227837466cb
--- /dev/null
+++ b/drivers/regulator/edatec-panel-regulator.c
@@ -0,0 +1,211 @@
+MODULE_AUTHOR("EDATEC <support@edatec.cn>");
+MODULE_DESCRIPTION("EDATEC TFT LCD panel regulator driver");
+MODULE_LICENSE("GPL");
---
-2.54.0
-
create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-dsi-edatec-panel-070c-overlay.dts
create mode 100644 arch/arm/boot/dts/overlays/vc4-kms-dsi-edatec-panel-101c-overlay.dts
-diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile
-index 261dfb885a03..ea5a30939dca 100644
--- a/arch/arm/boot/dts/overlays/Makefile
+++ b/arch/arm/boot/dts/overlays/Makefile
@@ -337,6 +337,8 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
vc4-kms-dsi-generic.dtbo \
vc4-kms-dsi-ili79600-10-1inch.dtbo \
vc4-kms-dsi-ili9881-5inch.dtbo \
-diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
-index ec3b9053cdf8..f74f49cb30fb 100644
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
-@@ -5791,6 +5791,29 @@ Params: sizex Touchscreen size x (default 800)
+@@ -5791,6 +5791,29 @@ Params: sizex Touchscr
the default DSI1 and i2c_csi_dsi).
Name: vc4-kms-dsi-generic
Info: Enable a generic DSI display under KMS.
Default timings are for a 840x480 RGB888 panel.
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dsi-edatec-panel-070c-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dsi-edatec-panel-070c-overlay.dts
-new file mode 100644
-index 000000000000..4a075a885dbe
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vc4-kms-dsi-edatec-panel-070c-overlay.dts
@@ -0,0 +1,119 @@
+ <>911>,"irq-gpios:4";
+ };
+};
-diff --git a/arch/arm/boot/dts/overlays/vc4-kms-dsi-edatec-panel-101c-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-dsi-edatec-panel-101c-overlay.dts
-new file mode 100644
-index 000000000000..35c97c18cc64
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/vc4-kms-dsi-edatec-panel-101c-overlay.dts
@@ -0,0 +1,116 @@
+ rotation = <&ili9881c>, "rotation:0";
+ };
+};
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_regs.h | 4 +++
3 files changed, 59 insertions(+), 13 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h
-index b13817ec5a10..60fa75ff7d09 100644
--- a/drivers/gpu/drm/vc4/vc4_drv.h
+++ b/drivers/gpu/drm/vc4/vc4_drv.h
@@ -459,6 +459,11 @@ struct vc4_plane_state {
/* Our allocation in LBM for temporary storage during scaling. */
unsigned int lbm_handle;
-diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c
-index 2c4826ede21b..faee4198f4da 100644
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -962,7 +962,7 @@ static void vc4_write_scaling_parameters(struct drm_plane_state *state,
+@@ -962,7 +962,7 @@ static void vc4_write_scaling_parameters
/* Ch0 V-TPZ Words 0-2: Scaling Parameters, Recip, Context */
if (vc4_state->y_scaling[channel] == VC4_SCALING_TPZ) {
vc4_state->crtc_h);
vc4_dlist_write(vc4_state, 0xc0c0c0c0);
}
-@@ -1388,6 +1388,17 @@ static int vc4_plane_mode_set(struct drm_plane *plane,
+@@ -1388,6 +1388,17 @@ static int vc4_plane_mode_set(struct drm
return 0;
}
width = vc4_state->src_w[0] >> 16;
height = vc4_state->src_h[0] >> 16;
-@@ -1433,6 +1444,9 @@ static int vc4_plane_mode_set(struct drm_plane *plane,
+@@ -1433,6 +1444,9 @@ static int vc4_plane_mode_set(struct drm
break;
case DRM_FORMAT_MOD_BROADCOM_VC4_T_TILED: {
u32 tile_size_shift = 12; /* T tiles are 4kb */
/* Whole-tile offsets, mostly for setting the pitch. */
u32 tile_w_shift = fb->format->cpp[0] == 2 ? 6 : 5;
-@@ -1585,6 +1599,9 @@ static int vc4_plane_mode_set(struct drm_plane *plane,
+@@ -1585,6 +1599,9 @@ static int vc4_plane_mode_set(struct drm
offsets[i] += pitch[i] * tile * tile_width;
offsets[i] += src_y / (i ? v_subsample : 1) * tile_width;
offsets[i] += x_off & ~(i ? 1 : 0);
}
break;
}
-@@ -1662,7 +1679,8 @@ static int vc4_plane_mode_set(struct drm_plane *plane,
+@@ -1662,7 +1679,8 @@ static int vc4_plane_mode_set(struct drm
(mix_plane_alpha ? SCALER_POS2_ALPHA_MIX : 0) |
vc4_hvs4_get_alpha_blend_mode(state) |
VC4_SET_FIELD(width, SCALER_POS2_WIDTH) |
/* Position Word 3: Context. Written by the HVS. */
vc4_dlist_write(vc4_state, 0xc0c0c0c0);
-@@ -1716,7 +1734,8 @@ static int vc4_plane_mode_set(struct drm_plane *plane,
+@@ -1716,7 +1734,8 @@ static int vc4_plane_mode_set(struct drm
vc4_state->pos2_offset = vc4_state->dlist_count;
vc4_dlist_write(vc4_state,
VC4_SET_FIELD(width, SCALER5_POS2_WIDTH) |
/* Position Word 3: Context. Written by the HVS. */
vc4_dlist_write(vc4_state, 0xc0c0c0c0);
-@@ -1740,18 +1759,22 @@ static int vc4_plane_mode_set(struct drm_plane *plane,
+@@ -1740,18 +1759,22 @@ static int vc4_plane_mode_set(struct drm
vc4_dlist_write(vc4_state, 0xc0c0c0c0);
/* Pitch word 0 */
}
/* Colorspace conversion words */
-@@ -1965,6 +1988,17 @@ static int vc6_plane_mode_set(struct drm_plane *plane,
+@@ -1965,6 +1988,17 @@ static int vc6_plane_mode_set(struct drm
width = vc4_state->src_w[0] >> 16;
height = vc4_state->src_h[0] >> 16;
/* SCL1 is used for Cb/Cr scaling of planar formats. For RGB
* and 4:4:4, scl1 should be set to scl0 so both channels of
* the scaler do the same thing. For YUV, the Y plane needs
-@@ -2117,8 +2151,11 @@ static int vc6_plane_mode_set(struct drm_plane *plane,
+@@ -2117,8 +2151,11 @@ static int vc6_plane_mode_set(struct drm
* Finished using the pitch as a pitch, so pack it as the
* register value.
*/
}
break;
-@@ -2179,7 +2216,7 @@ static int vc6_plane_mode_set(struct drm_plane *plane,
+@@ -2179,7 +2216,7 @@ static int vc6_plane_mode_set(struct drm
/* Position Word 2: Source Image Size */
vc4_state->pos2_offset = vc4_state->dlist_count;
vc4_dlist_write(vc4_state,
SCALER6_POS2_SRC_LINES) |
VC4_SET_FIELD(width - 1,
SCALER6_POS2_SRC_WIDTH));
-@@ -2214,7 +2251,7 @@ static int vc6_plane_mode_set(struct drm_plane *plane,
+@@ -2214,7 +2251,7 @@ static int vc6_plane_mode_set(struct drm
if (base_format_mod != DRM_FORMAT_MOD_BROADCOM_SAND128 &&
base_format_mod != DRM_FORMAT_MOD_BROADCOM_SAND256) {
vc4_dlist_write(vc4_state,
SCALER6_PTR2_PITCH));
} else {
vc4_dlist_write(vc4_state, pitch[i]);
-diff --git a/drivers/gpu/drm/vc4/vc4_regs.h b/drivers/gpu/drm/vc4/vc4_regs.h
-index c43874590468..f79d4b2a5b7f 100644
--- a/drivers/gpu/drm/vc4/vc4_regs.h
+++ b/drivers/gpu/drm/vc4/vc4_regs.h
@@ -1437,4 +1437,8 @@ enum hvs_pixel_format {
+#define SCALER6_PTR2_TILE_HEIGHT_MASK VC4_MASK(16, 0)
+
#endif /* VC4_REGS_H */
---
-2.54.0
-
drivers/char/random.c | 8 --------
1 file changed, 8 deletions(-)
-diff --git a/drivers/char/random.c b/drivers/char/random.c
-index 80ed1d593f27..f344f67c83f4 100644
--- a/drivers/char/random.c
+++ b/drivers/char/random.c
-@@ -859,14 +859,6 @@ void __init random_init_early(const char *command_line)
+@@ -859,14 +859,6 @@ void __init random_init_early(const char
unsigned long entropy[BLAKE2S_BLOCK_SIZE / sizeof(long)];
size_t i, longs, arch_bits;
#if defined(LATENT_ENTROPY_PLUGIN)
static const u8 compiletime_seed[BLAKE2S_BLOCK_SIZE] __initconst __latent_entropy;
_mix_pool_bytes(compiletime_seed, sizeof(compiletime_seed));
---
-2.54.0
-
drivers/gpu/drm/drm_gem_framebuffer_helper.c | 3 +++
1 file changed, 3 insertions(+)
-diff --git a/drivers/gpu/drm/drm_gem_framebuffer_helper.c b/drivers/gpu/drm/drm_gem_framebuffer_helper.c
-index daa5471365c4..0a20cd22eb90 100644
--- a/drivers/gpu/drm/drm_gem_framebuffer_helper.c
+++ b/drivers/gpu/drm/drm_gem_framebuffer_helper.c
-@@ -182,6 +182,9 @@ int drm_gem_fb_init_with_funcs(struct drm_device *dev,
+@@ -182,6 +182,9 @@ int drm_gem_fb_init_with_funcs(struct dr
goto err_gem_object_put;
}
min_size = (height - 1) * mode_cmd->pitches[i]
+ drm_format_info_min_pitch(info, i, width)
+ mode_cmd->offsets[i];
---
-2.54.0
-
arch/arm64/kernel/cpu_errata.c | 30 ++++++++++++++++++++++++++--
2 files changed, 64 insertions(+), 2 deletions(-)
-diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
-index 5dab74d1f833..92e7ff25e1ab 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
-@@ -1167,6 +1167,42 @@ config ARM64_ERRATUM_4193714
+@@ -1205,6 +1205,42 @@ config ARM64_ERRATUM_4118414
If unsure, say Y.
config CAVIUM_ERRATUM_22375
bool "Cavium erratum 22375, 24313"
default y
-diff --git a/arch/arm64/kernel/cpu_errata.c b/arch/arm64/kernel/cpu_errata.c
-index 6c8c4301d9c6..74719c6551ec 100644
--- a/arch/arm64/kernel/cpu_errata.c
+++ b/arch/arm64/kernel/cpu_errata.c
-@@ -316,7 +316,33 @@ static const struct arm64_cpu_capabilities arm64_repeat_tlbi_list[] = {
- ERRATA_MIDR_RANGE(MIDR_CORTEX_A510, 0, 0, 1, 1),
- },
+@@ -412,7 +412,33 @@ static const struct midr_range workaroun
+ /* Cortex-A53 r0p[01] : ARM errata 819472 */
+ MIDR_REV_RANGE(MIDR_CORTEX_A53, 0, 0, 1),
#endif
- {},
+#ifdef CONFIG_ARM64_ERRATUM_4118414
};
#endif
-@@ -669,7 +695,7 @@ const struct arm64_cpu_capabilities arm64_errata[] = {
- #endif
- #ifdef CONFIG_ARM64_WORKAROUND_REPEAT_TLBI
- {
-- .desc = "Qualcomm erratum 1009, or ARM erratum 1286807, 2441009",
-+ .desc = "Broken broadcast TLBI completion",
- .capability = ARM64_WORKAROUND_REPEAT_TLBI,
- .type = ARM64_CPUCAP_LOCAL_CPU_ERRATUM,
- .matches = cpucap_multi_entry_cap_matches,
---
-2.54.0
-
drivers/watchdog/bcm2835_wdt.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/drivers/watchdog/bcm2835_wdt.c b/drivers/watchdog/bcm2835_wdt.c
-index 1c082494e948..ed4ae9fdf9d2 100644
--- a/drivers/watchdog/bcm2835_wdt.c
+++ b/drivers/watchdog/bcm2835_wdt.c
-@@ -65,7 +65,7 @@ static int bcm2835_wdt_start(struct watchdog_device *wdog)
+@@ -65,7 +65,7 @@ static int bcm2835_wdt_start(struct watc
spin_lock_irqsave(&wdt->lock, flags);
PM_WDOG_TIME_SET), wdt->base + PM_WDOG);
cur = readl_relaxed(wdt->base + PM_RSTC);
writel_relaxed(PM_PASSWORD | (cur & PM_RSTC_WRCFG_CLR) |
---
-2.54.0
-
drivers/gpu/drm/vc4/vc4_hdmi.h | 6 ------
2 files changed, 9 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
-index 607117fca08c..9d7d613e7d1e 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -841,8 +841,6 @@ static void vc4_hdmi_encoder_post_crtc_disable(struct drm_encoder *encoder,
+@@ -841,8 +841,6 @@ static void vc4_hdmi_encoder_post_crtc_d
mutex_lock(&vc4_hdmi->mutex);
if (!drm_dev_enter(drm, &idx))
goto out;
-@@ -1647,7 +1645,6 @@ static void vc4_hdmi_encoder_post_crtc_enable(struct drm_encoder *encoder,
+@@ -1647,7 +1645,6 @@ static void vc4_hdmi_encoder_post_crtc_e
VC4_HDMI_RAM_PACKET_ENABLE);
spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags);
drm_atomic_helper_connector_hdmi_update_infoframes(connector, state);
}
-diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.h b/drivers/gpu/drm/vc4/vc4_hdmi.h
-index a68aeca04583..53847b5808a8 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.h
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.h
-@@ -192,12 +192,6 @@ struct vc4_hdmi {
- */
+@@ -193,12 +193,6 @@ struct vc4_hdmi {
struct drm_display_mode saved_adjusted_mode;
-- /**
+ /**
- * @packet_ram_enabled: Is the HDMI controller packet RAM currently
- * on? Protected by @mutex.
- */
- bool packet_ram_enabled;
-
- /**
+- /**
* @scdc_enabled: Is the HDMI controller currently running with
* the scrambler on? Protected by @mutex.
---
-2.54.0
-
+ */
drivers/gpu/drm/vc4/vc4_hdmi.c | 21 +++++++++++++--------
1 file changed, 13 insertions(+), 8 deletions(-)
-diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
-index 9d7d613e7d1e..980652192e38 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -846,7 +846,7 @@ static void vc4_hdmi_encoder_post_crtc_disable(struct drm_encoder *encoder,
+@@ -846,7 +846,7 @@ static void vc4_hdmi_encoder_post_crtc_d
spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
HDMI_WRITE(HDMI_VID_CTL, HDMI_READ(HDMI_VID_CTL) | VC4_HD_VID_CTL_CLRRGB);
-@@ -1620,9 +1620,6 @@ static void vc4_hdmi_encoder_post_crtc_enable(struct drm_encoder *encoder,
+@@ -1620,9 +1620,6 @@ static void vc4_hdmi_encoder_post_crtc_e
WARN_ONCE(ret, "Timeout waiting for "
"VC4_HDMI_SCHEDULER_CONTROL_HDMI_ACTIVE\n");
} else {
HDMI_WRITE(HDMI_SCHEDULER_CONTROL,
HDMI_READ(HDMI_SCHEDULER_CONTROL) &
~VC4_HDMI_SCHEDULER_CONTROL_MODE_HDMI);
-@@ -1641,9 +1638,6 @@ static void vc4_hdmi_encoder_post_crtc_enable(struct drm_encoder *encoder,
+@@ -1641,9 +1638,6 @@ static void vc4_hdmi_encoder_post_crtc_e
WARN_ON(!(HDMI_READ(HDMI_SCHEDULER_CONTROL) &
VC4_HDMI_SCHEDULER_CONTROL_HDMI_ACTIVE));
spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags);
drm_atomic_helper_connector_hdmi_update_infoframes(connector, state);
-@@ -3104,6 +3098,12 @@ static int vc5_hdmi_init_resources(struct drm_device *drm,
+@@ -3104,6 +3098,12 @@ static int vc5_hdmi_init_resources(struc
static int vc4_hdmi_runtime_suspend(struct device *dev)
{
struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev);
clk_disable_unprepare(vc4_hdmi->audio_clock);
/* we no longer require a minimum clock rate */
-@@ -3116,7 +3116,7 @@ static int vc4_hdmi_runtime_suspend(struct device *dev)
+@@ -3116,7 +3116,7 @@ static int vc4_hdmi_runtime_suspend(stru
static int vc4_hdmi_runtime_resume(struct device *dev)
{
struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev);
u32 __maybe_unused value;
unsigned long rate;
int ret;
-@@ -3164,6 +3164,11 @@ static int vc4_hdmi_runtime_resume(struct device *dev)
+@@ -3164,6 +3164,11 @@ static int vc4_hdmi_runtime_resume(struc
}
#endif
return 0;
err_disable_clk:
---
-2.54.0
-
drivers/media/i2c/tc358743.c | 53 ++++++------------------------------
1 file changed, 9 insertions(+), 44 deletions(-)
-diff --git a/drivers/media/i2c/tc358743.c b/drivers/media/i2c/tc358743.c
-index feb089d8de72..a0ca19359c43 100644
--- a/drivers/media/i2c/tc358743.c
+++ b/drivers/media/i2c/tc358743.c
-@@ -756,7 +756,6 @@ static void tc358743_set_ref_clk(struct v4l2_subdev *sd)
+@@ -756,7 +756,6 @@ static void tc358743_set_ref_clk(struct
static void tc358743_set_csi_color_space(struct v4l2_subdev *sd)
{
struct tc358743_state *state = to_state(sd);
switch (state->mbus_fmt_code) {
case MEDIA_BUS_FMT_UYVY8_1X16:
-@@ -772,17 +771,7 @@ static void tc358743_set_csi_color_space(struct v4l2_subdev *sd)
+@@ -772,17 +771,7 @@ static void tc358743_set_csi_color_space
mutex_unlock(&state->confctl_mutex);
break;
case MEDIA_BUS_FMT_RGB888_1X24:
i2c_wr8_and_or(sd, VOUT_SET2,
~(MASK_SEL422 | MASK_VOUT_422FIL_100) & 0xff,
0x00);
-@@ -1443,26 +1432,11 @@ static int tc358743_log_status(struct v4l2_subdev *sd)
+@@ -1443,26 +1432,11 @@ static int tc358743_log_status(struct v4
v4l2_info(sd, "Stopped: %s\n",
(i2c_rd16(sd, CSI_STATUS) & MASK_S_HLT) ?
"yes" : "no");
v4l2_info(sd, "-----%s status-----\n", is_hdmi(sd) ? "HDMI" : "DVI-D");
v4l2_info(sd, "HDCP encrypted content: %s\n",
-@@ -1799,18 +1773,11 @@ static int tc358743_enum_mbus_code(struct v4l2_subdev *sd,
+@@ -1799,18 +1773,11 @@ static int tc358743_enum_mbus_code(struc
{
switch (code->index) {
case 0:
default:
return -EINVAL;
}
-@@ -1820,7 +1787,6 @@ static int tc358743_enum_mbus_code(struct v4l2_subdev *sd,
+@@ -1820,7 +1787,6 @@ static int tc358743_enum_mbus_code(struc
static u32 tc358743_g_colorspace(u32 code)
{
switch (code) {
case MEDIA_BUS_FMT_RGB888_1X24:
return V4L2_COLORSPACE_SRGB;
case MEDIA_BUS_FMT_UYVY8_1X16:
-@@ -1858,8 +1824,7 @@ static int tc358743_set_fmt(struct v4l2_subdev *sd,
+@@ -1858,8 +1824,7 @@ static int tc358743_set_fmt(struct v4l2_
u32 code = format->format.code; /* is overwritten by get_fmt */
int ret = tc358743_get_fmt(sd, sd_state, format);
code == MEDIA_BUS_FMT_UYVY8_1X16)
format->format.code = code;
format->format.colorspace = tc358743_g_colorspace(format->format.code);
-@@ -2279,7 +2244,7 @@ static int tc358743_probe(struct i2c_client *client)
+@@ -2279,7 +2244,7 @@ static int tc358743_probe(struct i2c_cli
if (err < 0)
goto err_hdl;
sd->dev = &client->dev;
---
-2.54.0
-
.../media/platform/broadcom/bcm2835-unicam.c | 41 +++++++++++++++----
1 file changed, 32 insertions(+), 9 deletions(-)
-diff --git a/drivers/media/platform/broadcom/bcm2835-unicam.c b/drivers/media/platform/broadcom/bcm2835-unicam.c
-index 1fe30149d5e2..c77778a8b5f6 100644
--- a/drivers/media/platform/broadcom/bcm2835-unicam.c
+++ b/drivers/media/platform/broadcom/bcm2835-unicam.c
-@@ -342,12 +342,12 @@ static const struct unicam_format_info unicam_image_formats[] = {
+@@ -342,12 +342,12 @@ static const struct unicam_format_info u
.csi_dt = MIPI_CSI2_DT_RGB565,
}, {
.fourcc = V4L2_PIX_FMT_RGB24, /* rgb */
.depth = 24,
.csi_dt = MIPI_CSI2_DT_RGB888,
}, {
-@@ -2148,22 +2148,45 @@ static int unicam_video_link_validate(struct media_link *link)
+@@ -2148,22 +2148,45 @@ static int unicam_video_link_validate(st
const struct v4l2_pix_format *fmt = &node->fmt.fmt.pix;
const struct unicam_format_info *fmtinfo;
v4l2_field_names[format->field]);
ret = -EPIPE;
}
---
-2.54.0
-
.../media/platform/raspberrypi/rp1-cfe/cfe.c | 23 ++++++++++++++++---
2 files changed, 22 insertions(+), 5 deletions(-)
-diff --git a/drivers/media/platform/raspberrypi/rp1-cfe/cfe-fmts.h b/drivers/media/platform/raspberrypi/rp1-cfe/cfe-fmts.h
-index 7aecf7f83733..e641f2f87887 100644
--- a/drivers/media/platform/raspberrypi/rp1-cfe/cfe-fmts.h
+++ b/drivers/media/platform/raspberrypi/rp1-cfe/cfe-fmts.h
-@@ -62,13 +62,13 @@ static const struct cfe_fmt formats[] = {
+@@ -62,13 +62,13 @@ static const struct cfe_fmt formats[] =
},
{
.fourcc = V4L2_PIX_FMT_RGB24, /* rgb */
.depth = 24,
.csi_dt = MIPI_CSI2_DT_RGB888,
},
-diff --git a/drivers/media/platform/raspberrypi/rp1-cfe/cfe.c b/drivers/media/platform/raspberrypi/rp1-cfe/cfe.c
-index 795601eaa1df..11f5ff17f372 100644
--- a/drivers/media/platform/raspberrypi/rp1-cfe/cfe.c
+++ b/drivers/media/platform/raspberrypi/rp1-cfe/cfe.c
-@@ -1807,13 +1807,30 @@ static int cfe_video_link_validate(struct media_link *link)
+@@ -1807,13 +1807,30 @@ static int cfe_video_link_validate(struc
goto out;
}
} else if (is_csi2_node(node) && is_meta_output_node(node)) {
struct v4l2_meta_format *meta_fmt = &node->meta_fmt.fmt.meta;
const struct cfe_fmt *fmt;
---
-2.54.0
-
.../platform/raspberrypi/rp1_cfe/cfe_fmts.h | 4 +--
2 files changed, 22 insertions(+), 11 deletions(-)
-diff --git a/drivers/media/platform/raspberrypi/rp1_cfe/cfe.c b/drivers/media/platform/raspberrypi/rp1_cfe/cfe.c
-index f4999391563f..3d74a33edc6f 100644
--- a/drivers/media/platform/raspberrypi/rp1_cfe/cfe.c
+++ b/drivers/media/platform/raspberrypi/rp1_cfe/cfe.c
-@@ -1676,7 +1676,6 @@ static int cfe_video_link_validate(struct cfe_node *node,
+@@ -1676,7 +1676,6 @@ static int cfe_video_link_validate(struc
if (is_image_output_node(node)) {
struct v4l2_pix_format *pix_fmt = &node->vid_fmt.fmt.pix;
const struct cfe_fmt *fmt = NULL;
if (remote_fmt->width != pix_fmt->width ||
remote_fmt->height != pix_fmt->height) {
-@@ -1687,17 +1686,29 @@ static int cfe_video_link_validate(struct cfe_node *node,
+@@ -1687,17 +1686,29 @@ static int cfe_video_link_validate(struc
return -EINVAL;
}
} else if (is_csi2_node(node) && is_meta_output_node(node)) {
struct v4l2_meta_format *meta_fmt = &node->meta_fmt.fmt.meta;
const struct cfe_fmt *fmt;
-diff --git a/drivers/media/platform/raspberrypi/rp1_cfe/cfe_fmts.h b/drivers/media/platform/raspberrypi/rp1_cfe/cfe_fmts.h
-index e192f211abde..d4ecb6be80f8 100644
--- a/drivers/media/platform/raspberrypi/rp1_cfe/cfe_fmts.h
+++ b/drivers/media/platform/raspberrypi/rp1_cfe/cfe_fmts.h
-@@ -63,13 +63,13 @@ static const struct cfe_fmt formats[] = {
+@@ -63,13 +63,13 @@ static const struct cfe_fmt formats[] =
},
{
.fourcc = V4L2_PIX_FMT_RGB24, /* rgb */
.depth = 24,
.csi_dt = MIPI_CSI2_DT_RGB888,
},
---
-2.54.0
-
drivers/pwm/pwm-pio-rp1.c | 1 -
1 file changed, 1 deletion(-)
-diff --git a/drivers/pwm/pwm-pio-rp1.c b/drivers/pwm/pwm-pio-rp1.c
-index 4f3d1996ebc8..7e93546b96b1 100644
--- a/drivers/pwm/pwm-pio-rp1.c
+++ b/drivers/pwm/pwm-pio-rp1.c
-@@ -224,7 +224,6 @@ static int pwm_pio_rp1_probe(struct platform_device *pdev)
+@@ -224,7 +224,6 @@ static int pwm_pio_rp1_probe(struct plat
pwm_pio_resolution = (1000u * 1000 * 1000 * pwm_loop_ticks) / clock_get_hz(clk_sys);
chip->ops = &pwm_pio_rp1_ops;
chip->npwm = 1;
platform_set_drvdata(pdev, ppwm);
---
-2.54.0
-
drivers/net/usb/r8152.c | 1 +
1 file changed, 1 insertion(+)
-diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
-index d61074178279..ea1733e3619c 100644
--- a/drivers/net/usb/r8152.c
+++ b/drivers/net/usb/r8152.c
-@@ -10062,6 +10062,7 @@ static const struct usb_device_id rtl8152_table[] = {
+@@ -10174,6 +10174,7 @@ static const struct usb_device_id rtl815
{ USB_DEVICE(VENDOR_ID_DELL, 0xb097) },
{ USB_DEVICE(VENDOR_ID_ASUS, 0x1976) },
{ USB_DEVICE(VENDOR_ID_TRENDNET, 0xe02b) },
{}
};
---
-2.54.0
-
drivers/net/ethernet/cadence/macb_main.c | 20 ++++++++++++--------
2 files changed, 16 insertions(+), 8 deletions(-)
-diff --git a/drivers/net/ethernet/cadence/macb.h b/drivers/net/ethernet/cadence/macb.h
-index bdbafe09714d..d62cfc19f2e5 100644
--- a/drivers/net/ethernet/cadence/macb.h
+++ b/drivers/net/ethernet/cadence/macb.h
@@ -793,6 +793,10 @@
#define MACB_CAPS_PCS 0x01000000
#define MACB_CAPS_HIGH_SPEED 0x02000000
#define MACB_CAPS_CLK_HW_CHG 0x04000000
-diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
-index 423aac02a0d4..cea3ecdb4bb7 100644
--- a/drivers/net/ethernet/cadence/macb_main.c
+++ b/drivers/net/ethernet/cadence/macb_main.c
-@@ -1951,12 +1951,13 @@ static void macb_tx_restart(struct macb_queue *queue)
+@@ -1951,12 +1951,13 @@ static void macb_tx_restart(struct macb_
spin_lock(&bp->lock);
macb_writel(bp, NCR, macb_readl(bp, NCR) | MACB_BIT(TSTART));
spin_unlock(&bp->lock);
out_tx_ptr_unlock:
-@@ -2702,10 +2703,12 @@ static netdev_tx_t macb_start_xmit(struct sk_buff *skb, struct net_device *dev)
+@@ -2702,10 +2703,12 @@ static netdev_tx_t macb_start_xmit(struc
queue->tx_pending = 1;
macb_writel(bp, NCR, macb_readl(bp, NCR) | MACB_BIT(TSTART));
spin_unlock(&bp->lock);
if (CIRC_SPACE(queue->tx_head, queue->tx_tail, bp->tx_ring_size) < 1)
-@@ -5810,6 +5813,7 @@ static const struct macb_config raspberrypi_rp1_config = {
+@@ -5810,6 +5813,7 @@ static const struct macb_config raspberr
.caps = MACB_CAPS_GIGABIT_MODE_AVAILABLE | MACB_CAPS_CLK_HW_CHG |
MACB_CAPS_JUMBO |
MACB_CAPS_GEM_HAS_PTP |
MACB_CAPS_EEE,
.dma_burst_length = 16,
.clk_init = macb_clk_init,
---
-2.54.0
-
drivers/net/ethernet/cadence/macb_main.c | 37 ++++++++++++++----------
1 file changed, 22 insertions(+), 15 deletions(-)
-diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
-index cea3ecdb4bb7..eb4cb37bf116 100644
--- a/drivers/net/ethernet/cadence/macb_main.c
+++ b/drivers/net/ethernet/cadence/macb_main.c
-@@ -2002,24 +2002,31 @@ static int macb_tx_poll(struct napi_struct *napi, int budget)
+@@ -2002,24 +2002,31 @@ static int macb_tx_poll(struct napi_stru
if (work_done < budget && napi_complete_done(napi, work_done)) {
queue_writel(queue, IER, MACB_BIT(TCOMP));
queue_writel(queue, IDR, MACB_BIT(TCOMP));
if (bp->caps & MACB_CAPS_ISR_CLEAR_ON_WRITE)
queue_writel(queue, ISR, MACB_BIT(TCOMP));
---
-2.54.0
-
drivers/net/ethernet/cadence/macb_main.c | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
-diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
-index eb4cb37bf116..ce4f3ff1ca4c 100644
--- a/drivers/net/ethernet/cadence/macb_main.c
+++ b/drivers/net/ethernet/cadence/macb_main.c
-@@ -2075,6 +2075,16 @@ static void macb_tx_stall_watchdog(struct work_struct *work)
+@@ -2075,6 +2075,16 @@ static void macb_tx_stall_watchdog(struc
if (!netif_running(bp->dev))
return;
spin_lock_irqsave(&queue->tx_ptr_lock, flags);
cur_tail = queue->tx_tail;
cur_head = queue->tx_head;
-@@ -2084,13 +2094,14 @@ static void macb_tx_stall_watchdog(struct work_struct *work)
+@@ -2084,13 +2094,14 @@ static void macb_tx_stall_watchdog(struc
spin_unlock_irqrestore(&queue->tx_ptr_lock, flags);
if (stalled) {
schedule_delayed_work(&queue->tx_stall_watchdog_work,
msecs_to_jiffies(MACB_TX_STALL_INTERVAL_MS));
}
---
-2.54.0
-
drivers/misc/rp1-pio.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
-diff --git a/drivers/misc/rp1-pio.c b/drivers/misc/rp1-pio.c
-index 24c1cc5f887b..89fa7f53ca2c 100644
--- a/drivers/misc/rp1-pio.c
+++ b/drivers/misc/rp1-pio.c
@@ -50,7 +50,9 @@
#define HANDLER(_n, _f) \
[_IOC_NR(PIO_IOC_ ## _n)] = { #_n, rp1_pio_ ## _f, _IOC_SIZE(PIO_IOC_ ## _n) }
-@@ -679,6 +681,8 @@ static int rp1_pio_sm_config_xfer_internal(struct rp1_pio_client *client, uint s
+@@ -679,6 +681,8 @@ static int rp1_pio_sm_config_xfer_intern
config.direction = (dir == RP1_PIO_DIR_TO_SM) ? DMA_MEM_TO_DEV : DMA_DEV_TO_MEM;
dma_caps.max_burst = 4;
dma_get_slave_caps(dma->chan, &dma_caps);
if (dir == RP1_PIO_DIR_TO_SM)
config.dst_maxburst = dma_caps.max_burst;
else
-@@ -690,9 +694,11 @@ static int rp1_pio_sm_config_xfer_internal(struct rp1_pio_client *client, uint s
+@@ -690,9 +694,11 @@ static int rp1_pio_sm_config_xfer_intern
set_dmactrl_args.sm = sm;
set_dmactrl_args.is_tx = (dir == RP1_PIO_DIR_TO_SM);
ret = rp1_pio_sm_set_dmactrl(client, &set_dmactrl_args);
if (ret)
---
-2.54.0
-
drivers/misc/rp1-pio.c | 28 +++++++++++++++++++---------
1 file changed, 19 insertions(+), 9 deletions(-)
-diff --git a/drivers/misc/rp1-pio.c b/drivers/misc/rp1-pio.c
-index 89fa7f53ca2c..e9a437bcc0b2 100644
--- a/drivers/misc/rp1-pio.c
+++ b/drivers/misc/rp1-pio.c
-@@ -615,7 +615,7 @@ static int rp1_pio_sm_config_xfer_internal(struct rp1_pio_client *client, uint s
+@@ -615,7 +615,7 @@ static int rp1_pio_sm_config_xfer_intern
struct dma_slave_config config = {};
struct dma_slave_caps dma_caps;
phys_addr_t fifo_addr;
uint32_t dma_mask;
char chan_name[4];
int ret = 0;
-@@ -629,14 +629,17 @@ static int rp1_pio_sm_config_xfer_internal(struct rp1_pio_client *client, uint s
+@@ -629,14 +629,17 @@ static int rp1_pio_sm_config_xfer_intern
dma_mask = 1 << (sm * 2 + dir);
dma->buf_size = buf_size;
/* Round up the allocations */
-@@ -879,13 +882,20 @@ static int rp1_pio_sm_xfer_data32_user(struct rp1_pio_client *client, void *para
+@@ -879,13 +882,20 @@ static int rp1_pio_sm_xfer_data32_user(s
{
struct rp1_pio_sm_xfer_data32_args *args = param;
struct rp1_pio_device *pio = client->pio;
if (args->dir == RP1_PIO_DIR_TO_SM)
return rp1_pio_sm_tx_user(pio, dma, args->data, args->data_bytes);
---
-2.54.0
-
drivers/media/platform/broadcom/bcm2835-unicam.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
-diff --git a/drivers/media/platform/broadcom/bcm2835-unicam.c b/drivers/media/platform/broadcom/bcm2835-unicam.c
-index c77778a8b5f6..d47098b2361d 100644
--- a/drivers/media/platform/broadcom/bcm2835-unicam.c
+++ b/drivers/media/platform/broadcom/bcm2835-unicam.c
-@@ -2162,7 +2162,8 @@ static int unicam_video_link_validate(struct media_link *link)
+@@ -2162,7 +2162,8 @@ static int unicam_video_link_validate(st
* In order to allow the applications using the old behaviour to
* run, let's accept the old combination, but warn about it.
*/
if ((fmt->pixelformat == V4L2_PIX_FMT_BGR24 &&
format->code == MEDIA_BUS_FMT_BGR888_1X24) ||
(fmt->pixelformat == V4L2_PIX_FMT_RGB24 &&
---
-2.54.0
-
drivers/media/platform/raspberrypi/rp1_cfe/cfe.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
-diff --git a/drivers/media/platform/raspberrypi/rp1_cfe/cfe.c b/drivers/media/platform/raspberrypi/rp1_cfe/cfe.c
-index 3d74a33edc6f..295fb8ad4281 100644
--- a/drivers/media/platform/raspberrypi/rp1_cfe/cfe.c
+++ b/drivers/media/platform/raspberrypi/rp1_cfe/cfe.c
-@@ -1694,7 +1694,9 @@ static int cfe_video_link_validate(struct cfe_node *node,
+@@ -1694,7 +1694,9 @@ static int cfe_video_link_validate(struc
return -EINVAL;
}
if ((pix_fmt->pixelformat == V4L2_PIX_FMT_BGR24 &&
remote_fmt->code == MEDIA_BUS_FMT_BGR888_1X24) ||
(pix_fmt->pixelformat == V4L2_PIX_FMT_RGB24 &&
---
-2.54.0
-
drivers/media/platform/raspberrypi/rp1-cfe/cfe.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
-diff --git a/drivers/media/platform/raspberrypi/rp1-cfe/cfe.c b/drivers/media/platform/raspberrypi/rp1-cfe/cfe.c
-index 11f5ff17f372..f6086a162391 100644
--- a/drivers/media/platform/raspberrypi/rp1-cfe/cfe.c
+++ b/drivers/media/platform/raspberrypi/rp1-cfe/cfe.c
-@@ -1815,7 +1815,9 @@ static int cfe_video_link_validate(struct media_link *link)
+@@ -1815,7 +1815,9 @@ static int cfe_video_link_validate(struc
goto out;
}
if ((pix_fmt->pixelformat == V4L2_PIX_FMT_BGR24 &&
source_fmt->code == MEDIA_BUS_FMT_BGR888_1X24) ||
(pix_fmt->pixelformat == V4L2_PIX_FMT_RGB24 &&
---
-2.54.0
-
arch/arm64/kernel/cpu_errata.c | 30 ++--------------------------
2 files changed, 2 insertions(+), 64 deletions(-)
-diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
-index 92e7ff25e1ab..5dab74d1f833 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
-@@ -1167,42 +1167,6 @@ config ARM64_ERRATUM_4193714
+@@ -1205,42 +1205,6 @@ config ARM64_ERRATUM_4118414
If unsure, say Y.
config CAVIUM_ERRATUM_22375
bool "Cavium erratum 22375, 24313"
default y
-diff --git a/arch/arm64/kernel/cpu_errata.c b/arch/arm64/kernel/cpu_errata.c
-index 74719c6551ec..6c8c4301d9c6 100644
--- a/arch/arm64/kernel/cpu_errata.c
+++ b/arch/arm64/kernel/cpu_errata.c
-@@ -316,33 +316,7 @@ static const struct arm64_cpu_capabilities arm64_repeat_tlbi_list[] = {
- ERRATA_MIDR_RANGE(MIDR_CORTEX_A510, 0, 0, 1, 1),
- },
+@@ -412,33 +412,7 @@ static const struct midr_range workaroun
+ /* Cortex-A53 r0p[01] : ARM errata 819472 */
+ MIDR_REV_RANGE(MIDR_CORTEX_A53, 0, 0, 1),
#endif
-#ifdef CONFIG_ARM64_ERRATUM_4118414
- {
};
#endif
-@@ -695,7 +669,7 @@ const struct arm64_cpu_capabilities arm64_errata[] = {
+@@ -725,7 +699,7 @@ const struct arm64_cpu_capabilities arm6
#endif
#ifdef CONFIG_ARM64_WORKAROUND_REPEAT_TLBI
{
.capability = ARM64_WORKAROUND_REPEAT_TLBI,
.type = ARM64_CPUCAP_LOCAL_CPU_ERRATUM,
.matches = cpucap_multi_entry_cap_matches,
---
-2.54.0
-
drivers/gpu/drm/v3d/v3d_gem.c | 8 --------
1 file changed, 8 deletions(-)
-diff --git a/drivers/gpu/drm/v3d/v3d_gem.c b/drivers/gpu/drm/v3d/v3d_gem.c
-index 3d771ff45feb..82fda76a2daf 100644
--- a/drivers/gpu/drm/v3d/v3d_gem.c
+++ b/drivers/gpu/drm/v3d/v3d_gem.c
-@@ -206,14 +206,6 @@ v3d_clean_caches(struct v3d_dev *v3d)
-
- trace_v3d_cache_clean_begin(dev);
+@@ -214,14 +214,6 @@ v3d_clean_caches(struct v3d_dev *v3d)
+ }
+ }
- /* GFXH-1897: Ensure pending flushes complete before writing L2TCACTL */
- if (v3d->ver < V3D_GEN_71) {
V3D_CORE_WRITE(core, V3D_CTL_L2TCACTL, V3D_L2TCACTL_TMUWCF);
if (wait_for(!(V3D_CORE_READ(core, V3D_CTL_L2TCACTL) &
V3D_L2TCACTL_TMUWCF), 100)) {
---
-2.54.0
-
drivers/usb/dwc2/gadget.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
-index a6c2b8de3908..162dc25c5207 100644
--- a/drivers/usb/dwc2/gadget.c
+++ b/drivers/usb/dwc2/gadget.c
-@@ -1087,7 +1087,7 @@ static void dwc2_hsotg_start_req(struct dwc2_hsotg *hsotg,
+@@ -1087,7 +1087,7 @@ static void dwc2_hsotg_start_req(struct
ctrl = dwc2_readl(hsotg, epctrl_reg);
if (index && ctrl & DXEPCTL_STALL) {
return;
}
-@@ -4393,7 +4393,7 @@ static int dwc2_hsotg_ep_sethalt(struct usb_ep *ep, int value, bool now)
+@@ -4393,7 +4393,7 @@ static int dwc2_hsotg_ep_sethalt(struct
u32 epctl;
u32 xfertype;
if (index == 0) {
if (value)
---
-2.54.0
-
3 files changed, 20 insertions(+)
create mode 100644 arch/arm/boot/dts/overlays/sixfab_m1m-overlay.dts
-diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile
-index ea5a30939dca..6c8467188d28 100644
--- a/arch/arm/boot/dts/overlays/Makefile
+++ b/arch/arm/boot/dts/overlays/Makefile
@@ -269,6 +269,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
smi.dtbo \
smi-dev.dtbo \
smi-nand.dtbo \
-diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
-index f74f49cb30fb..17c608e1e9cf 100644
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
-@@ -4822,6 +4822,12 @@ Params: speed SPI bus speed (default 4000000)
+@@ -4822,6 +4822,12 @@ Params: speed SPI bus
reset_pin GPIO pin for RESET (default 27)
Name: smi
Info: Enables the Secondary Memory Interface peripheral. Uses GPIOs 2-25!
Load: dtoverlay=smi
-diff --git a/arch/arm/boot/dts/overlays/sixfab_m1m-overlay.dts b/arch/arm/boot/dts/overlays/sixfab_m1m-overlay.dts
-new file mode 100644
-index 000000000000..bb25571ff970
--- /dev/null
+++ b/arch/arm/boot/dts/overlays/sixfab_m1m-overlay.dts
@@ -0,0 +1,13 @@
+ };
+ };
+};
---
-2.54.0
-
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cyw/core.c | 3 +++
1 file changed, 3 insertions(+)
-diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cyw/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cyw/core.c
-index 4f0ea4347840..87faac6c68ca 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cyw/core.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cyw/core.c
-@@ -221,6 +221,9 @@ brcmf_cyw_external_auth(struct wiphy *wiphy, struct net_device *dev,
+@@ -221,6 +221,9 @@ brcmf_cyw_external_auth(struct wiphy *wi
IEEE80211_MAX_SSID_LEN);
auth_status.ssid_len = cpu_to_le32(params->ssid.ssid_len);
memcpy(auth_status.ssid, params->ssid.ssid, params->ssid.ssid_len);
ret = brcmf_fil_iovar_data_set(ifp, "auth_status", &auth_status,
sizeof(auth_status));
---
-2.54.0
-
drivers/regulator/edatec-panel-regulator.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
-diff --git a/drivers/regulator/edatec-panel-regulator.c b/drivers/regulator/edatec-panel-regulator.c
-index 4227837466cb..fa39f15dd2ef 100644
--- a/drivers/regulator/edatec-panel-regulator.c
+++ b/drivers/regulator/edatec-panel-regulator.c
@@ -38,6 +38,7 @@ enum gpio_signals {
};
static bool ed_readable_reg(struct device *dev, unsigned int reg)
-@@ -64,11 +65,13 @@ static int ed_update_status(struct backlight_device *bl)
+@@ -64,11 +65,13 @@ static int ed_update_status(struct backl
int bl_power = props->power;
int ret;
return ret;
}
-@@ -146,6 +149,7 @@ static int ed_i2c_probe(struct i2c_client *i2c)
+@@ -146,6 +149,7 @@ static int ed_i2c_probe(struct i2c_clien
props.max_brightness = 0xff;
props.brightness = 0xff;
regulator->regmap = regmap;
bl = devm_backlight_device_register(&i2c->dev, dev_name(&i2c->dev),
&i2c->dev, regulator, &ed_bl, &props);
---
-2.54.0
-
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cyw/core.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
-diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cyw/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cyw/core.c
-index 87faac6c68ca..e44f3b0e1b07 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cyw/core.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cyw/core.c
@@ -2,6 +2,7 @@
static int brcmf_cyw_set_sae_pwd(struct brcmf_if *ifp,
struct cfg80211_crypto_settings *crypto)
{
-@@ -124,7 +127,7 @@ int brcmf_cyw_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev,
+@@ -124,7 +127,7 @@ int brcmf_cyw_mgmt_tx(struct wiphy *wiph
if (!ieee80211_is_auth(mgmt->frame_control))
return brcmf_cfg80211_mgmt_tx(wiphy, wdev, params, cookie);
vif = container_of(wdev, struct brcmf_cfg80211_vif, wdev);
reinit_completion(&vif->mgmt_tx);
---
-2.54.0
-
drivers/spi/spi-dw-core.c | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
-diff --git a/drivers/spi/spi-dw-core.c b/drivers/spi/spi-dw-core.c
-index b73aea4c2535..bb6989b4b618 100644
--- a/drivers/spi/spi-dw-core.c
+++ b/drivers/spi/spi-dw-core.c
-@@ -503,13 +503,7 @@ static int dw_spi_transfer_one(struct spi_controller *host,
+@@ -503,13 +503,7 @@ static int dw_spi_transfer_one(struct sp
if (!dws->rx) {
dws->rx_len = 0;
cfg.tmode = DW_SPI_CTRLR0_TMOD_TO;
dws->tx_len = 0;
cfg.tmode = DW_SPI_CTRLR0_TMOD_RO;
cfg.ndf = dws->rx_len;
---
-2.54.0
-
arch/arm/boot/dts/overlays/overlay_map.dts | 4 ++++
1 file changed, 4 insertions(+)
-diff --git a/arch/arm/boot/dts/overlays/overlay_map.dts b/arch/arm/boot/dts/overlays/overlay_map.dts
-index 6d0e12773ca9..e0e30789a41d 100644
--- a/arch/arm/boot/dts/overlays/overlay_map.dts
+++ b/arch/arm/boot/dts/overlays/overlay_map.dts
-@@ -210,6 +210,10 @@ mpu6050 {
+@@ -210,6 +210,10 @@
deprecated = "use i2c-sensor,mpu6050";
};
pcie-32bit-dma {
bcm2711;
bcm2712 = "pcie-32bit-dma-pi5";
---
-2.54.0
-
drivers/mmc/core/card.h | 10 +-
3 files changed, 7 insertions(+), 7 deletions(-)
-diff --git a/arch/arm64/kernel/cpu_errata.c b/arch/arm64/kernel/cpu_errata.c
-index 3880e417c..30595bdad 100644
--- a/arch/arm64/kernel/cpu_errata.c
+++ b/arch/arm64/kernel/cpu_errata.c
-@@ -699,7 +699,7 @@ const struct arm64_cpu_capabilities arm64_errata[] = {
+@@ -699,7 +699,7 @@ const struct arm64_cpu_capabilities arm6
#endif
#ifdef CONFIG_ARM64_WORKAROUND_REPEAT_TLBI
{
.capability = ARM64_WORKAROUND_REPEAT_TLBI,
.type = ARM64_CPUCAP_LOCAL_CPU_ERRATUM,
.matches = cpucap_multi_entry_cap_matches,
-diff --git a/drivers/gpu/drm/v3d/v3d_submit.c b/drivers/gpu/drm/v3d/v3d_submit.c
-index 7f74d8caf..0d46578ba 100644
--- a/drivers/gpu/drm/v3d/v3d_submit.c
+++ b/drivers/gpu/drm/v3d/v3d_submit.c
-@@ -1350,7 +1350,7 @@ v3d_submit_cpu_ioctl(struct drm_device *dev, void *data,
+@@ -1350,7 +1350,7 @@ v3d_submit_cpu_ioctl(struct drm_device *
trace_v3d_submit_cpu_ioctl(&v3d->drm, cpu_job->job_type);
ret = v3d_job_init(v3d, file_priv, &cpu_job->base,
if (ret) {
v3d_job_deallocate((void *)&cpu_job);
goto fail;
-diff --git a/drivers/mmc/core/card.h b/drivers/mmc/core/card.h
-index 573d93101..b9dd6e720 100644
--- a/drivers/mmc/core/card.h
+++ b/drivers/mmc/core/card.h
-@@ -309,6 +309,11 @@ static inline int mmc_card_no_uhs_ddr50_tuning(const struct mmc_card *c)
+@@ -309,6 +309,11 @@ static inline int mmc_card_no_uhs_ddr50_
return c->quirks & MMC_QUIRK_NO_UHS_DDR50_TUNING;
}
static inline int mmc_card_broken_mdt(const struct mmc_card *c)
{
return c->quirks & MMC_QUIRK_BROKEN_MDT;
-@@ -319,9 +324,4 @@ static inline int mmc_card_fixed_secure_erase_trim_time(const struct mmc_card *c
+@@ -319,9 +324,4 @@ static inline int mmc_card_fixed_secure_
return c->quirks & MMC_QUIRK_FIXED_SECURE_ERASE_TRIM_TIME;
}
-}
-
#endif
---
-2.54.0
-