summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--arch/arm/lib64/armlinux.c15
-rw-r--r--drivers/pinctrl/pinctrl-single.c2
3 files changed, 15 insertions, 4 deletions
diff --git a/Makefile b/Makefile
index d923463ed5..fe7da86b76 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
VERSION = 2020
-PATCHLEVEL = 02
+PATCHLEVEL = 03
SUBLEVEL = 0
EXTRAVERSION =
NAME = None
diff --git a/arch/arm/lib64/armlinux.c b/arch/arm/lib64/armlinux.c
index 31bd987f10..bcff770793 100644
--- a/arch/arm/lib64/armlinux.c
+++ b/arch/arm/lib64/armlinux.c
@@ -33,6 +33,8 @@
static int do_bootm_linux(struct image_data *data)
{
+ const void *kernel_header =
+ data->os_fit ? data->fit_kernel : data->os_header;
void (*fn)(unsigned long dtb, unsigned long x1, unsigned long x2,
unsigned long x3);
resource_size_t start, end;
@@ -41,8 +43,8 @@ static int do_bootm_linux(struct image_data *data)
int ret;
void *fdt;
- text_offset = le64_to_cpup(data->os_header + 8);
- image_size = le64_to_cpup(data->os_header + 16);
+ text_offset = le64_to_cpup(kernel_header + 8);
+ image_size = le64_to_cpup(kernel_header+ 16);
ret = memory_bank_first_find_space(&start, &end);
if (ret)
@@ -101,6 +103,12 @@ static struct image_handler aarch64_linux_handler = {
.filetype = filetype_arm64_linux_image,
};
+static struct image_handler aarch64_fit_handler = {
+ .name = "FIT image",
+ .bootm = do_bootm_linux,
+ .filetype = filetype_oftree,
+};
+
static int do_bootm_barebox(struct image_data *data)
{
void (*fn)(unsigned long x0, unsigned long x1, unsigned long x2,
@@ -144,6 +152,9 @@ static int aarch64_register_image_handler(void)
register_image_handler(&aarch64_linux_handler);
register_image_handler(&aarch64_barebox_handler);
+ if (IS_ENABLED(CONFIG_FITIMAGE))
+ register_image_handler(&aarch64_fit_handler);
+
return 0;
}
late_initcall(aarch64_register_image_handler);
diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c
index d4f411b4ad..2cd58df931 100644
--- a/drivers/pinctrl/pinctrl-single.c
+++ b/drivers/pinctrl/pinctrl-single.c
@@ -87,8 +87,8 @@ static int pcs_set_state(struct pinctrl_device *pdev, struct device_node *np)
for (i = 0; i < rows; i++) {
offset = be32_to_cpup(mux + index++);
- mask = be32_to_cpup(mux + index++);
val = be32_to_cpup(mux + index++);
+ mask = be32_to_cpup(mux + index++);
reg = pcs->read(pcs->base + offset);
reg &= ~mask;
reg |= val;