Commit 9b9b6e71 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull SoC fixes from Arnd Bergmann:
 "The main change this time is an update to the MAINTAINERS file,
  listing Krzysztof Kozlowski, Alexandre Belloni, and Linus Walleij as
  additional maintainers for the SoC tree, in order to go back to a
  group maintainership. Drew Fustini joins as an additional reviewer for
  the SoC tree.

  Thanks to all of you for volunteering to help out.

  On the actual bugfixes, we have a few correctness changes for firmware
  drivers (qtee, arm-ffa, scmi) and two devicetree fixes for Raspberry
  Pi"

* tag 'soc-fixes-6.18-2' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc:
  soc: officially expand maintainership team
  firmware: arm_scmi: Fix premature SCMI_XFER_FLAG_IS_RAW clearing in raw mode
  firmware: arm_scmi: Skip RAW initialization on failure
  include: trace: Fix inflight count helper on failed initialization
  firmware: arm_scmi: Account for failed debug initialization
  ARM: dts: broadcom: rpi: Switch to V3D firmware clock
  arm64: dts: broadcom: bcm2712: Define VGIC interrupt
  firmware: arm_ffa: Add support for IMPDEF value in the memory access descriptor
  tee: QCOMTEE should depend on ARCH_QCOM
  tee: qcom: return -EFAULT instead of -EINVAL if copy_from_user() fails
  tee: qcom: prevent potential off by one read
parents 7bd29bf1 b2a578f3
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -1997,6 +1997,10 @@ F: include/uapi/linux/if_arcnet.h
ARM AND ARM64 SoC SUB-ARCHITECTURES (COMMON PARTS)
M:	Arnd Bergmann <arnd@arndb.de>
M:	Krzysztof Kozlowski <krzk@kernel.org>
M:	Alexandre Belloni <alexandre.belloni@bootlin.com>
M:	Linus Walleij <linus.walleij@linaro.org>
R:	Drew Fustini <fustini@kernel.org>
L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
L:	soc@lists.linux.dev
S:	Maintained
+8 −0
Original line number Diff line number Diff line
@@ -77,6 +77,14 @@ &i2c0 {
	/delete-property/ pinctrl-0;
};

&pm {
	clocks = <&firmware_clocks 5>,
		 <&clocks BCM2835_CLOCK_PERI_IMAGE>,
		 <&clocks BCM2835_CLOCK_H264>,
		 <&clocks BCM2835_CLOCK_ISP>;
	clock-names = "v3d", "peri_image", "h264", "isp";
};

&rmem {
	/*
	 * RPi4's co-processor will copy the board's bootloader configuration
+9 −0
Original line number Diff line number Diff line
@@ -13,7 +13,16 @@ &hdmi {
	clock-names = "pixel", "hdmi";
};

&pm {
	clocks = <&firmware_clocks 5>,
		 <&clocks BCM2835_CLOCK_PERI_IMAGE>,
		 <&clocks BCM2835_CLOCK_H264>,
		 <&clocks BCM2835_CLOCK_ISP>;
	clock-names = "v3d", "peri_image", "h264", "isp";
};

&v3d {
	clocks = <&firmware_clocks 5>;
	power-domains = <&power RPI_POWER_DOMAIN_V3D>;
};

+2 −0
Original line number Diff line number Diff line
@@ -326,6 +326,8 @@ gicv2: interrupt-controller@7fff9000 {
			      <0x7fffe000 0x2000>;
			interrupt-controller;
			#address-cells = <0>;
			interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) |
					IRQ_TYPE_LEVEL_HIGH)>;
			#interrupt-cells = <3>;
		};

+27 −10
Original line number Diff line number Diff line
@@ -649,6 +649,26 @@ static u16 ffa_memory_attributes_get(u32 func_id)
	return FFA_MEM_NORMAL | FFA_MEM_WRITE_BACK | FFA_MEM_INNER_SHAREABLE;
}

static void ffa_emad_impdef_value_init(u32 version, void *dst, void *src)
{
	struct ffa_mem_region_attributes *ep_mem_access;

	if (FFA_EMAD_HAS_IMPDEF_FIELD(version))
		memcpy(dst, src, sizeof(ep_mem_access->impdef_val));
}

static void
ffa_mem_region_additional_setup(u32 version, struct ffa_mem_region *mem_region)
{
	if (!FFA_MEM_REGION_HAS_EP_MEM_OFFSET(version)) {
		mem_region->ep_mem_size = 0;
	} else {
		mem_region->ep_mem_size = ffa_emad_size_get(version);
		mem_region->ep_mem_offset = sizeof(*mem_region);
		memset(mem_region->reserved, 0, 12);
	}
}

static int
ffa_setup_and_transmit(u32 func_id, void *buffer, u32 max_fragsize,
		       struct ffa_mem_ops_args *args)
@@ -667,27 +687,24 @@ ffa_setup_and_transmit(u32 func_id, void *buffer, u32 max_fragsize,
	mem_region->flags = args->flags;
	mem_region->sender_id = drv_info->vm_id;
	mem_region->attributes = ffa_memory_attributes_get(func_id);
	ep_mem_access = buffer +
			ffa_mem_desc_offset(buffer, 0, drv_info->version);
	composite_offset = ffa_mem_desc_offset(buffer, args->nattrs,
					       drv_info->version);

	for (idx = 0; idx < args->nattrs; idx++, ep_mem_access++) {
	for (idx = 0; idx < args->nattrs; idx++) {
		ep_mem_access = buffer +
			ffa_mem_desc_offset(buffer, idx, drv_info->version);
		ep_mem_access->receiver = args->attrs[idx].receiver;
		ep_mem_access->attrs = args->attrs[idx].attrs;
		ep_mem_access->composite_off = composite_offset;
		ep_mem_access->flag = 0;
		ep_mem_access->reserved = 0;
		ffa_emad_impdef_value_init(drv_info->version,
					   ep_mem_access->impdef_val,
					   args->attrs[idx].impdef_val);
	}
	mem_region->handle = 0;
	mem_region->ep_count = args->nattrs;
	if (drv_info->version <= FFA_VERSION_1_0) {
		mem_region->ep_mem_size = 0;
	} else {
		mem_region->ep_mem_size = sizeof(*ep_mem_access);
		mem_region->ep_mem_offset = sizeof(*mem_region);
		memset(mem_region->reserved, 0, 12);
	}
	ffa_mem_region_additional_setup(drv_info->version, mem_region);

	composite = buffer + composite_offset;
	composite->total_pg_cnt = ffa_get_num_pages_sg(args->sg);
Loading