Skip to content

Commit

Permalink
Merge branch 'dt/linus' into dt/next
Browse files Browse the repository at this point in the history
Pick a fix which didn't make it into v5.16.
  • Loading branch information
Rob Herring committed Jan 12, 2022
2 parents 785576c + b398123 commit e623611
Show file tree
Hide file tree
Showing 10 changed files with 63 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ examples:
samsung,syscon-phandle = <&pmu_system_controller>;
/* NTC thermistor is a hwmon device */
ncp15wb473 {
thermistor {
compatible = "murata,ncp15wb473";
pullup-uv = <1800000>;
pullup-ohm = <47000>;
Expand Down
2 changes: 1 addition & 1 deletion Documentation/devicetree/bindings/input/gpio-keys.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ examples:
down {
label = "GPIO Key DOWN";
linux,code = <108>;
interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>;
interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
};
};
Expand Down
14 changes: 2 additions & 12 deletions Documentation/devicetree/bindings/media/nxp,imx7-mipi-csi2.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,8 @@ properties:

properties:
data-lanes:
description:
Note that 'fsl,imx7-mipi-csi2' only supports up to 2 data lines.
items:
minItems: 1
maxItems: 4
Expand All @@ -91,18 +93,6 @@ properties:
required:
- data-lanes

allOf:
- if:
properties:
compatible:
contains:
const: fsl,imx7-mipi-csi2
then:
properties:
data-lanes:
items:
maxItems: 2

port@1:
$ref: /schemas/graph.yaml#/properties/port
description:
Expand Down
8 changes: 8 additions & 0 deletions Documentation/devicetree/bindings/net/ethernet-phy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,14 @@ properties:
compensate for the board being designed with the lanes
swapped.

enet-phy-lane-no-swap:
$ref: /schemas/types.yaml#/definitions/flag
description:
If set, indicates that PHY will disable swap of the
TX/RX lanes. This property allows the PHY to work correcly after
e.g. wrong bootstrap configuration caused by issues in PCB
layout design.

eee-broken-100tx:
$ref: /schemas/types.yaml#/definitions/flag
description:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ examples:
reg = <0x65>;
interrupt-parent = <&gpio1>;
interrupts = <16 IRQ_TYPE_EDGE_FALLING>;
ti,watchdog-timer = <0>;
ti,watchdog-timeout-ms = <0>;
ti,sc-ocp-limit-microamp = <2000000>;
ti,sc-ovp-limit-microvolt = <17800000>;
monitored-battery = <&bat>;
Expand Down
10 changes: 5 additions & 5 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -1374,17 +1374,17 @@ endif

ifneq ($(dtstree),)

%.dtb: dt_binding_check include/config/kernel.release scripts_dtc
$(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ $(dtstree)/$*.dt.yaml
%.dtb: include/config/kernel.release scripts_dtc
$(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@

%.dtbo: dt_binding_check include/config/kernel.release scripts_dtc
$(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ $(dtstree)/$*.dt.yaml
%.dtbo: include/config/kernel.release scripts_dtc
$(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@

PHONY += dtbs dtbs_install dtbs_check
dtbs: include/config/kernel.release scripts_dtc
$(Q)$(MAKE) $(build)=$(dtstree)

ifneq ($(filter dtbs_check %.dtb %.dtbo, $(MAKECMDGOALS)),)
ifneq ($(filter dtbs_check, $(MAKECMDGOALS)),)
export CHECK_DTBS=y
dtbs: dt_binding_check
endif
Expand Down
5 changes: 5 additions & 0 deletions drivers/firmware/efi/efi-init.c
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,11 @@ void __init efi_init(void)
}

reserve_regions();
/*
* For memblock manipulation, the cap should come after the memblock_add().
* And now, memblock is fully populated, it is time to do capping.
*/
early_init_dt_check_for_usable_mem_range();
efi_esrt_init();
efi_mokvar_table_init();

Expand Down
19 changes: 13 additions & 6 deletions drivers/of/fdt.c
Original file line number Diff line number Diff line change
Expand Up @@ -967,18 +967,22 @@ static void __init early_init_dt_check_for_elfcorehdr(unsigned long node)
elfcorehdr_addr, elfcorehdr_size);
}

static phys_addr_t cap_mem_addr;
static phys_addr_t cap_mem_size;
static unsigned long chosen_node_offset = -FDT_ERR_NOTFOUND;

/**
* early_init_dt_check_for_usable_mem_range - Decode usable memory range
* location from flat tree
* @node: reference to node containing usable memory range location ('chosen')
*/
static void __init early_init_dt_check_for_usable_mem_range(unsigned long node)
void __init early_init_dt_check_for_usable_mem_range(void)
{
const __be32 *prop;
int len;
phys_addr_t cap_mem_addr;
phys_addr_t cap_mem_size;
unsigned long node = chosen_node_offset;

if ((long)node < 0)
return;

pr_debug("Looking for usable-memory-range property... ");

Expand All @@ -991,6 +995,8 @@ static void __init early_init_dt_check_for_usable_mem_range(unsigned long node)

pr_debug("cap_mem_start=%pa cap_mem_size=%pa\n", &cap_mem_addr,
&cap_mem_size);

memblock_cap_memory_range(cap_mem_addr, cap_mem_size);
}

#ifdef CONFIG_SERIAL_EARLYCON
Expand Down Expand Up @@ -1143,9 +1149,10 @@ int __init early_init_dt_scan_chosen(char *cmdline)
if (node < 0)
return -ENOENT;

chosen_node_offset = node;

early_init_dt_check_for_initrd(node);
early_init_dt_check_for_elfcorehdr(node);
early_init_dt_check_for_usable_mem_range(node);

/* Retrieve command line */
p = of_get_flat_dt_prop(node, "bootargs", &l);
Expand Down Expand Up @@ -1280,7 +1287,7 @@ void __init early_init_dt_scan_nodes(void)
early_init_dt_scan_memory();

/* Handle linux,usable-memory-range property */
memblock_cap_memory_range(cap_mem_addr, cap_mem_size);
early_init_dt_check_for_usable_mem_range();
}

bool __init early_init_dt_scan(void *params)
Expand Down
27 changes: 25 additions & 2 deletions drivers/of/irq.c
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,26 @@ struct device_node *of_irq_find_parent(struct device_node *child)
}
EXPORT_SYMBOL_GPL(of_irq_find_parent);

/*
* These interrupt controllers abuse interrupt-map for unspeakable
* reasons and rely on the core code to *ignore* it (the drivers do
* their own parsing of the property).
*
* If you think of adding to the list for something *new*, think
* again. There is a high chance that you will be sent back to the
* drawing board.
*/
static const char * const of_irq_imap_abusers[] = {
"CBEA,platform-spider-pic",
"sti,platform-spider-pic",
"realtek,rtl-intc",
"fsl,ls1021a-extirq",
"fsl,ls1043a-extirq",
"fsl,ls1088a-extirq",
"renesas,rza1-irqc",
NULL,
};

/**
* of_irq_parse_raw - Low level interrupt tree parsing
* @addr: address specifier (start of "reg" property of the device) in be32 format
Expand Down Expand Up @@ -159,12 +179,15 @@ int of_irq_parse_raw(const __be32 *addr, struct of_phandle_args *out_irq)
/*
* Now check if cursor is an interrupt-controller and
* if it is then we are done, unless there is an
* interrupt-map which takes precedence.
* interrupt-map which takes precedence except on one
* of these broken platforms that want to parse
* interrupt-map themselves for $reason.
*/
bool intc = of_property_read_bool(ipar, "interrupt-controller");

imap = of_get_property(ipar, "interrupt-map", &imaplen);
if (imap == NULL && intc) {
if (intc &&
(!imap || of_device_compatible_match(ipar, of_irq_imap_abusers))) {
pr_debug(" -> got it !\n");
return 0;
}
Expand Down
2 changes: 2 additions & 0 deletions include/linux/of_fdt.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ extern uint32_t of_get_flat_dt_phandle(unsigned long node);

extern int early_init_dt_scan_chosen(char *cmdline);
extern int early_init_dt_scan_memory(void);
extern void early_init_dt_check_for_usable_mem_range(void);
extern int early_init_dt_scan_chosen_stdout(void);
extern void early_init_fdt_scan_reserved_mem(void);
extern void early_init_fdt_reserve_self(void);
Expand All @@ -83,6 +84,7 @@ extern void unflatten_and_copy_device_tree(void);
extern void early_init_devtree(void *);
extern void early_get_first_memblock_info(void *, phys_addr_t *);
#else /* CONFIG_OF_EARLY_FLATTREE */
static inline void early_init_dt_check_for_usable_mem_range(void) {}
static inline int early_init_dt_scan_chosen_stdout(void) { return -ENODEV; }
static inline void early_init_fdt_scan_reserved_mem(void) {}
static inline void early_init_fdt_reserve_self(void) {}
Expand Down

0 comments on commit e623611

Please sign in to comment.