nobby-230: new device (!865)

This commit is contained in:
HenriDellal 2020-01-08 23:03:58 +03:00
parent 9aec04820c
commit b97c340c36
No known key found for this signature in database
GPG key ID: 0B19D2A65870B448
13 changed files with 4244 additions and 0 deletions

View file

@ -0,0 +1,34 @@
# Reference: <https://postmarketos.org/devicepkg>
# Maintainer: Anri Dellal <anridellal@gmail.com>
# Contributor: Anri Dellal <anridellal@gmail.com>
pkgname="device-nobby-230"
pkgdesc="Nobby 230"
pkgver=0.1
pkgrel=0
url="https://postmarketos.org"
license="MIT"
arch="armv7"
options="!check !archcheck"
depends="msm-fb-refresher postmarketos-base linux-nobby-230 mkbootimg mesa-dri-swrast"
makedepends="devicepkg-dev"
source="
deviceinfo
asound.conf
initfs-hook.sh
"
build() {
devicepkg_build $startdir $pkgname
}
package() {
devicepkg_package $startdir $pkgname
install -D -m644 "$srcdir"/asound.conf \
"$pkgdir"/etc/asound.conf
}
sha512sums="a3e58864621ad657438b629c65cfc62ca8092d9f30a51ba8dcfb80ede6d50db64cfd22ff8492ddd172180ffd6e32304d4a2ec96a2050b54abd929430a16011d3 deviceinfo
369df19f9bf7546236b81a33c00b6384e88e979c4711fead3749f8e60f4cd99f37b31baf1f00d05a821cb71ca2f440648e13083653f1a4ec0c178c7c1c415a58 asound.conf
b2838f65401d506a8c64a022a12887e67c410f3e21279e1c6ec2b88c3b51a0ce4f31b9de6883c3ff786cbb000a7fe8a39342fe313a6425bd6f281e521c143492 initfs-hook.sh"

View file

@ -0,0 +1,9 @@
pcm.!default {
type hw
card sprdphone
}
ctl.!default {
type hw
card sprdphone
}

View file

@ -0,0 +1,33 @@
# Reference: <https://postmarketos.org/deviceinfo>
# Please use double quotes only. You can source this file in shell scripts.
deviceinfo_format_version="0"
deviceinfo_name="Nobby 230"
deviceinfo_manufacturer="Nobby"
deviceinfo_codename="nobby-230"
deviceinfo_date=""
deviceinfo_dtb=""
deviceinfo_modules_initfs=""
deviceinfo_arch="armv7"
# Device related
deviceinfo_keyboard="true"
deviceinfo_external_storage="true"
deviceinfo_screen_width="240"
deviceinfo_screen_height="320"
deviceinfo_dev_touchscreen=""
deviceinfo_dev_touchscreen_calibration=""
deviceinfo_dev_keyboard=""
# Bootloader related
deviceinfo_flash_method="fastboot"
deviceinfo_kernel_cmdline="console=ttyS1,115200n8"
deviceinfo_generate_bootimg="true"
deviceinfo_bootimg_qcdt="false"
deviceinfo_flash_offset_base="0x00000000"
deviceinfo_flash_offset_kernel="0x00008000"
deviceinfo_flash_offset_ramdisk="0x01000000"
deviceinfo_flash_offset_second="0x00f00000"
deviceinfo_flash_offset_tags="0x00000100"
deviceinfo_flash_pagesize="2048"

View file

@ -0,0 +1,7 @@
#!/bin/sh
# set framebuffer resolution
echo 1 > /sys/class/graphics/fb0/state
echo 240,640 > /sys/class/graphics/fb0/virtual_size
echo 0,320 > /sys/class/graphics/fb0/pan

View file

@ -0,0 +1,13 @@
diff --git a/drivers/video/sprdfb/sprdfb_main.c b/drivers/video/sprdfb/sprdfb_main.c
index cdb8c0c..e5fff6b 100644
--- a/drivers/video/sprdfb/sprdfb_main.c
+++ b/drivers/video/sprdfb/sprdfb_main.c
@@ -330,7 +330,7 @@ static int sprdfb_check_var(struct fb_var_screeninfo *var, struct fb_info *fb)
if ((var->xres != fb->var.xres) ||
(var->yres != fb->var.yres) ||
(var->xres_virtual != fb->var.xres_virtual) ||
- (var->yres_virtual != fb->var.yres_virtual) ||
+ (fb->var.yres_virtual % var->yres_virtual != 0) ||
(var->xoffset != fb->var.xoffset) ||
#ifndef BIT_PER_PIXEL_SURPPORT
(var->bits_per_pixel != fb->var.bits_per_pixel) ||

View file

@ -0,0 +1,14 @@
diff --git a/Makefile b/Makefile
index c9c47f7..c320f5b 100644
--- a/Makefile
+++ b/Makefile
@@ -192,8 +192,7 @@ SUBARCH := $(shell uname -m | sed -e s/i.86/x86/ -e s/x86_64/x86/ \
# "make" in the configured kernel build directory always uses that.
# Default value for CROSS_COMPILE is not to prefix executables
# Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile
-ARCH =arm
-CROSS_COMPILE =arm-eabi-
+CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%":%)
# Architecture as present in compile.h
UTS_MACHINE := $(ARCH)

View file

@ -0,0 +1,511 @@
diff --git a/drivers/video/sprdfb/Kconfig b/drivers/video/sprdfb/Kconfig
index def1f31..b06c6cf 100644
--- a/drivers/video/sprdfb/Kconfig
+++ b/drivers/video/sprdfb/Kconfig
@@ -182,6 +182,11 @@ config FB_LCD_ILI9341
depends on FB_SC8825 || FB_SCX35 || FB_SCX15
default n
+config FB_LCD_ILI9340
+ boolean "support ILI9340 mcu panel"
+ depends on FB_SC8825 || FB_SCX35 || FB_SCX15
+ default n
+
config FB_LCD_ILI9806E_RGB_SPI
boolean "support ILI9806E panel rgb spi"
depends on FB_SC8825 || FB_SCX35 || FB_SCX15
diff --git a/drivers/video/sprdfb/lcd/Makefile b/drivers/video/sprdfb/lcd/Makefile
index ac5d5c4..ada4ee0 100644
--- a/drivers/video/sprdfb/lcd/Makefile
+++ b/drivers/video/sprdfb/lcd/Makefile
@@ -14,6 +14,7 @@ obj-$(CONFIG_FB_LCD_ILI9486) += lcd_ili9486.o
obj-$(CONFIG_FB_LCD_ILI9486_RGB_SPI) += lcd_ili9486_rgb_spi.o
obj-$(CONFIG_FB_LCD_NT51017_MIPI_LVDS) += lcd_nt51017_mipi_lvds.o
obj-$(CONFIG_FB_LCD_HX8369B_MIPI) += lcd_hx8369b_mipi.o
+obj-$(CONFIG_FB_LCD_ILI9340) += lcd_ili9340.o
obj-$(CONFIG_FB_LCD_ILI9341) += lcd_ili9341.o
obj-$(CONFIG_FB_LCD_ST7789V_MCU) += lcd_st7789v_mcu.o
obj-$(CONFIG_FB_LCD_NT35502_MIPI) += lcd_nt35502_mipi.o
obj-$(CONFIG_FB_LCD_NT35502_MIPI) += lcd_nt35502_mipi.o
diff --git a/drivers/video/sprdfb/lcd/lcd_ili9340.c b/drivers/video/sprdfb/lcd/lcd_ili9340.c
new file mode 100644
index 0000000..47a63ec
--- /dev/null
+++ b/drivers/video/sprdfb/lcd/lcd_ili9340.c
@@ -0,0 +1,476 @@
+/* drivers/video/sc8810/lcd_ili9340.c
+ *
+ * Support for ili9340 LCD device
+ *
+ * Copyright (C) 2010 Spreadtrum
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include <linux/kernel.h>
+#include <linux/delay.h>
+#include "../sprdfb_panel.h"
+
+static int32_t ili9340_init(struct panel_spec *self)
+{
+ send_data_t send_cmd = self->info.mcu->ops->send_cmd;
+ send_data_t send_data = self->info.mcu->ops->send_data;
+
+ pr_debug("ili9340_init\n");
+
+ //NEW
+ send_cmd(0xEF);
+ send_data(0x03);
+ send_data(0x80);
+ send_data(0x02);
+
+ //Power Setting
+ send_cmd(0xCF);
+ send_data(0x00);//NOP
+ send_data(0xC1);
+// send_data(0xE1);//Neg. gamma correction
+ send_data(0x30);//Partial area
+
+ send_cmd(0xED);//
+ send_data(0x64);//
+ send_data(0x03);
+ send_data(0x12);
+ send_data(0x81);
+
+ //NEW
+ send_cmd(0xE8);
+ send_data(0x85);
+ send_data(0x00);
+ send_data(0x78);
+
+ send_cmd(0xCB);
+ send_data(0x39);
+ send_data(0x2C);
+ send_data(0x00);
+ send_data(0x34);
+ send_data(0x02);
+
+ send_cmd(0xF7);
+ send_data(0x20);
+
+ send_cmd(0xEA);
+ send_data(0x00);
+ send_data(0x00);
+
+ //NEW
+ send_cmd(0xC0);
+ send_data(0x23);
+
+ //NEW
+ send_cmd(0xC1);
+ send_data(0x10);
+
+ send_cmd(0xC5);
+ send_data(0x3e);
+ send_data(0x28);
+ //send_data(0x4C);
+ //send_data(0x2B);
+
+ send_cmd(0xC7);
+ send_data(0x86);
+
+ send_cmd(0x3A);
+ send_data(0x55);
+
+ send_cmd(0xB1);
+ send_data(0x00);
+ send_data(0x18);
+
+ send_cmd(0xB6);
+ send_data(0x08);
+ send_data(0x82);
+ send_data(0x27);
+
+ send_cmd(0x36);
+ send_data(0x08);
+
+ send_cmd(0xF2);
+ send_data(0x00);
+
+ send_cmd(0x26);
+ send_data(0x01);
+ //send_data(0x00);
+
+ /*send_cmd(0xC0);
+ send_data(0x22);
+
+ send_cmd(0xC1);
+ send_data(0x11);
+
+ //Initializing Sequence
+ send_cmd(0x35);
+ send_data(0x00);
+
+ send_cmd(0x3A);
+ send_data(0x05);
+
+ send_cmd(0xF2);
+ send_data(0x02);
+
+ send_cmd(0xB6);
+ send_data(0x01);
+ send_data(0xC2);
+
+ send_cmd(0xF6);
+ send_data(0x01);
+ send_data(0x10);
+ send_data(0x00);
+
+ send_cmd(0xB1);
+ send_data(0x00);
+ send_data(0x1A);
+
+ send_cmd(0xB5);
+ send_data(0x02);
+ send_data(0x02);
+ send_data(0x0A);
+ send_data(0x14);
+
+ send_cmd(0xE8);
+ send_data(0x85);
+ send_data(0x01);
+ send_data(0x78);
+*/
+
+ //Gamma Setting
+ send_cmd(0xE0);
+ send_data(0x0F);
+ send_data(0x31);
+ //send_data(0x2F);
+ send_data(0x2B);
+ //send_data(0x0D);
+ send_data(0x0C);
+ //send_data(0x10);
+ send_data(0x0E);
+ send_data(0x08);
+ send_data(0x4E);
+ send_data(0xF1);
+ send_data(0x37);
+ send_data(0x07);
+ send_data(0x10);
+ send_data(0x03);
+ send_data(0x0E);
+ send_data(0x09);
+ send_data(0x00);
+
+ send_cmd(0xE1);
+ send_data(0x00);
+ send_data(0x0E);
+ send_data(0x14);
+ send_data(0x03);
+ send_data(0x11);
+ send_data(0x07);
+ send_data(0x31);
+ send_data(0xC1);
+ send_data(0x48);
+ send_data(0x08);
+ send_data(0x0F);
+ send_data(0x0C);
+ send_data(0x31);
+ send_data(0x36);
+ send_data(0x0F);
+
+/*
+ send_cmd(0xE2);
+ send_data(0x00);
+ send_data(0x00);
+ send_data(0x00);
+ send_data(0x00);
+ send_data(0x00);
+ send_data(0x00);
+ send_data(0x00);
+ send_data(0x00);
+ send_data(0x00);
+ send_data(0x00);
+ send_data(0x00);
+ send_data(0x00);
+ send_data(0x00);
+ send_data(0x00);
+ send_data(0x00);
+ send_data(0x00);
+
+ send_cmd(0xE3);
+ send_data(0x00);
+ send_data(0x00);
+ send_data(0x00);
+ send_data(0x00);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x22);
+ send_data(0x22);
+ send_data(0x22);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x33);
+ send_data(0x03);
+ send_data(0x03);
+ send_data(0x03);
+ send_data(0x03);
+ send_data(0x03);
+ send_data(0x03);
+ send_data(0x03);
+ send_data(0x03);
+ send_data(0x03);
+ send_data(0x03);
+ send_data(0x03);
+ send_data(0x02);
+ send_data(0x01);
+ send_data(0x00);
+*/
+#if 1
+ //Display on
+ send_cmd(0x11); // (SLPOUT)
+ mdelay(12); // 100ms
+ send_cmd(0x29); // (DISPON)
+ mdelay(10); // 100ms
+ pr_debug("ili9340_init: end\n");
+
+ return 0;
+#else
+ if (1) { // for test the lcd
+ int i;
+ send_cmd(0x2C); //Write data
+ for (i = 0; i < 240*320/3; i++)
+ send_data(0xff);
+ for (i = 0; i < 240*320/3; i++)
+ send_data(0xff00);
+ for (i = 0; i < 24*320/3; i++)
+ send_data(0xff0000);
+ }
+ send_cmd(0x11); //Display On
+ mdelay(10); //120ms
+ send_cmd(0x29); //Write data
+ mdelay(10); //120ms
+#endif
+ pr_debug("ili9340_init: end\n");
+
+ return 0;
+}
+
+static int32_t ili9340_set_window(struct panel_spec *self,
+ uint16_t left, uint16_t top, uint16_t right, uint16_t bottom)
+{
+ send_data_t send_cmd = self->info.mcu->ops->send_cmd;
+ send_data_t send_data = self->info.mcu->ops->send_data;
+
+ pr_debug("ili9340_set_window\n");
+
+ send_cmd(0x2A); // col
+ send_data((left >> 8));
+ send_data((left & 0xFF));
+ send_data((right >> 8));
+ send_data((right & 0xFF));
+
+ send_cmd(0x2B); // row
+ send_data((top >> 8));
+ send_data((top & 0xFF));
+ send_data((bottom >> 8));
+ send_data((bottom & 0xFF));
+
+ send_cmd(0x2C);
+
+ return 0;
+}
+
+
+static int32_t ili9340_invalidate(struct panel_spec *self)
+{
+ pr_debug("ili9340_invalidate\n");
+
+ return self->ops->panel_set_window(self, 0, 0,
+ self->width-1, self->height-1);
+}
+
+static int32_t ili9340_invalidate_rect(struct panel_spec *self,
+ uint16_t left, uint16_t top,
+ uint16_t right, uint16_t bottom)
+{
+
+ pr_debug("ili9340_invalidate_rect : (%d, %d, %d, %d)\n",left, top, right, bottom);
+
+ return self->ops->panel_set_window(self, left, top,
+ right, bottom);
+}
+
+static int32_t ili9340_set_direction(struct panel_spec *self, uint16_t direction)
+{
+
+ pr_debug("ili9340_set_direction\n");
+ return 0;
+}
+
+static int32_t ili9340_enter_sleep(struct panel_spec *self, uint8_t is_sleep)
+{
+ //send_data_t send_cmd = self->info.mcu->ops->send_cmd;
+
+ if(is_sleep) {
+ //send_cmd(0x10);
+ mdelay(120);
+ }
+ else {
+ //send_cmd(0x11);
+ mdelay(120);
+ }
+ return 0;
+}
+
+static uint32_t ili9340_read_id(struct panel_spec *self)
+{
+ int32_t read_value = 0;
+#if 0
+ send_data_t send_cmd = self->info.mcu->ops->send_cmd;
+ read_data_t read_data = self->info.mcu->ops->read_data;
+
+ send_cmd(0x04);
+
+ read_data();
+ read_value += read_data()<< 16;
+ read_value += read_data()<< 8;
+ read_value += read_data();
+#endif
+ pr_debug("ili9340_read_id=%x\n",read_value);
+
+ read_value = 0x9340;
+
+ return read_value;
+}
+
+static int32_t ili9340_change_epf(struct panel_spec *self, bool is_default)
+{
+ send_data_t send_cmd = self->info.mcu->ops->send_cmd;
+ send_data_t send_data = self->info.mcu->ops->send_data;
+
+ return 0;
+
+ if(is_default){
+ send_cmd(0xF6);
+ send_data(0x01);
+ send_data(0x30);
+ send_data(0x00);
+ }else{
+ send_cmd(0xF6);
+ send_data(0x01);
+ send_data(0x10);
+ send_data(0x00);
+ }
+
+ return 0;
+}
+
+static struct panel_operations lcd_ili9340_operations = {
+ .panel_init = ili9340_init,
+ .panel_set_window = ili9340_set_window,
+ .panel_invalidate = ili9340_invalidate,
+ //.lcd_invalidate_rect = ili9340_invalidate_rect,
+ .panel_set_direction = ili9340_set_direction,
+ .panel_enter_sleep = ili9340_enter_sleep,
+ .panel_readid = ili9340_read_id,
+ .panel_change_epf = ili9340_change_epf,
+};
+
+static struct timing_mcu lcd_ili9340_timing[] = {
+ [MCU_LCD_REGISTER_TIMING] = {
+ .rcss = 25,
+ .rlpw = 45,
+ .rhpw = 90,
+ .wcss = 30,
+ .wlpw = 20,
+ .whpw = 20,
+ },
+ [MCU_LCD_GRAM_TIMING] = {
+ .rcss = 25,
+ .rlpw = 45,
+ .rhpw = 90,
+ .wcss = 30,
+ .wlpw = 20,
+ .whpw = 20,
+ }
+};
+
+static struct info_mcu lcd_ili9340_info = {
+ .bus_mode = LCD_BUS_8080,
+ .bus_width = 16,
+ .bpp = 16, /*RGB88*/
+ .timing = &lcd_ili9340_timing,
+ .ops = NULL,
+};
+
+struct panel_spec lcd_panel_ili9340 = {
+ .width = 240,
+ .height = 320,
+ .fps = 60,
+ .type = LCD_MODE_MCU,
+ .direction = LCD_DIRECT_NORMAL,
+ .info = {
+ .mcu = &lcd_ili9340_info
+ },
+ .ops = &lcd_ili9340_operations,
+};
+
+struct panel_cfg lcd_ili9340 = {
+ /* this panel may on both CS0/1 */
+ .dev_id = SPRDFB_MAINLCD_ID,
+ .lcd_id = 0x9340,
+ .lcd_name = "lcd_ili9340",
+ .panel = &lcd_panel_ili9340,
+};
+
+static int __init lcd_ili9340_init(void)
+{
+ printk(KERN_INFO "sprdfb_111: [%s]: 0x%x!\n", __FUNCTION__,lcd_ili9340.lcd_id);
+
+ return sprdfb_panel_register(&lcd_ili9340);
+}
+
+subsys_initcall(lcd_ili9340_init);
+

View file

@ -0,0 +1,255 @@
diff --git a/arch/arm/mach-sc/board-sp7715ga.c b/arch/arm/mach-sc/board-sp7715ga.c
index d80e056..cc9db11 100755
--- a/arch/arm/mach-sc/board-sp7715ga.c
+++ b/arch/arm/mach-sc/board-sp7715ga.c
@@ -26,8 +26,10 @@
#include <asm/localtimer.h>
#include <linux/i2c.h>
-//#include <linux/i2c/ft53x6_ts.h>
+#if(defined(CONFIG_TOUCHSCREEN))
+#include <linux/i2c/ft53x6_ts.h>
#include <linux/i2c/focaltech.h>
+#endif
#if(defined(CONFIG_INPUT_LIS3DH_I2C)||defined(CONFIG_INPUT_LIS3DH_I2C_MODULE))
#include <linux/i2c/lis3dh.h>
#endif
@@ -67,6 +69,11 @@
#include <mach/regulator.h>
#include <mach/i2s.h>
+#if defined(CONFIG_KEYBOARD_GPIO)
+#include <linux/gpio_keys.h>
+#include <linux/interrupt.h>
+#endif
+
extern void __init sci_reserve(void);
extern void __init sci_map_io(void);
extern void __init sci_init_irq(void);
@@ -78,15 +85,35 @@ extern int __init sprd_ramconsole_init(void);
#endif
/*keypad define */
-#define CUSTOM_KEYPAD_ROWS (SCI_ROW0 | SCI_ROW1)
-#define CUSTOM_KEYPAD_COLS (SCI_COL0 | SCI_COL1)
-#define ROWS (2)
-#define COLS (2)
+#define CUSTOM_KEYPAD_ROWS (SCI_ROW0 | SCI_ROW1 | SCI_ROW2 )
+#define CUSTOM_KEYPAD_COLS (SCI_COL0 | SCI_COL1 | SCI_COL2 )
+#define ROWS (3)
+#define COLS (3)
+
+#if defined(CONFIG_KEYBOARD_GPIO)
+#define GPIO_1_KEY 101
+#define GPIO_2_KEY 108
+#define GPIO_4_KEY 107
+#define GPIO_6_KEY 109
+#define GPIO_NUMERIC_STAR_KEY 100
+#define GPIO_UP_KEY 99
+#define GPIO_9_KEY 102
+#define GPIO_7_KEY 103
+#define GPIO_8_KEY 106
+#define GPIO_LEFT_KEY 105
+#define GPIO_RIGHT_KEY 110
+#define GPIO_SELECT_KEY 104
+#endif
static const unsigned int board_keymap[] = {
- KEY(0, 0, KEY_VOLUMEDOWN),
- KEY(1, 0, KEY_VOLUMEUP),
- KEY(0, 1, KEY_CAMERA),
+ KEY(0, 0, KEY_5),
+ KEY(1, 0, KEY_BACK),
+ KEY(2, 0, KEY_DOWN),
+ KEY(0, 1, KEY_SEND),
+ KEY(1, 1, KEY_0),
+ KEY(0, 2, KEY_3),
+ KEY(1, 2, KEY_MENU),
+ KEY(2, 2, KEY_NUMERIC_POUND),
};
static const struct matrix_keymap_data customize_keymap = {
@@ -108,6 +135,9 @@ static struct sci_keypad_platform_data sci_keypad_data = {
static struct platform_device rfkill_device;
static struct platform_device brcm_bluesleep_device;
static struct platform_device kb_backlight_device;
+#if defined(CONFIG_KEYBOARD_GPIO)
+static struct platform_device gpio_button_device;
+#endif
static struct platform_device *devices[] __initdata = {
&sprd_serial_device0,
@@ -200,6 +230,9 @@ static struct platform_device *devices[] __initdata = {
#ifdef CONFIG_RF_SHARK
&trout_fm_device,
#endif
+#if defined(CONFIG_KEYBOARD_GPIO)
+ &gpio_button_device,
+#endif
&sprd_headset_device,
&sprd_saudio_voip_device,
};
@@ -272,6 +305,121 @@ static struct platform_device rfkill_device = {
};
#endif
+#if defined(CONFIG_KEYBOARD_GPIO)
+static struct gpio_keys_button gpio_buttons[] = {
+ {
+ .gpio = GPIO_1_KEY,
+ .ds_irqflags = IRQF_TRIGGER_LOW,
+ .code = KEY_1,
+ .desc = "Key 1",
+ .active_low = 1,
+ .debounce_interval = 2,
+ },
+ {
+ .gpio = GPIO_2_KEY,
+ .ds_irqflags = IRQF_TRIGGER_LOW,
+ .code = KEY_2,
+ .desc = "Key 2",
+ .active_low = 1,
+ .debounce_interval = 2,
+ },
+ {
+ .gpio = GPIO_4_KEY,
+ .ds_irqflags = IRQF_TRIGGER_LOW,
+ .code = KEY_4,
+ .desc = "Key 4",
+ .active_low = 1,
+ .debounce_interval = 2,
+ },
+ {
+ .gpio = GPIO_6_KEY,
+ .ds_irqflags = IRQF_TRIGGER_LOW,
+ .code = KEY_6,
+ .desc = "Key 6",
+ .active_low = 1,
+ .debounce_interval = 2,
+ },
+ {
+ .gpio = GPIO_7_KEY,
+ .ds_irqflags = IRQF_TRIGGER_LOW,
+ .code = KEY_7,
+ .desc = "Key 7",
+ .active_low = 1,
+ .debounce_interval = 2,
+ },
+ {
+ .gpio = GPIO_8_KEY,
+ .ds_irqflags = IRQF_TRIGGER_LOW,
+ .code = KEY_8,
+ .desc = "Key 8",
+ .active_low = 1,
+ .debounce_interval = 2,
+ },
+ {
+ .gpio = GPIO_9_KEY,
+ .ds_irqflags = IRQF_TRIGGER_LOW,
+ .code = KEY_9,
+ .desc = "Key 9",
+ .active_low = 1,
+ .debounce_interval = 2,
+ },
+ {
+ .gpio = GPIO_UP_KEY,
+ .ds_irqflags = IRQF_TRIGGER_LOW,
+ .code = KEY_UP,
+ .desc = "Up key",
+ .active_low = 1,
+ .debounce_interval = 2,
+ },
+ {
+ .gpio = GPIO_LEFT_KEY,
+ .ds_irqflags = IRQF_TRIGGER_LOW,
+ .code = KEY_LEFT,
+ .desc = "Left key",
+ .active_low = 1,
+ .debounce_interval = 2,
+ },
+ {
+ .gpio = GPIO_RIGHT_KEY,
+ .ds_irqflags = IRQF_TRIGGER_LOW,
+ .code = KEY_RIGHT,
+ .desc = "Right key",
+ .active_low = 1,
+ .debounce_interval = 2,
+ },
+ {
+ .gpio = GPIO_SELECT_KEY,
+ .ds_irqflags = IRQF_TRIGGER_LOW,
+ .code = KEY_SELECT,
+ .desc = "Select key",
+ .active_low = 1,
+ .debounce_interval = 2,
+ },
+ {
+ .gpio = GPIO_NUMERIC_STAR_KEY,
+ .ds_irqflags = IRQF_TRIGGER_LOW,
+ .code = KEY_NUMERIC_STAR,
+ .desc = "Star key",
+ .active_low = 1,
+ .debounce_interval = 2,
+ },
+};
+
+static struct gpio_keys_platform_data gpio_button_data = {
+ .buttons = gpio_buttons,
+ .nbuttons = ARRAY_SIZE(gpio_buttons),
+};
+
+static struct platform_device gpio_button_device = {
+ .name = "gpio-keys",
+ .id = -1,
+ .num_resources = 0,
+ .dev = {
+ .platform_data = &gpio_button_data,
+ }
+};
+#endif
+
/* keypad backlight */
static struct platform_device kb_backlight_device = {
.name = "keyboard-backlight",
@@ -324,7 +472,7 @@ static struct serial_data plat_data2 = {
.clk = 26000000,
};
-static struct ft5x0x_ts_platform_data ft5x0x_ts_info = {
+/*static struct ft5x0x_ts_platform_data ft5x0x_ts_info = {
.irq_gpio_number = GPIO_TOUCH_IRQ,
.reset_gpio_number = GPIO_TOUCH_RESET,
.vdd_name = "vdd28",
@@ -341,7 +489,7 @@ static struct ft5x0x_ts_platform_data ft5x0x_ts_info = {
.TP_MAX_X = 540,
.TP_MAX_Y = 960,
#endif
-};
+};*/
#if(defined(CONFIG_INPUT_LTR558_I2C)||defined(CONFIG_INPUT_LTR558_I2C_MODULE))
static struct ltr558_pls_platform_data ltr558_pls_info = {
@@ -411,10 +411,12 @@ static struct i2c_board_info i2c0_boardinfo[] = {
};
static struct i2c_board_info i2c1_boardinfo[] = {
+#if(defined(CONFIG_TOUCHSCREEN))
{
I2C_BOARD_INFO(FOCALTECH_TS_NAME, FOCALTECH_TS_ADDR),
.platform_data = &ft5x0x_ts_info,
},
+#endif
};
static struct i2c_board_info i2c2_boardinfo[] = {
@@ -461,8 +611,8 @@ static struct i2c_board_info i2c2_boardinfo[] = {
static int sc8810_add_i2c_devices(void)
{
i2c_register_board_info(0, i2c0_boardinfo, ARRAY_SIZE(i2c0_boardinfo));
- i2c_register_board_info(1, i2c1_boardinfo, ARRAY_SIZE(i2c1_boardinfo));
- i2c_register_board_info(2, i2c2_boardinfo, ARRAY_SIZE(i2c2_boardinfo));
+ //i2c_register_board_info(1, i2c1_boardinfo, ARRAY_SIZE(i2c1_boardinfo));
+ //i2c_register_board_info(2, i2c2_boardinfo, ARRAY_SIZE(i2c2_boardinfo));
return 0;
}

View file

@ -0,0 +1,13 @@
diff --git a/xt_dscp.h b/xt_dscp.h
index 648e0b3..210a23a 100644
--- a/include/uapi/linux/netfilter/xt_dscp.h
+++ b/include/uapi/linux/netfilter/xt_dscp.h
@@ -13,6 +13,8 @@
#include <linux/netfilter/xt_dscp.h>
#include <linux/types.h>
+#define XT_DSCP_MASK 0xfc
+
/* target info */
struct xt_DSCP_info {
__u8 dscp;

View file

@ -0,0 +1,13 @@
diff --git a/drivers/video/sprdfb/sprdfb_main.c b/drivers/video/sprdfb/sprdfb_main.c
index cdb8c0c..6538bab 100644
--- a/drivers/video/sprdfb/sprdfb_main.c
+++ b/drivers/video/sprdfb/sprdfb_main.c
@@ -38,7 +38,7 @@ enum{
SPRD_IN_DATA_TYPE_LIMIT
};
-#define SPRDFB_IN_DATA_TYPE SPRD_IN_DATA_TYPE_ABGR888
+#define SPRDFB_IN_DATA_TYPE SPRD_IN_DATA_TYPE_BGR565
#ifdef CONFIG_FB_TRIPLE_FRAMEBUFFER
#define FRAMEBUFFER_NR (3)

View file

@ -0,0 +1,81 @@
# Reference: <https://postmarketos.org/vendorkernel>
# Maintainer: Anri Dellal <anridellal@gmail.com>
# Contributor: Anri Dellal <anridellal@gmail.com>
# Kernel config based on: arch/arm/configs/sp7715ga-native_defconfig
pkgname="linux-nobby-230"
pkgver=3.10.17
pkgrel=0
pkgdesc="Nobby 230 kernel fork"
arch="armv7"
_carch="arm"
_flavor="nobby-230"
url="https://kernel.org"
license="GPL-2.0-only"
options="!strip !check !tracedeps"
makedepends="gcc4 perl sed installkernel bash gmp-dev bc linux-headers elfutils-dev devicepkg-dev"
# Compiler: GCC4. Doesn't boot with newer versions of GCC
if [ "${CC:0:5}" != "gcc4-" ]; then
CC="gcc4-$CC"
HOSTCC="gcc4-gcc"
CROSS_COMPILE="gcc4-$CROSS_COMPILE"
fi
# Source
_repository="android_kernel_scx15_sp7715ga_FS001"
_commit="161c7229a4873ead08fc0118d93967b66e38d645"
_config="config-$_flavor.$arch"
source="
$pkgname-$_commit.tar.gz::https://github.com/Qiangong2/$_repository/archive/$_commit.tar.gz
$_config
kernel-use-the-gnu89-standard-explicitly.patch
01-fix-X11.patch
02-arm-eabi-not-found.patch
03-add-ili9340-support.patch
04-add-keypad-support.patch
05-add-xt-dscp-mask-define.patch
06-set-BGR565-color-mode.patch
"
builddir="$srcdir/$_repository-$_commit"
prepare() {
default_prepare
downstreamkernel_prepare "$srcdir" "$builddir" "$_config" "$_carch" "$HOSTCC"
}
build() {
unset LDFLAGS
make ARCH="$_carch" CC="${CC:-gcc}" \
KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-postmarketOS"
}
package() {
# kernel.release
install -D "$builddir/include/config/kernel.release" \
"$pkgdir/usr/share/kernel/$_flavor/kernel.release"
# zImage (find the right one)
cd "$builddir/arch/$_carch/boot"
_target="$pkgdir/boot/vmlinuz-$_flavor"
for _zimg in zImage-dtb Image.gz-dtb *zImage Image; do
[ -e "$_zimg" ] || continue
msg "zImage found: $_zimg"
install -Dm644 "$_zimg" "$_target"
break
done
if ! [ -e "$_target" ]; then
error "Could not find zImage in $PWD!"
return 1
fi
}
sha512sums="0bee0e9c67c155957ed90f6f3707ec9663fd541c1c73e93c747b71423b37d64486c1c758b5e889280210b69d377c0bb203346f8d290252d5a4989788749b6e89 linux-nobby-230-161c7229a4873ead08fc0118d93967b66e38d645.tar.gz
d24744af22416041aad23e67af3b37223e8a3ea8c6e2966431c8519886c2c0520f7c80939fdbe87225172f33f53e31a6501caac7c847c34b72f54b3c801cce1c config-nobby-230.armv7
ad0182a483791fc88e058838bc331b2f04a75ba291e763767babdb815efadfc3b4fda97e69e2e3f00a426cabea088e35297a92bd287592597d1e309be68ee92c kernel-use-the-gnu89-standard-explicitly.patch
fd3d5578120f43a09013feebe3ea75cff71de1078a92a20d27083f15279106f4c95f7889d432eabc689954d9db4bff09a429374b8d2891f23f08d64e66affd86 01-fix-X11.patch
1cc15cf60c31f9cf4d82c74c3578fd8be55506278e5106634973784179509e47a7741e42241a7aa8622c0ce4192a331cf860b11537998ba4f8af4da13718229e 02-arm-eabi-not-found.patch
720babeda78dfda03e99771bcdbaea35a9dc5fbe4ad6d6464802fda66829cb4b74a275d0f209e7f093c98a3b5ab654edeebfbdc499398ca8b21046534f7acd0b 03-add-ili9340-support.patch
3b05155fdde4eca90c3c3be672f4e6eb2d888110eceb6ca88b593f835be36bcab91206dced76bc0a3ca71346ce50b4adec10a9f47a00a69b1d6e11ac268a51a9 04-add-keypad-support.patch
8eb858cb1389bc5a9b39be96d8bb76d5ba6d58859eab32a496103d0d70218e994956fdd45e73e58a56881348b07503cdb177ee8836b797772af9d2743d58ed03 05-add-xt-dscp-mask-define.patch
b0b59a222ab44d1c4e90fed0506d38282e8a2dfbed4bde9c0c5e381ae40177d916abec984a2b66fbca9d96c3afe4e3fa0e0922a300e91cb8ac1020cb15a9f88b 06-set-BGR565-color-mode.patch"

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1 @@
../../.shared-patches/linux/kernel-use-the-gnu89-standard-explicitly.patch