From 0001409424847ffd0fbba868ebde115f083ef888 Mon Sep 17 00:00:00 2001 From: Suguru Saito Date: Fri, 23 Apr 2021 22:53:02 +0900 Subject: [PATCH] pwg5300: add pwg5300 and LCD support --- arch/arm/boot/dts/Makefile | 1 + arch/arm/boot/dts/imx28-pwg5300.dts | 113 ++++ arch/arm/configs/brain_2g_defconfig | 207 +++++++ drivers/gpu/drm/tiny/Kconfig | 12 + drivers/gpu/drm/tiny/Makefile | 1 + drivers/gpu/drm/tiny/brain-lq050j1ug01.c | 698 +++++++++++++++++++++++ 6 files changed, 1032 insertions(+) create mode 100644 arch/arm/boot/dts/imx28-pwg5300.dts create mode 100644 arch/arm/configs/brain_2g_defconfig create mode 100644 drivers/gpu/drm/tiny/brain-lq050j1ug01.c diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile index 0ef71e65b808..28fdb399558a 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile @@ -742,6 +742,7 @@ dtb-$(CONFIG_ARCH_MXS) += \ imx28-sps1.dtb \ imx28-ts4600.dtb \ imx28-tx28.dtb \ + imx28-pwg5300.dtb \ imx28-pwsh1.dtb \ imx28-pwsh2.dtb \ imx28-pwsh3.dtb \ diff --git a/arch/arm/boot/dts/imx28-pwg5300.dts b/arch/arm/boot/dts/imx28-pwg5300.dts new file mode 100644 index 000000000000..975664b378d5 --- /dev/null +++ b/arch/arm/boot/dts/imx28-pwg5300.dts @@ -0,0 +1,113 @@ +// SPDX-License-Identifier: GPL-2.0+ +// +// Copyright 2012 Freescale Semiconductor, Inc. + +/dts-v1/; +#include +#include "imx28-brain-2g.dtsi" + +/ { + model = "SHARP Brain PW-G5300"; + compatible = "sharp,pw-g5300", "sharp,brain", "fsl,imx28"; +}; + +&brainlcd { + status = "okay"; + + sharp,lcd-width = <480>; + sharp,lcd-height = <320>; + sharp,lcd-width-mm = <152>; + sharp,lcd-height-mm = <73>; + + sharp,en-gpios = + <&gpio0 26 GPIO_ACTIVE_HIGH>, + <&gpio0 27 GPIO_ACTIVE_HIGH>, + <&gpio4 16 GPIO_ACTIVE_HIGH>; +}; + +&keyboard_i2c { + status = "okay"; + keymap = + <0x01 KEY_POWER>, /* Power */ + <0x07 KEY_ESC>, /* Search */ + <0x0d KEY_TAB>, /* Kokugo */ + <0x11 KEY_PAGEUP>, /* Eiwa Waei */ + <0x15 KEY_PAGEDOWN>, /* My Dictionary */ + <0x25 KEY_INSERT>, /* History / Bookmark */ + <0x1d KEY_DELETE>, /* Marker test */ + /* <0x2b Memorization tool> */ + /* <0x24 Home> */ + <0x02 KEY_Q>, /* Q */ + <0x08 KEY_W>, /* W */ + <0x0e KEY_E>, /* E */ + <0x12 KEY_R>, /* R */ + <0x16 KEY_T>, /* T */ + <0x1e KEY_Y>, /* Y */ + <0x26 KEY_U>, /* U */ + <0x2c KEY_I>, /* I */ + <0x27 KEY_O>, /* O */ + <0x2d KEY_P>, /* P */ + <0x03 KEY_A>, /* A */ + <0x09 KEY_S>, /* S */ + <0x0f KEY_D>, /* D */ + <0x13 KEY_F>, /* F */ + <0x17 KEY_G>, /* G */ + <0x1f KEY_H>, /* H */ + <0x20 KEY_J>, /* J */ + <0x28 KEY_K>, /* K */ + <0x2e KEY_L>, /* L */ + <0x05 KEY_LEFTSHIFT>, + <0x04 KEY_Z>, /* Z */ + <0x0a KEY_X>, /* X */ + <0x10 KEY_C>, /* C */ + <0x14 KEY_V>, /* V */ + <0x18 KEY_B>, /* B */ + <0x21 KEY_N>, /* N */ + <0x29 KEY_M>, /* M */ + <0x2f KEY_MINUS>, /* Minus */ + <0x31 KEY_BACKSPACE>, /* Backspace */ + <0x0b KEY_LEFTCTRL>, /* Page Up */ + /* <0x0c KEY_PAGEDOWN>, */ /* Page Down */ + <0x06 KEY_LEFTALT>, /* Switch characters */ + /* < 0x19, Symbols>, */ + <0x1b KEY_ESC>, /* Go Back */ + <0x1c KEY_SPACE>, /* Space */ + <0x23 KEY_ENTER>, /* Enter */ + <0x1a KEY_LEFT>, /* Left */ + <0x22 KEY_UP>, /* Up */ + <0x2a KEY_DOWN>, /* Down */ + <0x30 KEY_RIGHT>; /* Right */ + keymap-symbol = + <0x01 KEY_POWER>, /* Power */ + <0x07 KEY_ESC>, /* Search */ + <0x0d KEY_TAB>, /* Kokugo */ + <0x11 KEY_PAGEUP>, /* Eiwa Waei */ + <0x15 KEY_PAGEDOWN>, /* My Dictionary */ + <0x25 KEY_INSERT>, /* History / Bookmark */ + <0x1d KEY_DELETE>, /* Marker test */ + <0x02 KEY_1>, /* Q */ + <0x08 KEY_2>, /* W */ + <0x0e KEY_3>, /* E */ + <0x12 KEY_4>, /* R */ + <0x16 KEY_5>, /* T */ + <0x1e KEY_6>, /* Y */ + <0x26 KEY_7>, /* U */ + <0x2c KEY_8>, /* I */ + <0x27 KEY_9>, /* O */ + <0x2d KEY_0>, /* P */ + <0x0f KEY_GRAVE>, /* D */ + <0x13 KEY_EQUAL>, /* F */ + <0x17 KEY_BACKSLASH>, /* G */ + <0x1f KEY_SEMICOLON>, /* H */ + <0x20 KEY_APOSTROPHE>, /* J */ + <0x28 KEY_LEFTBRACE>, /* K */ + <0x2e KEY_RIGHTBRACE>, /* L */ + <0x05 KEY_LEFTSHIFT>, + <0x21 KEY_COMMA>, /* N */ + <0x29 KEY_DOT>, /* M */ + <0x2f KEY_SLASH>, /* Minus */ + <0x31 KEY_BACKSPACE>, /* Backspace */ + <0x0b KEY_LEFTCTRL>, /* Page Up */ + /* <0x0c KEY_PAGEDOWN>, */ /* Page Down */ + <0x06 KEY_LEFTALT>; /* Switch characters */ +}; diff --git a/arch/arm/configs/brain_2g_defconfig b/arch/arm/configs/brain_2g_defconfig new file mode 100644 index 000000000000..95e635f59d4a --- /dev/null +++ b/arch/arm/configs/brain_2g_defconfig @@ -0,0 +1,207 @@ +CONFIG_SYSVIPC=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_PREEMPT=y +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_CGROUPS=y +# CONFIG_UTS_NS is not set +# CONFIG_IPC_NS is not set +# CONFIG_PID_NS is not set +# CONFIG_NET_NS is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_PERF_EVENTS=y +# CONFIG_COMPAT_BRK is not set +# CONFIG_ARCH_MULTI_V7 is not set +CONFIG_ARCH_MXS=y +CONFIG_AEABI=y +CONFIG_MODULES=y +CONFIG_MODULE_FORCE_LOAD=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_MODVERSIONS=y +CONFIG_TRIM_UNUSED_KSYMS=y +CONFIG_BLK_DEV_INTEGRITY=y +CONFIG_FRONTSWAP=y +CONFIG_ZSWAP=y +CONFIG_ZBUD=y +CONFIG_Z3FOLD=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_SYN_COOKIES=y +# CONFIG_INET_DIAG is not set +CONFIG_CFG80211=y +CONFIG_CFG80211_WEXT=y +CONFIG_MAC80211=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_MTD=y +CONFIG_MTD_CMDLINE_PARTS=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_DATAFLASH=y +CONFIG_MTD_SST25L=y +CONFIG_MTD_RAW_NAND=y +CONFIG_MTD_NAND_GPMI_NAND=y +CONFIG_MTD_SPI_NOR=y +CONFIG_MTD_UBI=y +# CONFIG_BLK_DEV is not set +CONFIG_EEPROM_AT24=y +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y +CONFIG_NETDEVICES=y +CONFIG_ENC28J60=y +CONFIG_ICPLUS_PHY=y +CONFIG_MICREL_PHY=y +CONFIG_REALTEK_PHY=y +CONFIG_SMSC_PHY=y +CONFIG_USB_RTL8150=y +CONFIG_USB_RTL8152=y +CONFIG_USB_USBNET=y +CONFIG_USB_NET_SMSC95XX=y +CONFIG_USB_NET_RNDIS_HOST=y +# CONFIG_WLAN_VENDOR_ADMTEK is not set +CONFIG_ATH9K=y +CONFIG_ATH9K_HTC=y +CONFIG_ATH6KL=y +CONFIG_ATH6KL_USB=y +CONFIG_AR5523=y +CONFIG_ATH10K=y +CONFIG_ATH10K_USB=y +CONFIG_WCN36XX=y +# CONFIG_WLAN_VENDOR_ATMEL is not set +# CONFIG_WLAN_VENDOR_BROADCOM is not set +# CONFIG_WLAN_VENDOR_CISCO is not set +# CONFIG_WLAN_VENDOR_INTEL is not set +# CONFIG_WLAN_VENDOR_INTERSIL is not set +# CONFIG_WLAN_VENDOR_MARVELL is not set +CONFIG_MT7601U=y +CONFIG_MT76x0U=y +CONFIG_MT76x2U=y +CONFIG_RT2X00=y +CONFIG_RT2500USB=y +CONFIG_RT73USB=y +CONFIG_RT2800USB=y +CONFIG_RT2800USB_RT3573=y +CONFIG_RT2800USB_RT53XX=y +CONFIG_RT2800USB_RT55XX=y +CONFIG_RTL8187=y +CONFIG_RTL8XXXU=y +CONFIG_RTW88=y +# CONFIG_WLAN_VENDOR_RSI is not set +# CONFIG_WLAN_VENDOR_ST is not set +# CONFIG_WLAN_VENDOR_TI is not set +# CONFIG_WLAN_VENDOR_ZYDAS is not set +# CONFIG_WLAN_VENDOR_QUANTENNA is not set +CONFIG_INPUT_EVDEV=y +CONFIG_KEYBOARD_BRAIN_I2C=y +# CONFIG_INPUT_MOUSE is not set +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_MXS_LRADC=y +CONFIG_TOUCHSCREEN_TSC2007=m +# CONFIG_LEGACY_PTYS is not set +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_SERIAL_MXS_AUART=y +# CONFIG_HW_RANDOM is not set +# CONFIG_I2C_COMPAT is not set +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_MXS=y +CONFIG_SPI=y +CONFIG_SPI_GPIO=m +CONFIG_SPI_MXS=y +CONFIG_GPIO_SYSFS=y +# CONFIG_HWMON is not set +CONFIG_WATCHDOG=y +CONFIG_STMP3XXX_RTC_WATCHDOG=y +CONFIG_MFD_MXS_LRADC=y +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y +CONFIG_DRM=y +CONFIG_DRM_UDL=y +CONFIG_DRM_PANEL_SEIKO_43WVF1G=y +CONFIG_TINYDRM_BRAIN_2G=y +CONFIG_FB_MODE_HELPERS=y +CONFIG_LCD_CLASS_DEVICE=y +CONFIG_BACKLIGHT_PWM=y +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +# CONFIG_LOGO_LINUX_VGA16 is not set +# CONFIG_LOGO_LINUX_CLUT224 is not set +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_SOC=y +CONFIG_SND_MXS_SOC=y +CONFIG_SND_SOC_MXS_SGTL5000=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_STORAGE=y +CONFIG_USB_CHIPIDEA=y +CONFIG_USB_CHIPIDEA_UDC=y +CONFIG_USB_CHIPIDEA_HOST=y +CONFIG_USB_MXS_PHY=y +CONFIG_USB_GADGET=y +CONFIG_USB_CONFIGFS=y +CONFIG_USB_CONFIGFS_RNDIS=y +CONFIG_MMC=y +CONFIG_MMC_MXS=y +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_ONESHOT=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEDS_TRIGGER_BACKLIGHT=y +CONFIG_LEDS_TRIGGER_GPIO=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_DS1307=m +CONFIG_RTC_DRV_STMP=y +CONFIG_DMADEVICES=y +CONFIG_MXS_DMA=y +CONFIG_STAGING=y +CONFIG_WILC1000_SDIO=y +CONFIG_EXFAT_FS=y +CONFIG_IIO=y +CONFIG_MXS_LRADC_ADC=y +CONFIG_IIO_SYSFS_TRIGGER=y +CONFIG_PWM=y +CONFIG_PWM_MXS=y +CONFIG_NVMEM_MXS_OCOTP=y +CONFIG_EXT4_FS=y +# CONFIG_DNOTIFY is not set +CONFIG_FSCACHE=m +CONFIG_FSCACHE_STATS=y +CONFIG_CACHEFILES=m +CONFIG_VFAT_FS=y +CONFIG_TMPFS=y +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_LZO=y +CONFIG_JFFS2_RUBIN=y +CONFIG_UBIFS_FS=y +CONFIG_UBIFS_FS_ADVANCED_COMPR=y +CONFIG_NFS_FS=y +CONFIG_NFS_V3_ACL=y +CONFIG_NFS_V4=y +CONFIG_ROOT_NFS=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_CODEPAGE_850=y +CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_ISO8859_15=y +CONFIG_CRYPTO_DEV_MXS_DCP=y +CONFIG_CRC7=m +CONFIG_FONTS=y +CONFIG_FONT_8x16=y +CONFIG_FONT_6x11=y +CONFIG_PRINTK_TIME=y +CONFIG_FRAME_WARN=2048 +CONFIG_DEBUG_FS=y +CONFIG_STACKTRACE=y +# CONFIG_RUNTIME_TESTING_MENU is not set +CONFIG_STRICT_DEVMEM=y +CONFIG_DEBUG_USER=y diff --git a/drivers/gpu/drm/tiny/Kconfig b/drivers/gpu/drm/tiny/Kconfig index a48fd04ce00a..d093083595d7 100644 --- a/drivers/gpu/drm/tiny/Kconfig +++ b/drivers/gpu/drm/tiny/Kconfig @@ -59,6 +59,18 @@ config TINYDRM_BRAIN If M is selected the module will be called brain. +config TINYDRM_BRAIN_2G + tristate "DRM support for LQ050J1UG01 display panels on Sharp Brain" + depends on DRM + select DRM_KMS_HELPER + select DRM_KMS_CMA_HELPER + select BACKLIGHT_CLASS_DEVICE + help + DRM driver for the following Sharp LQ050J1UG01 panels: + * Sharp Brain 480x320 TFT + + If M is selected the module will be called brain. + config TINYDRM_MI0283QT tristate "DRM support for MI0283QT" depends on DRM && SPI diff --git a/drivers/gpu/drm/tiny/Makefile b/drivers/gpu/drm/tiny/Makefile index 646922cd0342..a7c1962c6564 100644 --- a/drivers/gpu/drm/tiny/Makefile +++ b/drivers/gpu/drm/tiny/Makefile @@ -5,6 +5,7 @@ obj-$(CONFIG_TINYDRM_HX8357D) += hx8357d.o obj-$(CONFIG_TINYDRM_ILI9225) += ili9225.o obj-$(CONFIG_TINYDRM_ILI9341) += ili9341.o obj-$(CONFIG_TINYDRM_BRAIN) += brain.o +obj-$(CONFIG_TINYDRM_BRAIN_2G) += brain-lq050j1ug01.o obj-$(CONFIG_TINYDRM_MI0283QT) += mi0283qt.o obj-$(CONFIG_TINYDRM_REPAPER) += repaper.o obj-$(CONFIG_TINYDRM_ST7586) += st7586.o diff --git a/drivers/gpu/drm/tiny/brain-lq050j1ug01.c b/drivers/gpu/drm/tiny/brain-lq050j1ug01.c new file mode 100644 index 000000000000..0bcf533d161d --- /dev/null +++ b/drivers/gpu/drm/tiny/brain-lq050j1ug01.c @@ -0,0 +1,698 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * DRM driver for Sharp LQ050J1UG01 panels on Sharp Brain + * + * Copyright 2021 Suguru Saito + * + * Based on brain.c + * Copyright 2020 Takumi Sueda + * + * Based on ili9341.c + * Copyright 2018 David Lechner + * + * Based on mi0283qt.c: + * Copyright 2016 Noralf Trønnes + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include