Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp37955pxb; Mon, 8 Feb 2021 14:29:16 -0800 (PST) X-Google-Smtp-Source: ABdhPJw9Ed2ZlgoJj/p3vXyvfyOnH0bdIMbyYsUknR4x/Fc4hZ1IYUKXB9vLky8WFn3AcTn4K/y2 X-Received: by 2002:a05:6402:b86:: with SMTP id cf6mr14398088edb.66.1612823355974; Mon, 08 Feb 2021 14:29:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1612823355; cv=none; d=google.com; s=arc-20160816; b=bMlR0cUz1EkEy8NoXvi9ttwP1ItLFn1gvlQ+6GaTX3f9xms5eJLczVUZrM4Ma6/sav 1ZjNwPmkF9rqEY3R9554h32FFDN3JAgt++1AdudsjMnPI1PY1x9JXVFPO4HzenrmMLvW JBrh7nsFF/RO5HvyxZvLP9TEO5Sxw4KfBsz8NtBWMpYDY5N/SDQE3Yae1p3D56gqtJrv zP5Y/ACTI2KIxR0vjAc70UsmEpsX5yFJc80Zs68UDpkbQX2YHeV6RMX7VCtIVddDHxqL XOOvnEXXIa4zPeLDItqZx6bEdtkb/AmcV62NLab/IXfiO2h1AooTaF36Zn4DL21GvKLb rlEA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from; bh=8O6VzLNOBzct/U3ilrqf9id3d2F8TPA0A3eAB83PAfw=; b=ihIPG228zBnCRFyqxstYSUAGuLTIXVoPlfEPtjhpA0PbdlKekjXrOAWanttrzdwKP4 HAhdfX1Jf1ISVifbgyeYmXfvjjh2tsj7fI6SHPiMPM5eP8lpVwBZXh2O0Oo3vXRTOG/a ChzHf+TW7zwo4ankJd7PVTW9q5TIShapmTwJeeJN+AzN8fSXYFQnbxIACG0TfhXEjNPQ U1IxRoGST9KpeoekZxC22aX2TA5kLSNudybDsgDDtzhPSGv2i3lwk4sPBhzGssF6zG2j hukT0kZhkO7DxoHOLFETcQ3zRKaXgnvjbXdNXvfjV5nof05cijwEDZuY0E2FFOibJgQ2 ckYw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a13si10495766eje.617.2021.02.08.14.28.48; Mon, 08 Feb 2021 14:29:15 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231933AbhBHW1y (ORCPT + 99 others); Mon, 8 Feb 2021 17:27:54 -0500 Received: from mout.kundenserver.de ([217.72.192.75]:40847 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231243AbhBHWYy (ORCPT ); Mon, 8 Feb 2021 17:24:54 -0500 Received: from orion.localdomain ([95.115.15.83]) by mrelayeu.kundenserver.de (mreue107 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MHWvH-1l4Vpb1y9R-00DYpE; Mon, 08 Feb 2021 23:22:18 +0100 From: "Enrico Weigelt, metux IT consult" To: linux-kernel@vger.kernel.org Cc: rafael@kernel.org, info@metux.net, linus.walleij@linaro.org, bgolaszewski@baylibre.com, robh+dt@kernel.org, frowand.list@gmail.com, pantelis.antoniou@konsulko.com, linux-gpio@vger.kernel.org, devicetree@vger.kernel.org Subject: [RFC PATCH 12/12] platform/x86/of: add support for PC Engines APU v2/3/4 boards Date: Mon, 8 Feb 2021 23:22:03 +0100 Message-Id: <20210208222203.22335-13-info@metux.net> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20210208222203.22335-1-info@metux.net> References: <20210208222203.22335-1-info@metux.net> X-Provags-ID: V03:K1:8voYo/lO6B6/0O0ejkXg6WyIxjmfqfu0KrstP1wAK9IPrXfjknO e8xQ2QnJZfpS+53a2DqZQ3/cE/M/5VU63xtsmnXjG+0xkueiICrRltIszgqUcBgVRrfsQTP S/irinwdJhe8tkv+7teK9hxZidhn4e1w8p0HV+uCY0cJdkpvrx2JwyDCwjpiuapnFJcu43Z 2iDZMb+BitooMtEtBDQIQ== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:K+1rOvTtpI8=:nDO2tq0z1i4Ki499omWlw0 2Di3wGsWFLe40rSklPL8terWi4QNYf9/CWVYtJD5xTSoT4HBUYYWaFZjkLL5/s9GLqqEQrwoQ p0V3JHgFHC1vWl+XLgIP/9ct4uWQFLpU1uVd5vR5bRiUeLQyol/S4gaogSrl7h0xVT6AG7btF z2ztsmZHyXoEh2sC1p9zR14kLGD4WvyjBpLL9yRFtK9pRfUMnXDDIc0uZqAT3KrsZDJPYMY1a J3iYXDCPxveGEv0w3JA8xveybwsQZffKg+qdQra5VyoIqehW2I05kkPlT2BgPa8Szhe0gOovG 5pMpLr4oiHlxcgkfj2fUi1+oEOdiB76jiLNc4UD2tn7/4D6nL1wBR78CPZeuh7QjRfxqdb/gx 3iUTXLpZAP2js0LHBilJV4LWBmxbXsMy0L4vvNtvLYGjBNiH5ErrqThZ72+Cl Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add oftree based support for PC Engines APUv2/3/4 board family. This is entirely separate from the existing pcengines-apuv2 driver. Signed-off-by: Enrico Weigelt, metux IT consult --- drivers/platform/of/Kconfig | 15 ++++++++ drivers/platform/of/Makefile | 2 + drivers/platform/of/apu2x.dts | 86 +++++++++++++++++++++++++++++++++++++++++++ drivers/platform/of/init.c | 7 ++++ 4 files changed, 110 insertions(+) create mode 100644 drivers/platform/of/apu2x.dts diff --git a/drivers/platform/of/Kconfig b/drivers/platform/of/Kconfig index a0b5a641a7c6..e13b6ee8c316 100644 --- a/drivers/platform/of/Kconfig +++ b/drivers/platform/of/Kconfig @@ -38,4 +38,19 @@ config PLATFORM_OF_DRV_SYSFS_DT Say Y here to enable exposing device tree nodes at /sys/firmware/devicetree. +config PLATFORM_OF_DRV_PCENGINES_APU2 + bool "Support PC Engines APU2/3/4 mainboards" + depends on INPUT + depends on GPIOLIB + depends on X86 + select GPIO_AMD_FCH + select KEYBOARD_GPIO_POLLED + select LEDS_GPIO + select INPUT_KEYBOARD + help + Say Y to enable devicetree based support for PC Engines APU2/3/4 + mainboards. This supersedes the older pcengines-apu2 driver. + + Supports Gpios, front panel LEDs and front button. + endif # PLATFORM_OF_DRV diff --git a/drivers/platform/of/Makefile b/drivers/platform/of/Makefile index 84cf3003c500..dd4a13c18f16 100644 --- a/drivers/platform/of/Makefile +++ b/drivers/platform/of/Makefile @@ -2,4 +2,6 @@ ofboard-y := init.o drv.o +ofboard-$(CONFIG_PLATFORM_OF_DRV_PCENGINES_APU2) += apu2x.dtb.o + obj-$(CONFIG_PLATFORM_OF_DRV) += ofboard.o diff --git a/drivers/platform/of/apu2x.dts b/drivers/platform/of/apu2x.dts new file mode 100644 index 000000000000..c16a59eb2a0e --- /dev/null +++ b/drivers/platform/of/apu2x.dts @@ -0,0 +1,86 @@ +/dts-v1/; + +#include +#include +#include +#include + +/ { + apu2x { + compatible = "virtual,dmi-board"; + dmi-sys-vendor = "PC engines"; + dmi-board-name = + "APU2", + "apu2", + "PC engines apu2", + "APU3", + "apu3", + "PC engines apu3", + "APU4", + "apu4", + "PC engines apu4"; + unbind { + acpi = "PNP0076:00", "PNP0B00:00"; + platform = "platform-framebuffer.0", "PNP0103:00"; + }; + devices { + gpio1: gpio1 { + compatible = "amd,fch-gpio"; + gpio-controller; + status = "okay"; + ngpios=<7>; + #gpio-cells=<2>; + gpio-regs = < + AMD_FCH_GPIO_REG_GPIO57 // led1 + AMD_FCH_GPIO_REG_GPIO58 // led2 + AMD_FCH_GPIO_REG_GPIO59_DEVSLP1 // led3 + AMD_FCH_GPIO_REG_GPIO32_GE1 // modesw + AMD_FCH_GPIO_REG_GPIO33_GE2 // simawap + AMD_FCH_GPIO_REG_GPIO55_DEVSLP0 // mpcie2 + AMD_FCH_GPIO_REG_GPIO51 // mpcie3 + >; + gpio-line-names = + "front-led1", + "front-led2", + "front-led3", + "front-button", + "simswap", + "mpcie2_reset", + "mpcie3_reset"; + }; + front-leds { + compatible = "gpio-leds"; + led@0 { + gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>; + color = ; + default-state = "keep"; + label = "apu:green:1"; + }; + led@1 { + gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>; + color = ; + default-state = "keep"; + label = "apu:green:2"; + }; + led@2 { + gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>; + color = ; + default-state = "keep"; + label = "apu:green:3"; + }; + }; + front-keys { + compatible = "gpio-keys-polled"; + address-cells = <1>; + size-cells = <0>; + poll-interval = <100>; + button@1 { + linux,code = ; + label = "front button"; + debounce-interval = <10>; + gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>; + }; + }; + }; + }; +}; diff --git a/drivers/platform/of/init.c b/drivers/platform/of/init.c index 3b8373cda77a..195120dad26d 100644 --- a/drivers/platform/of/init.c +++ b/drivers/platform/of/init.c @@ -47,7 +47,14 @@ static ssize_t fdt_image_raw_read(struct file *filep, struct kobject *kobj, return count; } +#ifdef CONFIG_PLATFORM_OF_DRV_PCENGINES_APU2 +DECLARE_FDT_EXTERN(apu2x); +#endif + static struct fdt_image fdt[] = { +#ifdef CONFIG_PLATFORM_OF_DRV_PCENGINES_APU2 + FDT_IMAGE_ENT(apu2x) +#endif }; static int __init ofdrv_init_sysfs(struct fdt_image *image) -- 2.11.0