From: Linus Torvalds <torvalds@linux-foundation.org>
Date: Fri, 1 Sep 2023 16:53:54 +0000 (-0700)
Subject: Merge tag 'char-misc-6.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh... 
X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=1c9f8dff62d85ce00b0e99f774a84bd783af7cac;p=linux.git

Merge tag 'char-misc-6.6-rc1' of git://git./linux/kernel/git/gregkh/char-misc

Pull char/misc driver updates from Greg KH:
 "Here is the big set of char/misc and other small driver subsystem
  changes for 6.6-rc1.

  Stuff all over the place here, lots of driver updates and changes and
  new additions. Short summary is:

   - new IIO drivers and updates

   - Interconnect driver updates

   - fpga driver updates and additions

   - fsi driver updates

   - mei driver updates

   - coresight driver updates

   - nvmem driver updates

   - counter driver updates

   - lots of smaller misc and char driver updates and additions

  All of these have been in linux-next for a long time with no reported
  problems"

* tag 'char-misc-6.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (267 commits)
  nvmem: core: Notify when a new layout is registered
  nvmem: core: Do not open-code existing functions
  nvmem: core: Return NULL when no nvmem layout is found
  nvmem: core: Create all cells before adding the nvmem device
  nvmem: u-boot-env:: Replace zero-length array with DECLARE_FLEX_ARRAY() helper
  nvmem: sec-qfprom: Add Qualcomm secure QFPROM support
  dt-bindings: nvmem: sec-qfprom: Add bindings for secure qfprom
  dt-bindings: nvmem: Add compatible for QCM2290
  nvmem: Kconfig: Fix typo "drive" -> "driver"
  nvmem: Explicitly include correct DT includes
  nvmem: add new NXP QorIQ eFuse driver
  dt-bindings: nvmem: Add t1023-sfp efuse support
  dt-bindings: nvmem: qfprom: Add compatible for MSM8226
  nvmem: uniphier: Use devm_platform_get_and_ioremap_resource()
  nvmem: qfprom: do some cleanup
  nvmem: stm32-romem: Use devm_platform_get_and_ioremap_resource()
  nvmem: rockchip-efuse: Use devm_platform_get_and_ioremap_resource()
  nvmem: meson-mx-efuse: Convert to devm_platform_ioremap_resource()
  nvmem: lpc18xx_otp: Convert to devm_platform_ioremap_resource()
  nvmem: brcm_nvram: Use devm_platform_get_and_ioremap_resource()
  ...
---

1c9f8dff62d85ce00b0e99f774a84bd783af7cac
diff --cc drivers/acpi/arm64/amba.c
index b2a7631d7ac75,0000000000000..60be8ee1dbdc6
mode 100644,000000..100644
--- a/drivers/acpi/arm64/amba.c
+++ b/drivers/acpi/arm64/amba.c
@@@ -1,130 -1,0 +1,129 @@@
 +// SPDX-License-Identifier: GPL-2.0-only
 +
 +/*
 + * ACPI support for platform bus type.
 + *
 + * Copyright (C) 2015, Linaro Ltd
 + * Author: Graeme Gregory <graeme.gregory@linaro.org>
 + */
 +
 +#include <linux/acpi.h>
 +#include <linux/amba/bus.h>
 +#include <linux/clkdev.h>
 +#include <linux/clk-provider.h>
 +#include <linux/device.h>
 +#include <linux/err.h>
 +#include <linux/ioport.h>
 +#include <linux/kernel.h>
 +#include <linux/module.h>
 +
 +#include "init.h"
 +
 +static const struct acpi_device_id amba_id_list[] = {
 +	{"ARMH0061", 0}, /* PL061 GPIO Device */
 +	{"ARMH0330", 0}, /* ARM DMA Controller DMA-330 */
- 	{"ARMHC500", 0}, /* ARM CoreSight ETM4x */
 +	{"ARMHC501", 0}, /* ARM CoreSight ETR */
 +	{"ARMHC502", 0}, /* ARM CoreSight STM */
 +	{"ARMHC503", 0}, /* ARM CoreSight Debug */
 +	{"ARMHC979", 0}, /* ARM CoreSight TPIU */
 +	{"ARMHC97C", 0}, /* ARM CoreSight SoC-400 TMC, SoC-600 ETF/ETB */
 +	{"ARMHC98D", 0}, /* ARM CoreSight Dynamic Replicator */
 +	{"ARMHC9CA", 0}, /* ARM CoreSight CATU */
 +	{"ARMHC9FF", 0}, /* ARM CoreSight Dynamic Funnel */
 +	{"", 0},
 +};
 +
 +static void amba_register_dummy_clk(void)
 +{
 +	static struct clk *amba_dummy_clk;
 +
 +	/* If clock already registered */
 +	if (amba_dummy_clk)
 +		return;
 +
 +	amba_dummy_clk = clk_register_fixed_rate(NULL, "apb_pclk", NULL, 0, 0);
 +	clk_register_clkdev(amba_dummy_clk, "apb_pclk", NULL);
 +}
 +
 +static int amba_handler_attach(struct acpi_device *adev,
 +				const struct acpi_device_id *id)
 +{
 +	struct acpi_device *parent = acpi_dev_parent(adev);
 +	struct amba_device *dev;
 +	struct resource_entry *rentry;
 +	struct list_head resource_list;
 +	bool address_found = false;
 +	int irq_no = 0;
 +	int ret;
 +
 +	/* If the ACPI node already has a physical device attached, skip it. */
 +	if (adev->physical_node_count)
 +		return 0;
 +
 +	dev = amba_device_alloc(dev_name(&adev->dev), 0, 0);
 +	if (!dev) {
 +		dev_err(&adev->dev, "%s(): amba_device_alloc() failed\n",
 +			__func__);
 +		return -ENOMEM;
 +	}
 +
 +	INIT_LIST_HEAD(&resource_list);
 +	ret = acpi_dev_get_resources(adev, &resource_list, NULL, NULL);
 +	if (ret < 0)
 +		goto err_free;
 +
 +	list_for_each_entry(rentry, &resource_list, node) {
 +		switch (resource_type(rentry->res)) {
 +		case IORESOURCE_MEM:
 +			if (!address_found) {
 +				dev->res = *rentry->res;
 +				dev->res.name = dev_name(&dev->dev);
 +				address_found = true;
 +			}
 +			break;
 +		case IORESOURCE_IRQ:
 +			if (irq_no < AMBA_NR_IRQS)
 +				dev->irq[irq_no++] = rentry->res->start;
 +			break;
 +		default:
 +			dev_warn(&adev->dev, "Invalid resource\n");
 +			break;
 +		}
 +	}
 +
 +	acpi_dev_free_resource_list(&resource_list);
 +
 +	/*
 +	 * If the ACPI node has a parent and that parent has a physical device
 +	 * attached to it, that physical device should be the parent of
 +	 * the amba device we are about to create.
 +	 */
 +	if (parent)
 +		dev->dev.parent = acpi_get_first_physical_node(parent);
 +
 +	ACPI_COMPANION_SET(&dev->dev, adev);
 +
 +	ret = amba_device_add(dev, &iomem_resource);
 +	if (ret) {
 +		dev_err(&adev->dev, "%s(): amba_device_add() failed (%d)\n",
 +		       __func__, ret);
 +		goto err_free;
 +	}
 +
 +	return 1;
 +
 +err_free:
 +	amba_device_put(dev);
 +	return ret;
 +}
 +
 +static struct acpi_scan_handler amba_handler = {
 +	.ids = amba_id_list,
 +	.attach = amba_handler_attach,
 +};
 +
 +void __init acpi_amba_init(void)
 +{
 +	amba_register_dummy_clk();
 +	acpi_scan_add_handler(&amba_handler);
 +}