From: jamestai.sky@gmail.com To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Russell King <linux@armlinux.org.uk>, Arnd Bergmann <arnd@arndb.de>, Linus Walleij <linus.walleij@linaro.org>, Paul Burton <paul.burton@mips.com>, Masahiro Yamada <yamada.masahiro@socionext.com>, Mauro Carvalho Chehab <mchehab+samsung@kernel.org>, Mike Rapoport <rppt@linux.ibm.com>, Doug Anderson <armlinux@m.disordat.com>, Ard Biesheuvel <ard.biesheuvel@linaro.org>, Benjamin Gaignard <benjamin.gaignard@linaro.org>, Nick Desaulniers <ndesaulniers@google.com>, Stefan Agner <stefan@agner.ch>, Nicolas Pitre <nico@fluxnic.net>, Thierry Reding <treding@nvidia.com>, "Jason A . Donenfeld" <Jason@zx2c4.com>, Rob Herring <robh@kernel.org>, CY_Huang <cy.huang@realtek.com>, Phinex Hung <phinex@realtek.com>, "james.tai" <james.tai@realtek.com> Subject: [PATCH] ARM: Add support for Realtek SOC Date: Thu, 5 Sep 2019 13:46:47 +0800 [thread overview] Message-ID: <20190905054647.1235-1-james.tai@realtek.com> (raw) From: "james.tai" <james.tai@realtek.com> This patch adds the basic machine file for the Realtek RTD16XX platform. Signed-off-by: james.tai <james.tai@realtek.com> --- arch/arm/Kconfig | 2 + arch/arm/Makefile | 2 + arch/arm/mach-realtek/Kconfig | 32 ++++++++++++ arch/arm/mach-realtek/Makefile | 3 ++ arch/arm/mach-realtek/platsmp.c | 91 +++++++++++++++++++++++++++++++++ arch/arm/mach-realtek/platsmp.h | 7 +++ arch/arm/mach-realtek/realtek.c | 78 ++++++++++++++++++++++++++++ 7 files changed, 215 insertions(+) create mode 100644 arch/arm/mach-realtek/Kconfig create mode 100644 arch/arm/mach-realtek/Makefile create mode 100644 arch/arm/mach-realtek/platsmp.c create mode 100644 arch/arm/mach-realtek/platsmp.h create mode 100644 arch/arm/mach-realtek/realtek.c diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 33b00579beff..c7c9a3662eb7 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -836,6 +836,8 @@ source "arch/arm/mach-zx/Kconfig" source "arch/arm/mach-zynq/Kconfig" +source "arch/arm/mach-realtek/Kconfig" + # ARMv7-M architecture config ARCH_EFM32 bool "Energy Micro efm32" diff --git a/arch/arm/Makefile b/arch/arm/Makefile index c3624ca6c0bc..1f0926449d47 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -148,6 +148,7 @@ endif textofs-$(CONFIG_ARCH_MSM8X60) := 0x00208000 textofs-$(CONFIG_ARCH_MSM8960) := 0x00208000 textofs-$(CONFIG_ARCH_MESON) := 0x00208000 +textofs-$(CONFIG_ARCH_REALTEK) := 0x00208000 textofs-$(CONFIG_ARCH_AXXIA) := 0x00308000 # Machine directory name. This list is sorted alphanumerically @@ -225,6 +226,7 @@ machine-$(CONFIG_ARCH_VT8500) += vt8500 machine-$(CONFIG_ARCH_W90X900) += w90x900 machine-$(CONFIG_ARCH_ZX) += zx machine-$(CONFIG_ARCH_ZYNQ) += zynq +machine-$(CONFIG_ARCH_REALTEK) += realtek machine-$(CONFIG_PLAT_SPEAR) += spear # Platform directory name. This list is sorted alphanumerically diff --git a/arch/arm/mach-realtek/Kconfig b/arch/arm/mach-realtek/Kconfig new file mode 100644 index 000000000000..a8269964dbdb --- /dev/null +++ b/arch/arm/mach-realtek/Kconfig @@ -0,0 +1,32 @@ +# SPDX-License-Identifier: GPL-2.0-only +menuconfig ARCH_REALTEK + bool "Realtek SoCs" + select ARM_GLOBAL_TIMER + select CLKDEV_LOOKUP + select HAVE_SMP + select HAVE_MACH_CLKDEV + select GENERIC_CLOCKEVENTS + select HAVE_SCHED_CLOCK + select ARCH_HAS_CPUFREQ + select CLKSRC_OF + select ARCH_REQUIRE_GPIOLIB + select GENERIC_IRQ_CHIP + select IRQ_DOMAIN + select PINCTRL + select COMMON_CLK + select ARCH_HAS_BARRIERS + select SPARSE_IRQ + select PM_OPP + select ARM_HAS_SG_CHAIN + select ARM_PATCH_PHYS_VIRT + select AUTO_ZRELADDR + select MIGHT_HAVE_PCI + select MULTI_IRQ_HANDLER + select PCI_DOMAINS if PCI + select USE_OF + +config ARCH_RTD16XX + bool "Enable support for RTD1619" + depends on ARCH_REALTEK + select ARM_GIC_V3 + select ARM_PSCI diff --git a/arch/arm/mach-realtek/Makefile b/arch/arm/mach-realtek/Makefile new file mode 100644 index 000000000000..9cdc1f1f2917 --- /dev/null +++ b/arch/arm/mach-realtek/Makefile @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-2.0-only +obj-$(CONFIG_ARCH_REALTEK) += realtek.o +obj-$(CONFIG_SMP) += platsmp.o diff --git a/arch/arm/mach-realtek/platsmp.c b/arch/arm/mach-realtek/platsmp.c new file mode 100644 index 000000000000..5c4368fe1520 --- /dev/null +++ b/arch/arm/mach-realtek/platsmp.c @@ -0,0 +1,91 @@ +// SPDX-License-Identifier: GPL-2.0-only + +/* + * Copyright (c) 2019 Realtek Semiconductor Corp. + */ + +#include <linux/init.h> +#include <linux/delay.h> +#include <linux/jiffies.h> +#include <linux/io.h> +#include <linux/memory.h> +#include <linux/smp.h> +#include <linux/of.h> +#include <linux/arm-smccc.h> +#include <asm/smp_plat.h> +#include <asm/cacheflush.h> +#include <asm/cp15.h> +#include <asm/barrier.h> + +#define BL31_CMD 0x8400ff04 +#define BL31_DAT 0x00001619 +#define CPUID 28 +#define CORE_PWRDN_EN 0x1 + +#define CPUPWRCTLR __ACCESS_CP15(c15, 0, c2, 7) + +static u32 __iomem *cpu_release_virt; + +static int rtk_boot_secondary(unsigned int cpu, struct task_struct *idle) +{ + unsigned long entry_pa = __pa_symbol(secondary_startup); + + writel_relaxed(entry_pa | (cpu << CPUID), cpu_release_virt); + + arch_send_wakeup_ipi_mask(cpumask_of(cpu)); + + return 0; +} + +void rtk_prepare_cpus(unsigned int max_cpus) +{ + struct device_node *np; + u32 release_phys; + int cpu; + + for_each_possible_cpu(cpu) { + + np = of_get_cpu_node(cpu, NULL); + if (!np) + continue; + + if (of_property_read_u32(np, "cpu-release-addr", &release_phys)) + continue; + + cpu_release_virt = ioremap(release_phys, sizeof(u32)); + + set_cpu_present(cpu, true); + } +} + +#ifdef CONFIG_HOTPLUG_CPU + +static void rtk_cpu_die(unsigned int cpu) +{ + struct arm_smccc_res res; + unsigned int cpu_pwr_ctrl; + + writel_relaxed(0x0, cpu_release_virt); + + /* notify BL31 cpu hotplug */ + arm_smccc_smc(BL31_CMD, BL31_DAT, 0, 0, 0, 0, 0, 0, &res); + v7_exit_coherency_flush(louis); + + cpu_pwr_ctrl = read_sysreg(CPUPWRCTLR); + cpu_pwr_ctrl |= CORE_PWRDN_EN; + write_sysreg(cpu_pwr_ctrl, CPUPWRCTLR); + + dsb(sy); + + for (;;) + wfi(); +} +#endif + +struct smp_operations rtk_smp_ops __initdata = { + .smp_prepare_cpus = rtk_prepare_cpus, + .smp_boot_secondary = rtk_boot_secondary, +#ifdef CONFIG_HOTPLUG_CPU + .cpu_die = rtk_cpu_die, +#endif +}; diff --git a/arch/arm/mach-realtek/platsmp.h b/arch/arm/mach-realtek/platsmp.h new file mode 100644 index 000000000000..9c411d097c14 --- /dev/null +++ b/arch/arm/mach-realtek/platsmp.h @@ -0,0 +1,7 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +/* + * Copyright (c) 2019 Realtek Semiconductor Corp. + */ + +extern struct smp_operations rtk_smp_ops; diff --git a/arch/arm/mach-realtek/realtek.c b/arch/arm/mach-realtek/realtek.c new file mode 100644 index 000000000000..d248e19f4c1d --- /dev/null +++ b/arch/arm/mach-realtek/realtek.c @@ -0,0 +1,78 @@ +// SPDX-License-Identifier: GPL-2.0-only + +/* + * Copyright (c) 2019 Realtek Semiconductor Corp. + */ + +#include <linux/clk-provider.h> +#include <linux/clocksource.h> +#include <linux/kernel.h> +#include <linux/init.h> +#include <linux/irqchip.h> +#include <linux/of_address.h> +#include <linux/of_irq.h> +#include <linux/of_platform.h> +#include <linux/io.h> +#include <linux/memblock.h> +#include <linux/delay.h> +#include <linux/clockchips.h> +#include <asm/mach/arch.h> +#include <asm/mach/map.h> +#include <asm/system_misc.h> +#include <asm/system_info.h> + +#include "platsmp.h" + +#define RBUS_BASE_PHYS (0x98000000) +#define RBUS_BASE_VIRT (0xfe000000) +#define RBUS_BASE_SIZE (0x00100000) + +static struct map_desc rtk_io_desc[] __initdata = { + { + .virtual = (unsigned long) IOMEM(RBUS_BASE_VIRT), + .pfn = __phys_to_pfn(RBUS_BASE_PHYS), + .length = RBUS_BASE_SIZE, + .type = MT_DEVICE, + }, +}; + +void __init rtk_map_io(void) +{ + debug_ll_io_init(); + iotable_init(rtk_io_desc, ARRAY_SIZE(rtk_io_desc)); +} + +static void __init rtk_dt_init(void) +{ + of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); +} + +static void __init rtk_timer_init(void) +{ +#ifdef CONFIG_COMMON_CLK + of_clk_init(NULL); +#endif + timer_probe(); + tick_setup_hrtimer_broadcast(); +} + +bool __init rtk_smp_init_ops(void) +{ + smp_set_ops(smp_ops(rtk_smp_ops)); + + return true; +} + +static const char *const rtd16xx_board_dt_compat[] = { + "realtek,rtd1619", + NULL, +}; + +DT_MACHINE_START(RTD16XX, "Realtek rtd16xx platform") + .map_io = rtk_map_io, + .init_machine = rtk_dt_init, + .init_time = rtk_timer_init, + .dt_compat = rtd16xx_board_dt_compat, + .smp = smp_ops(rtk_smp_ops), + .smp_init = smp_init_ops(rtk_smp_init_ops), +MACHINE_END -- 2.17.1
WARNING: multiple messages have this Message-ID (diff)
From: jamestai.sky@gmail.com To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Rob Herring <robh@kernel.org>, "Jason A . Donenfeld" <Jason@zx2c4.com>, "james.tai" <james.tai@realtek.com>, Arnd Bergmann <arnd@arndb.de>, Ard Biesheuvel <ard.biesheuvel@linaro.org>, CY_Huang <cy.huang@realtek.com>, Linus Walleij <linus.walleij@linaro.org>, Nicolas Pitre <nico@fluxnic.net>, Nick Desaulniers <ndesaulniers@google.com>, Russell King <linux@armlinux.org.uk>, Stefan Agner <stefan@agner.ch>, Mike Rapoport <rppt@linux.ibm.com>, Masahiro Yamada <yamada.masahiro@socionext.com>, Paul Burton <paul.burton@mips.com>, Benjamin Gaignard <benjamin.gaignard@linaro.org>, Mauro Carvalho Chehab <mchehab+samsung@kernel.org>, Doug Anderson <armlinux@m.disordat.com>, Thierry Reding <treding@nvidia.com>, Phinex Hung <phinex@realtek.com> Subject: [PATCH] ARM: Add support for Realtek SOC Date: Thu, 5 Sep 2019 13:46:47 +0800 [thread overview] Message-ID: <20190905054647.1235-1-james.tai@realtek.com> (raw) From: "james.tai" <james.tai@realtek.com> This patch adds the basic machine file for the Realtek RTD16XX platform. Signed-off-by: james.tai <james.tai@realtek.com> --- arch/arm/Kconfig | 2 + arch/arm/Makefile | 2 + arch/arm/mach-realtek/Kconfig | 32 ++++++++++++ arch/arm/mach-realtek/Makefile | 3 ++ arch/arm/mach-realtek/platsmp.c | 91 +++++++++++++++++++++++++++++++++ arch/arm/mach-realtek/platsmp.h | 7 +++ arch/arm/mach-realtek/realtek.c | 78 ++++++++++++++++++++++++++++ 7 files changed, 215 insertions(+) create mode 100644 arch/arm/mach-realtek/Kconfig create mode 100644 arch/arm/mach-realtek/Makefile create mode 100644 arch/arm/mach-realtek/platsmp.c create mode 100644 arch/arm/mach-realtek/platsmp.h create mode 100644 arch/arm/mach-realtek/realtek.c diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 33b00579beff..c7c9a3662eb7 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -836,6 +836,8 @@ source "arch/arm/mach-zx/Kconfig" source "arch/arm/mach-zynq/Kconfig" +source "arch/arm/mach-realtek/Kconfig" + # ARMv7-M architecture config ARCH_EFM32 bool "Energy Micro efm32" diff --git a/arch/arm/Makefile b/arch/arm/Makefile index c3624ca6c0bc..1f0926449d47 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -148,6 +148,7 @@ endif textofs-$(CONFIG_ARCH_MSM8X60) := 0x00208000 textofs-$(CONFIG_ARCH_MSM8960) := 0x00208000 textofs-$(CONFIG_ARCH_MESON) := 0x00208000 +textofs-$(CONFIG_ARCH_REALTEK) := 0x00208000 textofs-$(CONFIG_ARCH_AXXIA) := 0x00308000 # Machine directory name. This list is sorted alphanumerically @@ -225,6 +226,7 @@ machine-$(CONFIG_ARCH_VT8500) += vt8500 machine-$(CONFIG_ARCH_W90X900) += w90x900 machine-$(CONFIG_ARCH_ZX) += zx machine-$(CONFIG_ARCH_ZYNQ) += zynq +machine-$(CONFIG_ARCH_REALTEK) += realtek machine-$(CONFIG_PLAT_SPEAR) += spear # Platform directory name. This list is sorted alphanumerically diff --git a/arch/arm/mach-realtek/Kconfig b/arch/arm/mach-realtek/Kconfig new file mode 100644 index 000000000000..a8269964dbdb --- /dev/null +++ b/arch/arm/mach-realtek/Kconfig @@ -0,0 +1,32 @@ +# SPDX-License-Identifier: GPL-2.0-only +menuconfig ARCH_REALTEK + bool "Realtek SoCs" + select ARM_GLOBAL_TIMER + select CLKDEV_LOOKUP + select HAVE_SMP + select HAVE_MACH_CLKDEV + select GENERIC_CLOCKEVENTS + select HAVE_SCHED_CLOCK + select ARCH_HAS_CPUFREQ + select CLKSRC_OF + select ARCH_REQUIRE_GPIOLIB + select GENERIC_IRQ_CHIP + select IRQ_DOMAIN + select PINCTRL + select COMMON_CLK + select ARCH_HAS_BARRIERS + select SPARSE_IRQ + select PM_OPP + select ARM_HAS_SG_CHAIN + select ARM_PATCH_PHYS_VIRT + select AUTO_ZRELADDR + select MIGHT_HAVE_PCI + select MULTI_IRQ_HANDLER + select PCI_DOMAINS if PCI + select USE_OF + +config ARCH_RTD16XX + bool "Enable support for RTD1619" + depends on ARCH_REALTEK + select ARM_GIC_V3 + select ARM_PSCI diff --git a/arch/arm/mach-realtek/Makefile b/arch/arm/mach-realtek/Makefile new file mode 100644 index 000000000000..9cdc1f1f2917 --- /dev/null +++ b/arch/arm/mach-realtek/Makefile @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-2.0-only +obj-$(CONFIG_ARCH_REALTEK) += realtek.o +obj-$(CONFIG_SMP) += platsmp.o diff --git a/arch/arm/mach-realtek/platsmp.c b/arch/arm/mach-realtek/platsmp.c new file mode 100644 index 000000000000..5c4368fe1520 --- /dev/null +++ b/arch/arm/mach-realtek/platsmp.c @@ -0,0 +1,91 @@ +// SPDX-License-Identifier: GPL-2.0-only + +/* + * Copyright (c) 2019 Realtek Semiconductor Corp. + */ + +#include <linux/init.h> +#include <linux/delay.h> +#include <linux/jiffies.h> +#include <linux/io.h> +#include <linux/memory.h> +#include <linux/smp.h> +#include <linux/of.h> +#include <linux/arm-smccc.h> +#include <asm/smp_plat.h> +#include <asm/cacheflush.h> +#include <asm/cp15.h> +#include <asm/barrier.h> + +#define BL31_CMD 0x8400ff04 +#define BL31_DAT 0x00001619 +#define CPUID 28 +#define CORE_PWRDN_EN 0x1 + +#define CPUPWRCTLR __ACCESS_CP15(c15, 0, c2, 7) + +static u32 __iomem *cpu_release_virt; + +static int rtk_boot_secondary(unsigned int cpu, struct task_struct *idle) +{ + unsigned long entry_pa = __pa_symbol(secondary_startup); + + writel_relaxed(entry_pa | (cpu << CPUID), cpu_release_virt); + + arch_send_wakeup_ipi_mask(cpumask_of(cpu)); + + return 0; +} + +void rtk_prepare_cpus(unsigned int max_cpus) +{ + struct device_node *np; + u32 release_phys; + int cpu; + + for_each_possible_cpu(cpu) { + + np = of_get_cpu_node(cpu, NULL); + if (!np) + continue; + + if (of_property_read_u32(np, "cpu-release-addr", &release_phys)) + continue; + + cpu_release_virt = ioremap(release_phys, sizeof(u32)); + + set_cpu_present(cpu, true); + } +} + +#ifdef CONFIG_HOTPLUG_CPU + +static void rtk_cpu_die(unsigned int cpu) +{ + struct arm_smccc_res res; + unsigned int cpu_pwr_ctrl; + + writel_relaxed(0x0, cpu_release_virt); + + /* notify BL31 cpu hotplug */ + arm_smccc_smc(BL31_CMD, BL31_DAT, 0, 0, 0, 0, 0, 0, &res); + v7_exit_coherency_flush(louis); + + cpu_pwr_ctrl = read_sysreg(CPUPWRCTLR); + cpu_pwr_ctrl |= CORE_PWRDN_EN; + write_sysreg(cpu_pwr_ctrl, CPUPWRCTLR); + + dsb(sy); + + for (;;) + wfi(); +} +#endif + +struct smp_operations rtk_smp_ops __initdata = { + .smp_prepare_cpus = rtk_prepare_cpus, + .smp_boot_secondary = rtk_boot_secondary, +#ifdef CONFIG_HOTPLUG_CPU + .cpu_die = rtk_cpu_die, +#endif +}; diff --git a/arch/arm/mach-realtek/platsmp.h b/arch/arm/mach-realtek/platsmp.h new file mode 100644 index 000000000000..9c411d097c14 --- /dev/null +++ b/arch/arm/mach-realtek/platsmp.h @@ -0,0 +1,7 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +/* + * Copyright (c) 2019 Realtek Semiconductor Corp. + */ + +extern struct smp_operations rtk_smp_ops; diff --git a/arch/arm/mach-realtek/realtek.c b/arch/arm/mach-realtek/realtek.c new file mode 100644 index 000000000000..d248e19f4c1d --- /dev/null +++ b/arch/arm/mach-realtek/realtek.c @@ -0,0 +1,78 @@ +// SPDX-License-Identifier: GPL-2.0-only + +/* + * Copyright (c) 2019 Realtek Semiconductor Corp. + */ + +#include <linux/clk-provider.h> +#include <linux/clocksource.h> +#include <linux/kernel.h> +#include <linux/init.h> +#include <linux/irqchip.h> +#include <linux/of_address.h> +#include <linux/of_irq.h> +#include <linux/of_platform.h> +#include <linux/io.h> +#include <linux/memblock.h> +#include <linux/delay.h> +#include <linux/clockchips.h> +#include <asm/mach/arch.h> +#include <asm/mach/map.h> +#include <asm/system_misc.h> +#include <asm/system_info.h> + +#include "platsmp.h" + +#define RBUS_BASE_PHYS (0x98000000) +#define RBUS_BASE_VIRT (0xfe000000) +#define RBUS_BASE_SIZE (0x00100000) + +static struct map_desc rtk_io_desc[] __initdata = { + { + .virtual = (unsigned long) IOMEM(RBUS_BASE_VIRT), + .pfn = __phys_to_pfn(RBUS_BASE_PHYS), + .length = RBUS_BASE_SIZE, + .type = MT_DEVICE, + }, +}; + +void __init rtk_map_io(void) +{ + debug_ll_io_init(); + iotable_init(rtk_io_desc, ARRAY_SIZE(rtk_io_desc)); +} + +static void __init rtk_dt_init(void) +{ + of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); +} + +static void __init rtk_timer_init(void) +{ +#ifdef CONFIG_COMMON_CLK + of_clk_init(NULL); +#endif + timer_probe(); + tick_setup_hrtimer_broadcast(); +} + +bool __init rtk_smp_init_ops(void) +{ + smp_set_ops(smp_ops(rtk_smp_ops)); + + return true; +} + +static const char *const rtd16xx_board_dt_compat[] = { + "realtek,rtd1619", + NULL, +}; + +DT_MACHINE_START(RTD16XX, "Realtek rtd16xx platform") + .map_io = rtk_map_io, + .init_machine = rtk_dt_init, + .init_time = rtk_timer_init, + .dt_compat = rtd16xx_board_dt_compat, + .smp = smp_ops(rtk_smp_ops), + .smp_init = smp_init_ops(rtk_smp_init_ops), +MACHINE_END -- 2.17.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next reply other threads:[~2019-09-05 5:48 UTC|newest] Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-09-05 5:46 jamestai.sky [this message] 2019-09-05 5:46 ` [PATCH] ARM: Add support for Realtek SOC jamestai.sky 2019-09-05 8:31 ` Arnd Bergmann 2019-09-05 8:31 ` Arnd Bergmann 2019-09-11 7:45 ` James Tai[戴志峰] 2019-09-11 7:45 ` James Tai[戴志峰] 2019-09-11 8:16 ` Arnd Bergmann 2019-09-11 8:16 ` Arnd Bergmann 2019-09-11 8:34 ` Masahiro Yamada 2019-09-11 8:34 ` Masahiro Yamada 2019-09-23 2:32 ` James Tai 2019-09-23 2:32 ` James Tai 2019-09-23 2:25 ` James Tai 2019-09-23 2:25 ` James Tai
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190905054647.1235-1-james.tai@realtek.com \ --to=jamestai.sky@gmail.com \ --cc=Jason@zx2c4.com \ --cc=ard.biesheuvel@linaro.org \ --cc=armlinux@m.disordat.com \ --cc=arnd@arndb.de \ --cc=benjamin.gaignard@linaro.org \ --cc=cy.huang@realtek.com \ --cc=james.tai@realtek.com \ --cc=linus.walleij@linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux@armlinux.org.uk \ --cc=mchehab+samsung@kernel.org \ --cc=ndesaulniers@google.com \ --cc=nico@fluxnic.net \ --cc=paul.burton@mips.com \ --cc=phinex@realtek.com \ --cc=robh@kernel.org \ --cc=rppt@linux.ibm.com \ --cc=stefan@agner.ch \ --cc=treding@nvidia.com \ --cc=yamada.masahiro@socionext.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.