Merge branch 'dt/linus' into dt/next
Pick a fix which didn't make it into v5.16.
This commit is contained in:
Коммит
e623611b4d
|
@ -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>;
|
||||
|
|
|
@ -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>;
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -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
|
||||
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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>;
|
||||
|
|
10
Makefile
10
Makefile
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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... ");
|
||||
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
@ -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) {}
|
||||
|
|
Загрузка…
Ссылка в новой задаче