Skip to content
/ linux Public
forked from torvalds/linux

Commit

Permalink
Merge tag 'devicetree-fixes-for-6.12-1' of git://git.kernel.org/pub/s…
Browse files Browse the repository at this point in the history
…cm/linux/kernel/git/robh/linux

Pull devicetree fixes from Rob Herring:

 - Disable kunit tests for arm64+ACPI

 - Fix refcount issue in kunit tests

 - Drop constraints on non-conformant 'interrupt-map' in fsl,ls-extirq

 - Drop type ref on 'msi-parent in fsl,qoriq-mc binding

 - Move elgin,jg10309-01 to its own binding from trivial-devices

* tag 'devicetree-fixes-for-6.12-1' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux:
  of: Skip kunit tests when arm64+ACPI doesn't populate root node
  of: Fix unbalanced of node refcount and memory leaks
  dt-bindings: interrupt-controller: fsl,ls-extirq: workaround wrong interrupt-map number
  dt-bindings: misc: fsl,qoriq-mc: remove ref for msi-parent
  dt-bindings: display: elgin,jg10309-01: Add own binding
  • Loading branch information
torvalds committed Oct 11, 2024
2 parents 9066258 + 6e0391e commit 974099e
Show file tree
Hide file tree
Showing 8 changed files with 103 additions and 7 deletions.
54 changes: 54 additions & 0 deletions Documentation/devicetree/bindings/display/elgin,jg10309-01.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/elgin,jg10309-01.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Elgin JG10309-01 SPI-controlled display

maintainers:
- Fabio Estevam <[email protected]>

description: |
The Elgin JG10309-01 SPI-controlled display is used on the RV1108-Elgin-r1
board and is a custom display.
allOf:
- $ref: /schemas/spi/spi-peripheral-props.yaml#

properties:
compatible:
const: elgin,jg10309-01

reg:
maxItems: 1

spi-max-frequency:
maximum: 24000000

spi-cpha: true

spi-cpol: true

required:
- compatible
- reg
- spi-cpha
- spi-cpol

additionalProperties: false

examples:
- |
spi {
#address-cells = <1>;
#size-cells = <0>;
display@0 {
compatible = "elgin,jg10309-01";
reg = <0>;
spi-max-frequency = <24000000>;
spi-cpha;
spi-cpol;
};
};
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,6 @@ allOf:
enum:
- fsl,ls1043a-extirq
- fsl,ls1046a-extirq
- fsl,ls1088a-extirq
- fsl,ls2080a-extirq
- fsl,lx2160a-extirq
then:
properties:
interrupt-map:
Expand All @@ -95,6 +92,29 @@ allOf:
- const: 0xf
- const: 0

- if:
properties:
compatible:
contains:
enum:
- fsl,ls1088a-extirq
- fsl,ls2080a-extirq
- fsl,lx2160a-extirq
# The driver(drivers/irqchip/irq-ls-extirq.c) have not use standard DT
# function to parser interrupt-map. So it doesn't consider '#address-size'
# in parent interrupt controller, such as GIC.
#
# When dt-binding verify interrupt-map, item data matrix is spitted at
# incorrect position. Remove interrupt-map restriction because it always
# wrong.

then:
properties:
interrupt-map-mask:
items:
- const: 0xf
- const: 0

additionalProperties: false

examples:
Expand Down
2 changes: 1 addition & 1 deletion Documentation/devicetree/bindings/misc/fsl,qoriq-mc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ properties:
msi-parent:
deprecated: true
$ref: /schemas/types.yaml#/definitions/phandle
maxItems: 1
description:
Describes the MSI controller node handling message
interrupts for the MC. When there is no translation
Expand Down
2 changes: 0 additions & 2 deletions Documentation/devicetree/bindings/trivial-devices.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,6 @@ properties:
- domintech,dmard09
# DMARD10: 3-axis Accelerometer
- domintech,dmard10
# Elgin SPI-controlled LCD
- elgin,jg10309-01
# MMA7660FC: 3-Axis Orientation/Motion Detection Sensor
- fsl,mma7660
# MMA8450Q: Xtrinsic Low-power, 3-axis Xtrinsic Accelerometer
Expand Down
15 changes: 15 additions & 0 deletions drivers/of/of_kunit_helpers.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,19 @@
#include <kunit/test.h>
#include <kunit/resource.h>

#include "of_private.h"

/**
* of_root_kunit_skip() - Skip test if the root node isn't populated
* @test: test to skip if the root node isn't populated
*/
void of_root_kunit_skip(struct kunit *test)
{
if (IS_ENABLED(CONFIG_ARM64) && IS_ENABLED(CONFIG_ACPI) && !of_root)
kunit_skip(test, "arm64+acpi doesn't populate a root node");
}
EXPORT_SYMBOL_GPL(of_root_kunit_skip);

#if defined(CONFIG_OF_OVERLAY) && defined(CONFIG_OF_EARLY_FLATTREE)

static void of_overlay_fdt_apply_kunit_exit(void *ovcs_id)
Expand All @@ -36,6 +49,8 @@ int of_overlay_fdt_apply_kunit(struct kunit *test, void *overlay_fdt,
int ret;
int *copy_id;

of_root_kunit_skip(test);

copy_id = kunit_kmalloc(test, sizeof(*copy_id), GFP_KERNEL);
if (!copy_id)
return -ENOMEM;
Expand Down
3 changes: 3 additions & 0 deletions drivers/of/of_private.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@ extern raw_spinlock_t devtree_lock;
extern struct list_head aliases_lookup;
extern struct kset *of_kset;

struct kunit;
extern void of_root_kunit_skip(struct kunit *test);

#if defined(CONFIG_OF_DYNAMIC)
extern int of_property_notify(int action, struct device_node *np,
struct property *prop, struct property *old_prop);
Expand Down
3 changes: 3 additions & 0 deletions drivers/of/of_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@

#include <kunit/test.h>

#include "of_private.h"

/*
* Test that the root node "/" can be found by path.
*/
Expand Down Expand Up @@ -36,6 +38,7 @@ static struct kunit_case of_dtb_test_cases[] = {

static int of_dtb_test_init(struct kunit *test)
{
of_root_kunit_skip(test);
if (!IS_ENABLED(CONFIG_OF_EARLY_FLATTREE))
kunit_skip(test, "requires CONFIG_OF_EARLY_FLATTREE");

Expand Down
5 changes: 4 additions & 1 deletion drivers/of/overlay_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
#include <kunit/of.h>
#include <kunit/test.h>

#include "of_private.h"

static const char * const kunit_node_name = "kunit-test";
static const char * const kunit_compatible = "test,empty";

Expand Down Expand Up @@ -62,6 +64,7 @@ static void of_overlay_apply_kunit_cleanup(struct kunit *test)
struct device *dev;
struct device_node *np;

of_root_kunit_skip(test);
if (!IS_ENABLED(CONFIG_OF_EARLY_FLATTREE))
kunit_skip(test, "requires CONFIG_OF_EARLY_FLATTREE for root node");

Expand All @@ -73,7 +76,7 @@ static void of_overlay_apply_kunit_cleanup(struct kunit *test)

np = of_find_node_by_name(NULL, kunit_node_name);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, np);
of_node_put_kunit(test, np);
of_node_put_kunit(&fake, np);

pdev = of_find_device_by_node(np);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, pdev);
Expand Down

0 comments on commit 974099e

Please sign in to comment.