From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Google-Smtp-Source: AIpwx49UZP527mrxBOGdEHH/WabWLdaHS1ZKWlG1NEs6z6tmhdp7pMmOP/i5aOIM+3j/zr49Dq2O ARC-Seal: i=1; a=rsa-sha256; t=1524602019; cv=none; d=google.com; s=arc-20160816; b=kOIePkdAC3zo52zvQq+QjUsh2KpGvuM5lKGla60zuw/QvxcAa9Bgkr2sWkETWOeGz0 XvZ1CIUuks8+45fl4n48n1aeFbMulMTdZZS4svLfHUKmaO5WBazC5VYAGgSOeT759sw6 mEsKjmz9YMeIj+YDXHLqFJioGS9oEobqe+3AVCC+cSwKaxFGlEEXUesOtptwpSFxMywq /vMcUlJjS3hyRfVknG5AjVo7m9UkOuYjHfNUsBaa2x9fd9L56Lwle+FHfq+sx1/u9Opd 28pmiJi6pLthOLhRWEXRanfmY9SLyzZIy+kiAbRRNdRJNaHgfbu8nYjKfHo+lK/VOe0c 2owg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :dmarc-filter:arc-authentication-results; bh=UEKyLrxH3lD4zs50VeNuPA5d1CFUDP73VgZoEhhDRN8=; b=yMULyrk2F7bj/R47xu8zqNccGtRzpTrgE8sPRg3ni0dNxkvLow1By3q7I6FkgZW888 K2G0y68mitCuPTBxJ3uaE1RZ+R5alS5xwE2Q7Zehp9arWInUlWtgWDyhQR8sOPxT3UbX lwVLIXhzJY0CUICJ9cd/8PfSkMZ2tG6rbBfOyISIYmyKe4cseLcnFTBWyqX6oKSvvLHi mXTjz+QO64FBIsVP6fLTIrvw9Kj9m7Cn55syNwVjkWHKV5gyVmZmP+/eV/HMh/bfEA/3 /2sghP3VpCDh3HJa6ER/iLvxEz2oDzvknC43VDp0crtSq0F8+XV6D1ISNHZ49NgbRMda 0iBA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of krzk@kernel.org designates 198.145.29.99 as permitted sender) smtp.mailfrom=krzk@kernel.org Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of krzk@kernel.org designates 198.145.29.99 as permitted sender) smtp.mailfrom=krzk@kernel.org DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8B8EA217D9 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=krzk@kernel.org From: Krzysztof Kozlowski To: Kukjin Kim , Krzysztof Kozlowski , Rob Herring , Mark Rutland , Tejun Heo , Sylwester Nawrocki , Tomasz Figa , Chanwoo Choi , Michael Turquette , Stephen Boyd , "Rafael J. Wysocki" , Viresh Kumar , Zhang Rui , Eduardo Valentin , Russell King , Hans de Goede , Linus Walleij , Andi Shyti , Mark Brown , Bartlomiej Zolnierkiewicz , Alan Stern , Greg Kroah-Hartman , linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-ide@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, linux-i2c@vger.kernel.org, linux-gpio@vger.kernel.org, linux-spi@vger.kernel.org, linux-usb@vger.kernel.org Cc: Marek Szyprowski , Arnd Bergmann , Olof Johansson , Jaehoon Chung Subject: [RFC 04/10] clk: samsung: Remove support for Exynos5440 Date: Tue, 24 Apr 2018 22:32:33 +0200 Message-Id: <20180424203239.21885-5-krzk@kernel.org> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180424203239.21885-1-krzk@kernel.org> References: <20180424203239.21885-1-krzk@kernel.org> X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: =?utf-8?q?1598661087387202007?= X-GMAIL-MSGID: =?utf-8?q?1598661087387202007?= X-Mailing-List: linux-kernel@vger.kernel.org List-ID: The Exynos5440 is not actively developed, there are no development boards available and probably there are no real products with it. Remove wide-tree support for Exynos5440. Signed-off-by: Krzysztof Kozlowski --- .../devicetree/bindings/clock/exynos5440-clock.txt | 28 ---- drivers/clk/samsung/Makefile | 1 - drivers/clk/samsung/clk-exynos5440.c | 167 --------------------- include/dt-bindings/clock/exynos5440.h | 44 ------ 4 files changed, 240 deletions(-) delete mode 100644 Documentation/devicetree/bindings/clock/exynos5440-clock.txt delete mode 100644 drivers/clk/samsung/clk-exynos5440.c delete mode 100644 include/dt-bindings/clock/exynos5440.h diff --git a/Documentation/devicetree/bindings/clock/exynos5440-clock.txt b/Documentation/devicetree/bindings/clock/exynos5440-clock.txt deleted file mode 100644 index c7d227c31e95..000000000000 --- a/Documentation/devicetree/bindings/clock/exynos5440-clock.txt +++ /dev/null @@ -1,28 +0,0 @@ -* Samsung Exynos5440 Clock Controller - -The Exynos5440 clock controller generates and supplies clock to various -controllers within the Exynos5440 SoC. - -Required Properties: - -- compatible: should be "samsung,exynos5440-clock". - -- reg: physical base address of the controller and length of memory mapped - region. - -- #clock-cells: should be 1. - -Each clock is assigned an identifier and client nodes can use this identifier -to specify the clock which they consume. - -All available clocks are defined as preprocessor macros in -dt-bindings/clock/exynos5440.h header and can be used in device -tree sources. - -Example: An example of a clock controller node is listed below. - - clock: clock-controller@10010000 { - compatible = "samsung,exynos5440-clock"; - reg = <0x160000 0x10000>; - #clock-cells = <1>; - }; diff --git a/drivers/clk/samsung/Makefile b/drivers/clk/samsung/Makefile index 513826393158..1a4e6b787978 100644 --- a/drivers/clk/samsung/Makefile +++ b/drivers/clk/samsung/Makefile @@ -14,7 +14,6 @@ obj-$(CONFIG_SOC_EXYNOS5410) += clk-exynos5410.o obj-$(CONFIG_SOC_EXYNOS5420) += clk-exynos5420.o obj-$(CONFIG_SOC_EXYNOS5420) += clk-exynos5-subcmu.o obj-$(CONFIG_EXYNOS_ARM64_COMMON_CLK) += clk-exynos5433.o -obj-$(CONFIG_SOC_EXYNOS5440) += clk-exynos5440.o obj-$(CONFIG_EXYNOS_AUDSS_CLK_CON) += clk-exynos-audss.o obj-$(CONFIG_ARCH_EXYNOS) += clk-exynos-clkout.o obj-$(CONFIG_EXYNOS_ARM64_COMMON_CLK) += clk-exynos7.o diff --git a/drivers/clk/samsung/clk-exynos5440.c b/drivers/clk/samsung/clk-exynos5440.c deleted file mode 100644 index b08bd54c5e76..000000000000 --- a/drivers/clk/samsung/clk-exynos5440.c +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd. - * Author: Thomas Abraham - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Common Clock Framework support for Exynos5440 SoC. -*/ - -#include -#include -#include -#include -#include -#include - -#include "clk.h" -#include "clk-pll.h" - -#define CLKEN_OV_VAL 0xf8 -#define CPU_CLK_STATUS 0xfc -#define MISC_DOUT1 0x558 - -static void __iomem *reg_base; - -/* parent clock name list */ -PNAME(mout_armclk_p) = { "cplla", "cpllb" }; -PNAME(mout_spi_p) = { "div125", "div200" }; - -/* fixed rate clocks generated outside the soc */ -static struct samsung_fixed_rate_clock exynos5440_fixed_rate_ext_clks[] __initdata = { - FRATE(0, "xtal", NULL, 0, 0), -}; - -/* fixed rate clocks */ -static const struct samsung_fixed_rate_clock exynos5440_fixed_rate_clks[] __initconst = { - FRATE(0, "ppll", NULL, 0, 1000000000), - FRATE(0, "usb_phy0", NULL, 0, 60000000), - FRATE(0, "usb_phy1", NULL, 0, 60000000), - FRATE(0, "usb_ohci12", NULL, 0, 12000000), - FRATE(0, "usb_ohci48", NULL, 0, 48000000), -}; - -/* fixed factor clocks */ -static const struct samsung_fixed_factor_clock exynos5440_fixed_factor_clks[] __initconst = { - FFACTOR(0, "div250", "ppll", 1, 4, 0), - FFACTOR(0, "div200", "ppll", 1, 5, 0), - FFACTOR(0, "div125", "div250", 1, 2, 0), -}; - -/* mux clocks */ -static const struct samsung_mux_clock exynos5440_mux_clks[] __initconst = { - MUX(0, "mout_spi", mout_spi_p, MISC_DOUT1, 5, 1), - MUX(CLK_ARM_CLK, "arm_clk", mout_armclk_p, CPU_CLK_STATUS, 0, 1), -}; - -/* divider clocks */ -static const struct samsung_div_clock exynos5440_div_clks[] __initconst = { - DIV(CLK_SPI_BAUD, "div_spi", "mout_spi", MISC_DOUT1, 3, 2), -}; - -/* gate clocks */ -static const struct samsung_gate_clock exynos5440_gate_clks[] __initconst = { - GATE(CLK_PB0_250, "pb0_250", "div250", CLKEN_OV_VAL, 3, 0, 0), - GATE(CLK_PR0_250, "pr0_250", "div250", CLKEN_OV_VAL, 4, 0, 0), - GATE(CLK_PR1_250, "pr1_250", "div250", CLKEN_OV_VAL, 5, 0, 0), - GATE(CLK_B_250, "b_250", "div250", CLKEN_OV_VAL, 9, 0, 0), - GATE(CLK_B_125, "b_125", "div125", CLKEN_OV_VAL, 10, 0, 0), - GATE(CLK_B_200, "b_200", "div200", CLKEN_OV_VAL, 11, 0, 0), - GATE(CLK_SATA, "sata", "div200", CLKEN_OV_VAL, 12, 0, 0), - GATE(CLK_USB, "usb", "div200", CLKEN_OV_VAL, 13, 0, 0), - GATE(CLK_GMAC0, "gmac0", "div200", CLKEN_OV_VAL, 14, 0, 0), - GATE(CLK_CS250, "cs250", "div250", CLKEN_OV_VAL, 19, 0, 0), - GATE(CLK_PB0_250_O, "pb0_250_o", "pb0_250", CLKEN_OV_VAL, 3, 0, 0), - GATE(CLK_PR0_250_O, "pr0_250_o", "pr0_250", CLKEN_OV_VAL, 4, 0, 0), - GATE(CLK_PR1_250_O, "pr1_250_o", "pr1_250", CLKEN_OV_VAL, 5, 0, 0), - GATE(CLK_B_250_O, "b_250_o", "b_250", CLKEN_OV_VAL, 9, 0, 0), - GATE(CLK_B_125_O, "b_125_o", "b_125", CLKEN_OV_VAL, 10, 0, 0), - GATE(CLK_B_200_O, "b_200_o", "b_200", CLKEN_OV_VAL, 11, 0, 0), - GATE(CLK_SATA_O, "sata_o", "sata", CLKEN_OV_VAL, 12, 0, 0), - GATE(CLK_USB_O, "usb_o", "usb", CLKEN_OV_VAL, 13, 0, 0), - GATE(CLK_GMAC0_O, "gmac0_o", "gmac", CLKEN_OV_VAL, 14, 0, 0), - GATE(CLK_CS250_O, "cs250_o", "cs250", CLKEN_OV_VAL, 19, 0, 0), -}; - -static const struct of_device_id ext_clk_match[] __initconst = { - { .compatible = "samsung,clock-xtal", .data = (void *)0, }, - {}, -}; - -static int exynos5440_clk_restart_notify(struct notifier_block *this, - unsigned long code, void *unused) -{ - u32 val, status; - - status = readl_relaxed(reg_base + 0xbc); - val = readl_relaxed(reg_base + 0xcc); - val = (val & 0xffff0000) | (status & 0xffff); - writel_relaxed(val, reg_base + 0xcc); - - return NOTIFY_DONE; -} - -/* - * Exynos5440 Clock restart notifier, handles restart functionality - */ -static struct notifier_block exynos5440_clk_restart_handler = { - .notifier_call = exynos5440_clk_restart_notify, - .priority = 128, -}; - -static const struct samsung_pll_clock exynos5440_plls[] __initconst = { - PLL(pll_2550x, CLK_CPLLA, "cplla", "xtal", 0, 0x4c, NULL), - PLL(pll_2550x, CLK_CPLLB, "cpllb", "xtal", 0, 0x50, NULL), -}; - -/* - * Clock aliases for legacy clkdev look-up. - */ -static const struct samsung_clock_alias exynos5440_aliases[] __initconst = { - ALIAS(CLK_ARM_CLK, NULL, "armclk"), -}; - -/* register exynos5440 clocks */ -static void __init exynos5440_clk_init(struct device_node *np) -{ - struct samsung_clk_provider *ctx; - - reg_base = of_iomap(np, 0); - if (!reg_base) { - pr_err("%s: failed to map clock controller registers," - " aborting clock initialization\n", __func__); - return; - } - - ctx = samsung_clk_init(np, reg_base, CLK_NR_CLKS); - - samsung_clk_of_register_fixed_ext(ctx, exynos5440_fixed_rate_ext_clks, - ARRAY_SIZE(exynos5440_fixed_rate_ext_clks), ext_clk_match); - - samsung_clk_register_pll(ctx, exynos5440_plls, - ARRAY_SIZE(exynos5440_plls), ctx->reg_base); - - samsung_clk_register_fixed_rate(ctx, exynos5440_fixed_rate_clks, - ARRAY_SIZE(exynos5440_fixed_rate_clks)); - samsung_clk_register_fixed_factor(ctx, exynos5440_fixed_factor_clks, - ARRAY_SIZE(exynos5440_fixed_factor_clks)); - samsung_clk_register_mux(ctx, exynos5440_mux_clks, - ARRAY_SIZE(exynos5440_mux_clks)); - samsung_clk_register_div(ctx, exynos5440_div_clks, - ARRAY_SIZE(exynos5440_div_clks)); - samsung_clk_register_gate(ctx, exynos5440_gate_clks, - ARRAY_SIZE(exynos5440_gate_clks)); - samsung_clk_register_alias(ctx, exynos5440_aliases, - ARRAY_SIZE(exynos5440_aliases)); - - samsung_clk_of_add_provider(np, ctx); - - if (register_restart_handler(&exynos5440_clk_restart_handler)) - pr_warn("exynos5440 clock can't register restart handler\n"); - - pr_info("Exynos5440: arm_clk = %ldHz\n", _get_rate("arm_clk")); - pr_info("exynos5440 clock initialization complete\n"); -} -CLK_OF_DECLARE(exynos5440_clk, "samsung,exynos5440-clock", exynos5440_clk_init); diff --git a/include/dt-bindings/clock/exynos5440.h b/include/dt-bindings/clock/exynos5440.h deleted file mode 100644 index 842cdc0adff1..000000000000 --- a/include/dt-bindings/clock/exynos5440.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd. - * Author: Andrzej Hajda - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Device Tree binding constants for Exynos5440 clock controller. -*/ - -#ifndef _DT_BINDINGS_CLOCK_EXYNOS_5440_H -#define _DT_BINDINGS_CLOCK_EXYNOS_5440_H - -#define CLK_XTAL 1 -#define CLK_ARM_CLK 2 -#define CLK_CPLLA 3 -#define CLK_CPLLB 4 -#define CLK_SPI_BAUD 16 -#define CLK_PB0_250 17 -#define CLK_PR0_250 18 -#define CLK_PR1_250 19 -#define CLK_B_250 20 -#define CLK_B_125 21 -#define CLK_B_200 22 -#define CLK_SATA 23 -#define CLK_USB 24 -#define CLK_GMAC0 25 -#define CLK_CS250 26 -#define CLK_PB0_250_O 27 -#define CLK_PR0_250_O 28 -#define CLK_PR1_250_O 29 -#define CLK_B_250_O 30 -#define CLK_B_125_O 31 -#define CLK_B_200_O 32 -#define CLK_SATA_O 33 -#define CLK_USB_O 34 -#define CLK_GMAC0_O 35 -#define CLK_CS250_O 36 - -/* must be greater than maximal clock id */ -#define CLK_NR_CLKS 37 - -#endif /* _DT_BINDINGS_CLOCK_EXYNOS_5440_H */ -- 2.14.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [RFC,04/10] clk: samsung: Remove support for Exynos5440 From: Krzysztof Kozlowski Message-Id: <20180424203239.21885-5-krzk@kernel.org> Date: Tue, 24 Apr 2018 22:32:33 +0200 To: Kukjin Kim , Krzysztof Kozlowski , Rob Herring , Mark Rutland , Tejun Heo , Sylwester Nawrocki , Tomasz Figa , Chanwoo Choi , Michael Turquette , Stephen Boyd , "Rafael J. Wysocki" , Viresh Kumar , Zhang Rui , Eduardo Valentin , Russell King , Hans de Goede , Linus Walleij , Andi Shyti , Mark Brown , Bartlomiej Zolnierkiewicz , Alan Stern , Greg Kroah-Hartman , linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-ide@vger.kernel.org, linux-clk@vger.kernel.org, linux-pm@vger.kernel.org, linux-i2c@vger.kernel.org, linux-gpio@vger.kernel.org, linux-spi@vger.kernel.org, linux-usb@vger.kernel.org Cc: Marek Szyprowski , Arnd Bergmann , Olof Johansson , Jaehoon Chung List-ID: VGhlIEV4eW5vczU0NDAgaXMgbm90IGFjdGl2ZWx5IGRldmVsb3BlZCwgdGhlcmUgYXJlIG5vIGRl dmVsb3BtZW50CmJvYXJkcyBhdmFpbGFibGUgYW5kIHByb2JhYmx5IHRoZXJlIGFyZSBubyByZWFs IHByb2R1Y3RzIHdpdGggaXQuClJlbW92ZSB3aWRlLXRyZWUgc3VwcG9ydCBmb3IgRXh5bm9zNTQ0 MC4KClNpZ25lZC1vZmYtYnk6IEtyenlzenRvZiBLb3psb3dza2kgPGtyemtAa2VybmVsLm9yZz4K LS0tCiAuLi4vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9leHlub3M1NDQwLWNsb2NrLnR4dCB8 ICAyOCAtLS0tCiBkcml2ZXJzL2Nsay9zYW1zdW5nL01ha2VmaWxlICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMSAtCiBkcml2ZXJzL2Nsay9zYW1zdW5nL2Nsay1leHlub3M1NDQwLmMgICAgICAg ICAgICAgICB8IDE2NyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGluY2x1ZGUvZHQtYmluZGluZ3Mv Y2xvY2svZXh5bm9zNTQ0MC5oICAgICAgICAgICAgIHwgIDQ0IC0tLS0tLQogNCBmaWxlcyBjaGFu Z2VkLCAyNDAgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlvbi9k ZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2V4eW5vczU0NDAtY2xvY2sudHh0CiBkZWxldGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9jbGsvc2Ftc3VuZy9jbGstZXh5bm9zNTQ0MC5jCiBkZWxldGUgbW9k ZSAxMDA2NDQgaW5jbHVkZS9kdC1iaW5kaW5ncy9jbG9jay9leHlub3M1NDQwLmgKCmRpZmYgLS1n aXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svZXh5bm9zNTQ0MC1j bG9jay50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svZXh5bm9z NTQ0MC1jbG9jay50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3ZDIyN2MzMWU5 NS4uMDAwMDAwMDAwMDAwCi0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9j bG9jay9leHlub3M1NDQwLWNsb2NrLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAK LSogU2Ftc3VuZyBFeHlub3M1NDQwIENsb2NrIENvbnRyb2xsZXIKLQotVGhlIEV4eW5vczU0NDAg Y2xvY2sgY29udHJvbGxlciBnZW5lcmF0ZXMgYW5kIHN1cHBsaWVzIGNsb2NrIHRvIHZhcmlvdXMK LWNvbnRyb2xsZXJzIHdpdGhpbiB0aGUgRXh5bm9zNTQ0MCBTb0MuCi0KLVJlcXVpcmVkIFByb3Bl cnRpZXM6Ci0KLS0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJzYW1zdW5nLGV4eW5vczU0NDAtY2xv Y2siLgotCi0tIHJlZzogcGh5c2ljYWwgYmFzZSBhZGRyZXNzIG9mIHRoZSBjb250cm9sbGVyIGFu ZCBsZW5ndGggb2YgbWVtb3J5IG1hcHBlZAotICByZWdpb24uCi0KLS0gI2Nsb2NrLWNlbGxzOiBz aG91bGQgYmUgMS4KLQotRWFjaCBjbG9jayBpcyBhc3NpZ25lZCBhbiBpZGVudGlmaWVyIGFuZCBj bGllbnQgbm9kZXMgY2FuIHVzZSB0aGlzIGlkZW50aWZpZXIKLXRvIHNwZWNpZnkgdGhlIGNsb2Nr IHdoaWNoIHRoZXkgY29uc3VtZS4KLQotQWxsIGF2YWlsYWJsZSBjbG9ja3MgYXJlIGRlZmluZWQg YXMgcHJlcHJvY2Vzc29yIG1hY3JvcyBpbgotZHQtYmluZGluZ3MvY2xvY2svZXh5bm9zNTQ0MC5o IGhlYWRlciBhbmQgY2FuIGJlIHVzZWQgaW4gZGV2aWNlCi10cmVlIHNvdXJjZXMuCi0KLUV4YW1w bGU6IEFuIGV4YW1wbGUgb2YgYSBjbG9jayBjb250cm9sbGVyIG5vZGUgaXMgbGlzdGVkIGJlbG93 LgotCi0JY2xvY2s6IGNsb2NrLWNvbnRyb2xsZXJAMTAwMTAwMDAgewotCQljb21wYXRpYmxlID0g InNhbXN1bmcsZXh5bm9zNTQ0MC1jbG9jayI7Ci0JCXJlZyA9IDwweDE2MDAwMCAweDEwMDAwPjsK LQkJI2Nsb2NrLWNlbGxzID0gPDE+OwotCX07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay9zYW1z dW5nL01ha2VmaWxlIGIvZHJpdmVycy9jbGsvc2Ftc3VuZy9NYWtlZmlsZQppbmRleCA1MTM4MjYz OTMxNTguLjFhNGU2Yjc4Nzk3OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9jbGsvc2Ftc3VuZy9NYWtl ZmlsZQorKysgYi9kcml2ZXJzL2Nsay9zYW1zdW5nL01ha2VmaWxlCkBAIC0xNCw3ICsxNCw2IEBA IG9iai0kKENPTkZJR19TT0NfRVhZTk9TNTQxMCkJKz0gY2xrLWV4eW5vczU0MTAubwogb2JqLSQo Q09ORklHX1NPQ19FWFlOT1M1NDIwKQkrPSBjbGstZXh5bm9zNTQyMC5vCiBvYmotJChDT05GSUdf U09DX0VYWU5PUzU0MjApCSs9IGNsay1leHlub3M1LXN1YmNtdS5vCiBvYmotJChDT05GSUdfRVhZ Tk9TX0FSTTY0X0NPTU1PTl9DTEspCSs9IGNsay1leHlub3M1NDMzLm8KLW9iai0kKENPTkZJR19T T0NfRVhZTk9TNTQ0MCkJKz0gY2xrLWV4eW5vczU0NDAubwogb2JqLSQoQ09ORklHX0VYWU5PU19B VURTU19DTEtfQ09OKSArPSBjbGstZXh5bm9zLWF1ZHNzLm8KIG9iai0kKENPTkZJR19BUkNIX0VY WU5PUykJKz0gY2xrLWV4eW5vcy1jbGtvdXQubwogb2JqLSQoQ09ORklHX0VYWU5PU19BUk02NF9D T01NT05fQ0xLKQkrPSBjbGstZXh5bm9zNy5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Nsay9zYW1z dW5nL2Nsay1leHlub3M1NDQwLmMgYi9kcml2ZXJzL2Nsay9zYW1zdW5nL2Nsay1leHlub3M1NDQw LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwOGJkNTRjNWU3Ni4uMDAwMDAwMDAw MDAwCi0tLSBhL2RyaXZlcnMvY2xrL3NhbXN1bmcvY2xrLWV4eW5vczU0NDAuYworKysgL2Rldi9u dWxsCkBAIC0xLDE2NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEzIFNhbXN1bmcg RWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0gKiBBdXRob3I6IFRob21hcyBBYnJhaGFtIDx0aG9tYXMu YWJAc2Ftc3VuZy5jb20+Ci0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSAqIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCi0gKiBwdWJs aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KLSAqCi0gKiBDb21tb24gQ2xv Y2sgRnJhbWV3b3JrIHN1cHBvcnQgZm9yIEV4eW5vczU0NDAgU29DLgotKi8KLQotI2luY2x1ZGUg PGR0LWJpbmRpbmdzL2Nsb2NrL2V4eW5vczU0NDAuaD4KLSNpbmNsdWRlIDxsaW51eC9jbGstcHJv dmlkZXIuaD4KLSNpbmNsdWRlIDxsaW51eC9vZi5oPgotI2luY2x1ZGUgPGxpbnV4L29mX2FkZHJl c3MuaD4KLSNpbmNsdWRlIDxsaW51eC9ub3RpZmllci5oPgotI2luY2x1ZGUgPGxpbnV4L3JlYm9v dC5oPgotCi0jaW5jbHVkZSAiY2xrLmgiCi0jaW5jbHVkZSAiY2xrLXBsbC5oIgotCi0jZGVmaW5l IENMS0VOX09WX1ZBTAkJMHhmOAotI2RlZmluZSBDUFVfQ0xLX1NUQVRVUwkJMHhmYwotI2RlZmlu ZSBNSVNDX0RPVVQxCQkweDU1OAotCi1zdGF0aWMgdm9pZCBfX2lvbWVtICpyZWdfYmFzZTsKLQot LyogcGFyZW50IGNsb2NrIG5hbWUgbGlzdCAqLwotUE5BTUUobW91dF9hcm1jbGtfcCkJPSB7ICJj cGxsYSIsICJjcGxsYiIgfTsKLVBOQU1FKG1vdXRfc3BpX3ApCT0geyAiZGl2MTI1IiwgImRpdjIw MCIgfTsKLQotLyogZml4ZWQgcmF0ZSBjbG9ja3MgZ2VuZXJhdGVkIG91dHNpZGUgdGhlIHNvYyAq Lwotc3RhdGljIHN0cnVjdCBzYW1zdW5nX2ZpeGVkX3JhdGVfY2xvY2sgZXh5bm9zNTQ0MF9maXhl ZF9yYXRlX2V4dF9jbGtzW10gX19pbml0ZGF0YSA9IHsKLQlGUkFURSgwLCAieHRhbCIsIE5VTEws IDAsIDApLAotfTsKLQotLyogZml4ZWQgcmF0ZSBjbG9ja3MgKi8KLXN0YXRpYyBjb25zdCBzdHJ1 Y3Qgc2Ftc3VuZ19maXhlZF9yYXRlX2Nsb2NrIGV4eW5vczU0NDBfZml4ZWRfcmF0ZV9jbGtzW10g X19pbml0Y29uc3QgPSB7Ci0JRlJBVEUoMCwgInBwbGwiLCBOVUxMLCAwLCAxMDAwMDAwMDAwKSwK LQlGUkFURSgwLCAidXNiX3BoeTAiLCBOVUxMLCAwLCA2MDAwMDAwMCksCi0JRlJBVEUoMCwgInVz Yl9waHkxIiwgTlVMTCwgMCwgNjAwMDAwMDApLAotCUZSQVRFKDAsICJ1c2Jfb2hjaTEyIiwgTlVM TCwgMCwgMTIwMDAwMDApLAotCUZSQVRFKDAsICJ1c2Jfb2hjaTQ4IiwgTlVMTCwgMCwgNDgwMDAw MDApLAotfTsKLQotLyogZml4ZWQgZmFjdG9yIGNsb2NrcyAqLwotc3RhdGljIGNvbnN0IHN0cnVj dCBzYW1zdW5nX2ZpeGVkX2ZhY3Rvcl9jbG9jayBleHlub3M1NDQwX2ZpeGVkX2ZhY3Rvcl9jbGtz W10gX19pbml0Y29uc3QgPSB7Ci0JRkZBQ1RPUigwLCAiZGl2MjUwIiwgInBwbGwiLCAxLCA0LCAw KSwKLQlGRkFDVE9SKDAsICJkaXYyMDAiLCAicHBsbCIsIDEsIDUsIDApLAotCUZGQUNUT1IoMCwg ImRpdjEyNSIsICJkaXYyNTAiLCAxLCAyLCAwKSwKLX07Ci0KLS8qIG11eCBjbG9ja3MgKi8KLXN0 YXRpYyBjb25zdCBzdHJ1Y3Qgc2Ftc3VuZ19tdXhfY2xvY2sgZXh5bm9zNTQ0MF9tdXhfY2xrc1td IF9faW5pdGNvbnN0ID0gewotCU1VWCgwLCAibW91dF9zcGkiLCBtb3V0X3NwaV9wLCBNSVNDX0RP VVQxLCA1LCAxKSwKLQlNVVgoQ0xLX0FSTV9DTEssICJhcm1fY2xrIiwgbW91dF9hcm1jbGtfcCwg Q1BVX0NMS19TVEFUVVMsIDAsIDEpLAotfTsKLQotLyogZGl2aWRlciBjbG9ja3MgKi8KLXN0YXRp YyBjb25zdCBzdHJ1Y3Qgc2Ftc3VuZ19kaXZfY2xvY2sgZXh5bm9zNTQ0MF9kaXZfY2xrc1tdIF9f aW5pdGNvbnN0ID0gewotCURJVihDTEtfU1BJX0JBVUQsICJkaXZfc3BpIiwgIm1vdXRfc3BpIiwg TUlTQ19ET1VUMSwgMywgMiksCi19OwotCi0vKiBnYXRlIGNsb2NrcyAqLwotc3RhdGljIGNvbnN0 IHN0cnVjdCBzYW1zdW5nX2dhdGVfY2xvY2sgZXh5bm9zNTQ0MF9nYXRlX2Nsa3NbXSBfX2luaXRj b25zdCA9IHsKLQlHQVRFKENMS19QQjBfMjUwLCAicGIwXzI1MCIsICJkaXYyNTAiLCBDTEtFTl9P Vl9WQUwsIDMsIDAsIDApLAotCUdBVEUoQ0xLX1BSMF8yNTAsICJwcjBfMjUwIiwgImRpdjI1MCIs IENMS0VOX09WX1ZBTCwgNCwgMCwgMCksCi0JR0FURShDTEtfUFIxXzI1MCwgInByMV8yNTAiLCAi ZGl2MjUwIiwgQ0xLRU5fT1ZfVkFMLCA1LCAwLCAwKSwKLQlHQVRFKENMS19CXzI1MCwgImJfMjUw IiwgImRpdjI1MCIsIENMS0VOX09WX1ZBTCwgOSwgMCwgMCksCi0JR0FURShDTEtfQl8xMjUsICJi XzEyNSIsICJkaXYxMjUiLCBDTEtFTl9PVl9WQUwsIDEwLCAwLCAwKSwKLQlHQVRFKENMS19CXzIw MCwgImJfMjAwIiwgImRpdjIwMCIsIENMS0VOX09WX1ZBTCwgMTEsIDAsIDApLAotCUdBVEUoQ0xL X1NBVEEsICJzYXRhIiwgImRpdjIwMCIsIENMS0VOX09WX1ZBTCwgMTIsIDAsIDApLAotCUdBVEUo Q0xLX1VTQiwgInVzYiIsICJkaXYyMDAiLCBDTEtFTl9PVl9WQUwsIDEzLCAwLCAwKSwKLQlHQVRF KENMS19HTUFDMCwgImdtYWMwIiwgImRpdjIwMCIsIENMS0VOX09WX1ZBTCwgMTQsIDAsIDApLAot CUdBVEUoQ0xLX0NTMjUwLCAiY3MyNTAiLCAiZGl2MjUwIiwgQ0xLRU5fT1ZfVkFMLCAxOSwgMCwg MCksCi0JR0FURShDTEtfUEIwXzI1MF9PLCAicGIwXzI1MF9vIiwgInBiMF8yNTAiLCBDTEtFTl9P Vl9WQUwsIDMsIDAsIDApLAotCUdBVEUoQ0xLX1BSMF8yNTBfTywgInByMF8yNTBfbyIsICJwcjBf MjUwIiwgQ0xLRU5fT1ZfVkFMLCA0LCAwLCAwKSwKLQlHQVRFKENMS19QUjFfMjUwX08sICJwcjFf MjUwX28iLCAicHIxXzI1MCIsIENMS0VOX09WX1ZBTCwgNSwgMCwgMCksCi0JR0FURShDTEtfQl8y NTBfTywgImJfMjUwX28iLCAiYl8yNTAiLCBDTEtFTl9PVl9WQUwsIDksIDAsIDApLAotCUdBVEUo Q0xLX0JfMTI1X08sICJiXzEyNV9vIiwgImJfMTI1IiwgQ0xLRU5fT1ZfVkFMLCAxMCwgMCwgMCks Ci0JR0FURShDTEtfQl8yMDBfTywgImJfMjAwX28iLCAiYl8yMDAiLCBDTEtFTl9PVl9WQUwsIDEx LCAwLCAwKSwKLQlHQVRFKENMS19TQVRBX08sICJzYXRhX28iLCAic2F0YSIsIENMS0VOX09WX1ZB TCwgMTIsIDAsIDApLAotCUdBVEUoQ0xLX1VTQl9PLCAidXNiX28iLCAidXNiIiwgQ0xLRU5fT1Zf VkFMLCAxMywgMCwgMCksCi0JR0FURShDTEtfR01BQzBfTywgImdtYWMwX28iLCAiZ21hYyIsIENM S0VOX09WX1ZBTCwgMTQsIDAsIDApLAotCUdBVEUoQ0xLX0NTMjUwX08sICJjczI1MF9vIiwgImNz MjUwIiwgQ0xLRU5fT1ZfVkFMLCAxOSwgMCwgMCksCi19OwotCi1zdGF0aWMgY29uc3Qgc3RydWN0 IG9mX2RldmljZV9pZCBleHRfY2xrX21hdGNoW10gX19pbml0Y29uc3QgPSB7Ci0JeyAuY29tcGF0 aWJsZSA9ICJzYW1zdW5nLGNsb2NrLXh0YWwiLCAuZGF0YSA9ICh2b2lkICopMCwgfSwKLQl7fSwK LX07Ci0KLXN0YXRpYyBpbnQgZXh5bm9zNTQ0MF9jbGtfcmVzdGFydF9ub3RpZnkoc3RydWN0IG5v dGlmaWVyX2Jsb2NrICp0aGlzLAotCQl1bnNpZ25lZCBsb25nIGNvZGUsIHZvaWQgKnVudXNlZCkK LXsKLQl1MzIgdmFsLCBzdGF0dXM7Ci0KLQlzdGF0dXMgPSByZWFkbF9yZWxheGVkKHJlZ19iYXNl ICsgMHhiYyk7Ci0JdmFsID0gcmVhZGxfcmVsYXhlZChyZWdfYmFzZSArIDB4Y2MpOwotCXZhbCA9 ICh2YWwgJiAweGZmZmYwMDAwKSB8IChzdGF0dXMgJiAweGZmZmYpOwotCXdyaXRlbF9yZWxheGVk KHZhbCwgcmVnX2Jhc2UgKyAweGNjKTsKLQotCXJldHVybiBOT1RJRllfRE9ORTsKLX0KLQotLyoK LSAqIEV4eW5vczU0NDAgQ2xvY2sgcmVzdGFydCBub3RpZmllciwgaGFuZGxlcyByZXN0YXJ0IGZ1 bmN0aW9uYWxpdHkKLSAqLwotc3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBleHlub3M1NDQw X2Nsa19yZXN0YXJ0X2hhbmRsZXIgPSB7Ci0JLm5vdGlmaWVyX2NhbGwgPSBleHlub3M1NDQwX2Ns a19yZXN0YXJ0X25vdGlmeSwKLQkucHJpb3JpdHkgPSAxMjgsCi19OwotCi1zdGF0aWMgY29uc3Qg c3RydWN0IHNhbXN1bmdfcGxsX2Nsb2NrIGV4eW5vczU0NDBfcGxsc1tdIF9faW5pdGNvbnN0ID0g ewotCVBMTChwbGxfMjU1MHgsIENMS19DUExMQSwgImNwbGxhIiwgInh0YWwiLCAwLCAweDRjLCBO VUxMKSwKLQlQTEwocGxsXzI1NTB4LCBDTEtfQ1BMTEIsICJjcGxsYiIsICJ4dGFsIiwgMCwgMHg1 MCwgTlVMTCksCi19OwotCi0vKgotICogQ2xvY2sgYWxpYXNlcyBmb3IgbGVnYWN5IGNsa2RldiBs b29rLXVwLgotICovCi1zdGF0aWMgY29uc3Qgc3RydWN0IHNhbXN1bmdfY2xvY2tfYWxpYXMgZXh5 bm9zNTQ0MF9hbGlhc2VzW10gX19pbml0Y29uc3QgPSB7Ci0JQUxJQVMoQ0xLX0FSTV9DTEssIE5V TEwsICJhcm1jbGsiKSwKLX07Ci0KLS8qIHJlZ2lzdGVyIGV4eW5vczU0NDAgY2xvY2tzICovCi1z dGF0aWMgdm9pZCBfX2luaXQgZXh5bm9zNTQ0MF9jbGtfaW5pdChzdHJ1Y3QgZGV2aWNlX25vZGUg Km5wKQotewotCXN0cnVjdCBzYW1zdW5nX2Nsa19wcm92aWRlciAqY3R4OwotCi0JcmVnX2Jhc2Ug PSBvZl9pb21hcChucCwgMCk7Ci0JaWYgKCFyZWdfYmFzZSkgewotCQlwcl9lcnIoIiVzOiBmYWls ZWQgdG8gbWFwIGNsb2NrIGNvbnRyb2xsZXIgcmVnaXN0ZXJzLCIKLQkJCSIgYWJvcnRpbmcgY2xv Y2sgaW5pdGlhbGl6YXRpb25cbiIsIF9fZnVuY19fKTsKLQkJcmV0dXJuOwotCX0KLQotCWN0eCA9 IHNhbXN1bmdfY2xrX2luaXQobnAsIHJlZ19iYXNlLCBDTEtfTlJfQ0xLUyk7Ci0KLQlzYW1zdW5n X2Nsa19vZl9yZWdpc3Rlcl9maXhlZF9leHQoY3R4LCBleHlub3M1NDQwX2ZpeGVkX3JhdGVfZXh0 X2Nsa3MsCi0JCUFSUkFZX1NJWkUoZXh5bm9zNTQ0MF9maXhlZF9yYXRlX2V4dF9jbGtzKSwgZXh0 X2Nsa19tYXRjaCk7Ci0KLQlzYW1zdW5nX2Nsa19yZWdpc3Rlcl9wbGwoY3R4LCBleHlub3M1NDQw X3BsbHMsCi0JCQlBUlJBWV9TSVpFKGV4eW5vczU0NDBfcGxscyksIGN0eC0+cmVnX2Jhc2UpOwot Ci0Jc2Ftc3VuZ19jbGtfcmVnaXN0ZXJfZml4ZWRfcmF0ZShjdHgsIGV4eW5vczU0NDBfZml4ZWRf cmF0ZV9jbGtzLAotCQkJQVJSQVlfU0laRShleHlub3M1NDQwX2ZpeGVkX3JhdGVfY2xrcykpOwot CXNhbXN1bmdfY2xrX3JlZ2lzdGVyX2ZpeGVkX2ZhY3RvcihjdHgsIGV4eW5vczU0NDBfZml4ZWRf ZmFjdG9yX2Nsa3MsCi0JCQlBUlJBWV9TSVpFKGV4eW5vczU0NDBfZml4ZWRfZmFjdG9yX2Nsa3Mp KTsKLQlzYW1zdW5nX2Nsa19yZWdpc3Rlcl9tdXgoY3R4LCBleHlub3M1NDQwX211eF9jbGtzLAot CQkJQVJSQVlfU0laRShleHlub3M1NDQwX211eF9jbGtzKSk7Ci0Jc2Ftc3VuZ19jbGtfcmVnaXN0 ZXJfZGl2KGN0eCwgZXh5bm9zNTQ0MF9kaXZfY2xrcywKLQkJCUFSUkFZX1NJWkUoZXh5bm9zNTQ0 MF9kaXZfY2xrcykpOwotCXNhbXN1bmdfY2xrX3JlZ2lzdGVyX2dhdGUoY3R4LCBleHlub3M1NDQw X2dhdGVfY2xrcywKLQkJCUFSUkFZX1NJWkUoZXh5bm9zNTQ0MF9nYXRlX2Nsa3MpKTsKLQlzYW1z dW5nX2Nsa19yZWdpc3Rlcl9hbGlhcyhjdHgsIGV4eW5vczU0NDBfYWxpYXNlcywKLQkJCQkJCUFS UkFZX1NJWkUoZXh5bm9zNTQ0MF9hbGlhc2VzKSk7Ci0KLQlzYW1zdW5nX2Nsa19vZl9hZGRfcHJv dmlkZXIobnAsIGN0eCk7Ci0KLQlpZiAocmVnaXN0ZXJfcmVzdGFydF9oYW5kbGVyKCZleHlub3M1 NDQwX2Nsa19yZXN0YXJ0X2hhbmRsZXIpKQotCQlwcl93YXJuKCJleHlub3M1NDQwIGNsb2NrIGNh bid0IHJlZ2lzdGVyIHJlc3RhcnQgaGFuZGxlclxuIik7Ci0KLQlwcl9pbmZvKCJFeHlub3M1NDQw OiBhcm1fY2xrID0gJWxkSHpcbiIsIF9nZXRfcmF0ZSgiYXJtX2NsayIpKTsKLQlwcl9pbmZvKCJl eHlub3M1NDQwIGNsb2NrIGluaXRpYWxpemF0aW9uIGNvbXBsZXRlXG4iKTsKLX0KLUNMS19PRl9E RUNMQVJFKGV4eW5vczU0NDBfY2xrLCAic2Ftc3VuZyxleHlub3M1NDQwLWNsb2NrIiwgZXh5bm9z NTQ0MF9jbGtfaW5pdCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2R0LWJpbmRpbmdzL2Nsb2NrL2V4 eW5vczU0NDAuaCBiL2luY2x1ZGUvZHQtYmluZGluZ3MvY2xvY2svZXh5bm9zNTQ0MC5oCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NDJjZGMwYWRmZjEuLjAwMDAwMDAwMDAwMAotLS0g YS9pbmNsdWRlL2R0LWJpbmRpbmdzL2Nsb2NrL2V4eW5vczU0NDAuaAorKysgL2Rldi9udWxsCkBA IC0xLDQ0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJv bmljcyBDby4sIEx0ZC4KLSAqIEF1dGhvcjogQW5kcnplaiBIYWpkYSA8YS5oYWpkYUBzYW1zdW5n LmNvbT4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKLSAqIHB1Ymxpc2hlZCBieSB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotICoKLSAqIERldmljZSBUcmVlIGJpbmRpbmcg Y29uc3RhbnRzIGZvciBFeHlub3M1NDQwIGNsb2NrIGNvbnRyb2xsZXIuCi0qLwotCi0jaWZuZGVm IF9EVF9CSU5ESU5HU19DTE9DS19FWFlOT1NfNTQ0MF9ICi0jZGVmaW5lIF9EVF9CSU5ESU5HU19D TE9DS19FWFlOT1NfNTQ0MF9ICi0KLSNkZWZpbmUgQ0xLX1hUQUwJCTEKLSNkZWZpbmUgQ0xLX0FS TV9DTEsJCTIKLSNkZWZpbmUgQ0xLX0NQTExBCQkzCi0jZGVmaW5lIENMS19DUExMQgkJNAotI2Rl ZmluZSBDTEtfU1BJX0JBVUQJCTE2Ci0jZGVmaW5lIENMS19QQjBfMjUwCQkxNwotI2RlZmluZSBD TEtfUFIwXzI1MAkJMTgKLSNkZWZpbmUgQ0xLX1BSMV8yNTAJCTE5Ci0jZGVmaW5lIENMS19CXzI1 MAkJMjAKLSNkZWZpbmUgQ0xLX0JfMTI1CQkyMQotI2RlZmluZSBDTEtfQl8yMDAJCTIyCi0jZGVm aW5lIENMS19TQVRBCQkyMwotI2RlZmluZSBDTEtfVVNCCQkJMjQKLSNkZWZpbmUgQ0xLX0dNQUMw CQkyNQotI2RlZmluZSBDTEtfQ1MyNTAJCTI2Ci0jZGVmaW5lIENMS19QQjBfMjUwX08JCTI3Ci0j ZGVmaW5lIENMS19QUjBfMjUwX08JCTI4Ci0jZGVmaW5lIENMS19QUjFfMjUwX08JCTI5Ci0jZGVm aW5lIENMS19CXzI1MF9PCQkzMAotI2RlZmluZSBDTEtfQl8xMjVfTwkJMzEKLSNkZWZpbmUgQ0xL X0JfMjAwX08JCTMyCi0jZGVmaW5lIENMS19TQVRBX08JCTMzCi0jZGVmaW5lIENMS19VU0JfTwkJ MzQKLSNkZWZpbmUgQ0xLX0dNQUMwX08JCTM1Ci0jZGVmaW5lIENMS19DUzI1MF9PCQkzNgotCi0v KiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBtYXhpbWFsIGNsb2NrIGlkICovCi0jZGVmaW5lIENMS19O Ul9DTEtTCQkzNwotCi0jZW5kaWYgLyogX0RUX0JJTkRJTkdTX0NMT0NLX0VYWU5PU181NDQwX0gg Ki8K From mboxrd@z Thu Jan 1 00:00:00 1970 From: krzk@kernel.org (Krzysztof Kozlowski) Date: Tue, 24 Apr 2018 22:32:33 +0200 Subject: [RFC 04/10] clk: samsung: Remove support for Exynos5440 In-Reply-To: <20180424203239.21885-1-krzk@kernel.org> References: <20180424203239.21885-1-krzk@kernel.org> Message-ID: <20180424203239.21885-5-krzk@kernel.org> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org The Exynos5440 is not actively developed, there are no development boards available and probably there are no real products with it. Remove wide-tree support for Exynos5440. Signed-off-by: Krzysztof Kozlowski --- .../devicetree/bindings/clock/exynos5440-clock.txt | 28 ---- drivers/clk/samsung/Makefile | 1 - drivers/clk/samsung/clk-exynos5440.c | 167 --------------------- include/dt-bindings/clock/exynos5440.h | 44 ------ 4 files changed, 240 deletions(-) delete mode 100644 Documentation/devicetree/bindings/clock/exynos5440-clock.txt delete mode 100644 drivers/clk/samsung/clk-exynos5440.c delete mode 100644 include/dt-bindings/clock/exynos5440.h diff --git a/Documentation/devicetree/bindings/clock/exynos5440-clock.txt b/Documentation/devicetree/bindings/clock/exynos5440-clock.txt deleted file mode 100644 index c7d227c31e95..000000000000 --- a/Documentation/devicetree/bindings/clock/exynos5440-clock.txt +++ /dev/null @@ -1,28 +0,0 @@ -* Samsung Exynos5440 Clock Controller - -The Exynos5440 clock controller generates and supplies clock to various -controllers within the Exynos5440 SoC. - -Required Properties: - -- compatible: should be "samsung,exynos5440-clock". - -- reg: physical base address of the controller and length of memory mapped - region. - -- #clock-cells: should be 1. - -Each clock is assigned an identifier and client nodes can use this identifier -to specify the clock which they consume. - -All available clocks are defined as preprocessor macros in -dt-bindings/clock/exynos5440.h header and can be used in device -tree sources. - -Example: An example of a clock controller node is listed below. - - clock: clock-controller at 10010000 { - compatible = "samsung,exynos5440-clock"; - reg = <0x160000 0x10000>; - #clock-cells = <1>; - }; diff --git a/drivers/clk/samsung/Makefile b/drivers/clk/samsung/Makefile index 513826393158..1a4e6b787978 100644 --- a/drivers/clk/samsung/Makefile +++ b/drivers/clk/samsung/Makefile @@ -14,7 +14,6 @@ obj-$(CONFIG_SOC_EXYNOS5410) += clk-exynos5410.o obj-$(CONFIG_SOC_EXYNOS5420) += clk-exynos5420.o obj-$(CONFIG_SOC_EXYNOS5420) += clk-exynos5-subcmu.o obj-$(CONFIG_EXYNOS_ARM64_COMMON_CLK) += clk-exynos5433.o -obj-$(CONFIG_SOC_EXYNOS5440) += clk-exynos5440.o obj-$(CONFIG_EXYNOS_AUDSS_CLK_CON) += clk-exynos-audss.o obj-$(CONFIG_ARCH_EXYNOS) += clk-exynos-clkout.o obj-$(CONFIG_EXYNOS_ARM64_COMMON_CLK) += clk-exynos7.o diff --git a/drivers/clk/samsung/clk-exynos5440.c b/drivers/clk/samsung/clk-exynos5440.c deleted file mode 100644 index b08bd54c5e76..000000000000 --- a/drivers/clk/samsung/clk-exynos5440.c +++ /dev/null @@ -1,167 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd. - * Author: Thomas Abraham - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Common Clock Framework support for Exynos5440 SoC. -*/ - -#include -#include -#include -#include -#include -#include - -#include "clk.h" -#include "clk-pll.h" - -#define CLKEN_OV_VAL 0xf8 -#define CPU_CLK_STATUS 0xfc -#define MISC_DOUT1 0x558 - -static void __iomem *reg_base; - -/* parent clock name list */ -PNAME(mout_armclk_p) = { "cplla", "cpllb" }; -PNAME(mout_spi_p) = { "div125", "div200" }; - -/* fixed rate clocks generated outside the soc */ -static struct samsung_fixed_rate_clock exynos5440_fixed_rate_ext_clks[] __initdata = { - FRATE(0, "xtal", NULL, 0, 0), -}; - -/* fixed rate clocks */ -static const struct samsung_fixed_rate_clock exynos5440_fixed_rate_clks[] __initconst = { - FRATE(0, "ppll", NULL, 0, 1000000000), - FRATE(0, "usb_phy0", NULL, 0, 60000000), - FRATE(0, "usb_phy1", NULL, 0, 60000000), - FRATE(0, "usb_ohci12", NULL, 0, 12000000), - FRATE(0, "usb_ohci48", NULL, 0, 48000000), -}; - -/* fixed factor clocks */ -static const struct samsung_fixed_factor_clock exynos5440_fixed_factor_clks[] __initconst = { - FFACTOR(0, "div250", "ppll", 1, 4, 0), - FFACTOR(0, "div200", "ppll", 1, 5, 0), - FFACTOR(0, "div125", "div250", 1, 2, 0), -}; - -/* mux clocks */ -static const struct samsung_mux_clock exynos5440_mux_clks[] __initconst = { - MUX(0, "mout_spi", mout_spi_p, MISC_DOUT1, 5, 1), - MUX(CLK_ARM_CLK, "arm_clk", mout_armclk_p, CPU_CLK_STATUS, 0, 1), -}; - -/* divider clocks */ -static const struct samsung_div_clock exynos5440_div_clks[] __initconst = { - DIV(CLK_SPI_BAUD, "div_spi", "mout_spi", MISC_DOUT1, 3, 2), -}; - -/* gate clocks */ -static const struct samsung_gate_clock exynos5440_gate_clks[] __initconst = { - GATE(CLK_PB0_250, "pb0_250", "div250", CLKEN_OV_VAL, 3, 0, 0), - GATE(CLK_PR0_250, "pr0_250", "div250", CLKEN_OV_VAL, 4, 0, 0), - GATE(CLK_PR1_250, "pr1_250", "div250", CLKEN_OV_VAL, 5, 0, 0), - GATE(CLK_B_250, "b_250", "div250", CLKEN_OV_VAL, 9, 0, 0), - GATE(CLK_B_125, "b_125", "div125", CLKEN_OV_VAL, 10, 0, 0), - GATE(CLK_B_200, "b_200", "div200", CLKEN_OV_VAL, 11, 0, 0), - GATE(CLK_SATA, "sata", "div200", CLKEN_OV_VAL, 12, 0, 0), - GATE(CLK_USB, "usb", "div200", CLKEN_OV_VAL, 13, 0, 0), - GATE(CLK_GMAC0, "gmac0", "div200", CLKEN_OV_VAL, 14, 0, 0), - GATE(CLK_CS250, "cs250", "div250", CLKEN_OV_VAL, 19, 0, 0), - GATE(CLK_PB0_250_O, "pb0_250_o", "pb0_250", CLKEN_OV_VAL, 3, 0, 0), - GATE(CLK_PR0_250_O, "pr0_250_o", "pr0_250", CLKEN_OV_VAL, 4, 0, 0), - GATE(CLK_PR1_250_O, "pr1_250_o", "pr1_250", CLKEN_OV_VAL, 5, 0, 0), - GATE(CLK_B_250_O, "b_250_o", "b_250", CLKEN_OV_VAL, 9, 0, 0), - GATE(CLK_B_125_O, "b_125_o", "b_125", CLKEN_OV_VAL, 10, 0, 0), - GATE(CLK_B_200_O, "b_200_o", "b_200", CLKEN_OV_VAL, 11, 0, 0), - GATE(CLK_SATA_O, "sata_o", "sata", CLKEN_OV_VAL, 12, 0, 0), - GATE(CLK_USB_O, "usb_o", "usb", CLKEN_OV_VAL, 13, 0, 0), - GATE(CLK_GMAC0_O, "gmac0_o", "gmac", CLKEN_OV_VAL, 14, 0, 0), - GATE(CLK_CS250_O, "cs250_o", "cs250", CLKEN_OV_VAL, 19, 0, 0), -}; - -static const struct of_device_id ext_clk_match[] __initconst = { - { .compatible = "samsung,clock-xtal", .data = (void *)0, }, - {}, -}; - -static int exynos5440_clk_restart_notify(struct notifier_block *this, - unsigned long code, void *unused) -{ - u32 val, status; - - status = readl_relaxed(reg_base + 0xbc); - val = readl_relaxed(reg_base + 0xcc); - val = (val & 0xffff0000) | (status & 0xffff); - writel_relaxed(val, reg_base + 0xcc); - - return NOTIFY_DONE; -} - -/* - * Exynos5440 Clock restart notifier, handles restart functionality - */ -static struct notifier_block exynos5440_clk_restart_handler = { - .notifier_call = exynos5440_clk_restart_notify, - .priority = 128, -}; - -static const struct samsung_pll_clock exynos5440_plls[] __initconst = { - PLL(pll_2550x, CLK_CPLLA, "cplla", "xtal", 0, 0x4c, NULL), - PLL(pll_2550x, CLK_CPLLB, "cpllb", "xtal", 0, 0x50, NULL), -}; - -/* - * Clock aliases for legacy clkdev look-up. - */ -static const struct samsung_clock_alias exynos5440_aliases[] __initconst = { - ALIAS(CLK_ARM_CLK, NULL, "armclk"), -}; - -/* register exynos5440 clocks */ -static void __init exynos5440_clk_init(struct device_node *np) -{ - struct samsung_clk_provider *ctx; - - reg_base = of_iomap(np, 0); - if (!reg_base) { - pr_err("%s: failed to map clock controller registers," - " aborting clock initialization\n", __func__); - return; - } - - ctx = samsung_clk_init(np, reg_base, CLK_NR_CLKS); - - samsung_clk_of_register_fixed_ext(ctx, exynos5440_fixed_rate_ext_clks, - ARRAY_SIZE(exynos5440_fixed_rate_ext_clks), ext_clk_match); - - samsung_clk_register_pll(ctx, exynos5440_plls, - ARRAY_SIZE(exynos5440_plls), ctx->reg_base); - - samsung_clk_register_fixed_rate(ctx, exynos5440_fixed_rate_clks, - ARRAY_SIZE(exynos5440_fixed_rate_clks)); - samsung_clk_register_fixed_factor(ctx, exynos5440_fixed_factor_clks, - ARRAY_SIZE(exynos5440_fixed_factor_clks)); - samsung_clk_register_mux(ctx, exynos5440_mux_clks, - ARRAY_SIZE(exynos5440_mux_clks)); - samsung_clk_register_div(ctx, exynos5440_div_clks, - ARRAY_SIZE(exynos5440_div_clks)); - samsung_clk_register_gate(ctx, exynos5440_gate_clks, - ARRAY_SIZE(exynos5440_gate_clks)); - samsung_clk_register_alias(ctx, exynos5440_aliases, - ARRAY_SIZE(exynos5440_aliases)); - - samsung_clk_of_add_provider(np, ctx); - - if (register_restart_handler(&exynos5440_clk_restart_handler)) - pr_warn("exynos5440 clock can't register restart handler\n"); - - pr_info("Exynos5440: arm_clk = %ldHz\n", _get_rate("arm_clk")); - pr_info("exynos5440 clock initialization complete\n"); -} -CLK_OF_DECLARE(exynos5440_clk, "samsung,exynos5440-clock", exynos5440_clk_init); diff --git a/include/dt-bindings/clock/exynos5440.h b/include/dt-bindings/clock/exynos5440.h deleted file mode 100644 index 842cdc0adff1..000000000000 --- a/include/dt-bindings/clock/exynos5440.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2013 Samsung Electronics Co., Ltd. - * Author: Andrzej Hajda - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * Device Tree binding constants for Exynos5440 clock controller. -*/ - -#ifndef _DT_BINDINGS_CLOCK_EXYNOS_5440_H -#define _DT_BINDINGS_CLOCK_EXYNOS_5440_H - -#define CLK_XTAL 1 -#define CLK_ARM_CLK 2 -#define CLK_CPLLA 3 -#define CLK_CPLLB 4 -#define CLK_SPI_BAUD 16 -#define CLK_PB0_250 17 -#define CLK_PR0_250 18 -#define CLK_PR1_250 19 -#define CLK_B_250 20 -#define CLK_B_125 21 -#define CLK_B_200 22 -#define CLK_SATA 23 -#define CLK_USB 24 -#define CLK_GMAC0 25 -#define CLK_CS250 26 -#define CLK_PB0_250_O 27 -#define CLK_PR0_250_O 28 -#define CLK_PR1_250_O 29 -#define CLK_B_250_O 30 -#define CLK_B_125_O 31 -#define CLK_B_200_O 32 -#define CLK_SATA_O 33 -#define CLK_USB_O 34 -#define CLK_GMAC0_O 35 -#define CLK_CS250_O 36 - -/* must be greater than maximal clock id */ -#define CLK_NR_CLKS 37 - -#endif /* _DT_BINDINGS_CLOCK_EXYNOS_5440_H */ -- 2.14.1