samsung-i927: update kernel to 5.2.1, more updates (!452)

- OTG support
- Charger
- WiFi 5GHz
- RTC bug "fixed" (always-on interrupt - made device overheat!)
- Kernel version bumped to 5.2.1
- Memory timings
- New WM8994 codec board driver (fixes suspend/resume)
- Camera's regulator supported now (saves power at least!)
- Updated panel driver (still not in mainline, idk why)
- MHL support in kernel (fixes boot times and screen, currently disabled in X,
  not tested)
- Other minor kernel chagnes

[ci:skip-build]: already built successfully in CI
This commit is contained in:
Sergey Larin 2019-06-21 00:05:55 +03:00 committed by Oliver Smith
parent 40b98f4ca8
commit 5ccbcf999d
No known key found for this signature in database
GPG key ID: 5AE7F5513E0885CB
68 changed files with 3561 additions and 613 deletions

View file

@ -5,8 +5,9 @@ Section "Device"
Driver "opentegra"
Option "SWcursor" "false"
# This can cause rendering issues
# Option "AccelCompositing" "true"
Option "AccelCompositing" "true"
Option "NoAccel" "false"
Option "TearFree" "true"
EndSection
Section "InputClass"
@ -20,4 +21,37 @@ EndSection
Section "Monitor"
Identifier "LVDS-0"
Option "Rotate" "right"
Option "DPMS" "true"
Option "Primary" "true"
EndSection
Section "Screen"
Identifier "Panel"
Device "Tegra Graphics"
Monitor "LVDS-0"
EndSection
# This is for MHL (not tested)
Section "Monitor"
Identifier "HDMI-0"
# Ignored for now because resolution becomes wrong (848 instead of 840)
Option "ignore" "true"
EndSection
Section "Screen"
Identifier "MHL"
Device "Tegra Graphics"
Monitor "HDMI-0"
EndSection
# This is for DPMS - MATE does not suspend the display panel,
# insead, it just shows you an empty black screensaver.
# Also sets MHL layout, but it doesn't really work due to touchscreen,
# however, it can be fixed with scripts
Section "ServerLayout"
Identifier "Samsung panel"
Screen 0 "Panel" 0 0
Screen 1 "MHL" 0 0
Option "BlankTime" "0"
# Option "SuspendTime" "300"
EndSection

View file

@ -1,8 +1,8 @@
# Reference: <https://postmarketos.org/devicepkg>
pkgname="device-samsung-i927"
pkgdesc="Samsung Captivate Glide"
pkgver=0.2
pkgrel=2
pkgver=0.3
pkgrel=0
url="https://postmarketos.org"
license="MIT"
arch="armv7"
@ -81,10 +81,10 @@ nonfree_firmware() {
sha512sums="f766baaedddad320bb0ae3f54a0a369ae7cda6cef77bcf8a5d45c9b86ea655f05fac9bee2c72b2391fe5740e36c8117cbabf574c99ef3e5ad1c163993fb2a36e deviceinfo
d8ce60ea7acaabf627ddca2f0887a4cda46f313b7aaf7934bef2fef8a6e0798ccefab849e4571e4e3fcd06ae34c1a6efe3b58b401e2e443416f6200e6d4ea769 modules-load.conf
761a53c000fbca43d613d42f8f991e593828ae508b1ad1e0c157eebe42175da28adf468121af4974cdadea4a80af544c215284a05a5c65ee3a4fd5d924dc5ed9 HiFi.conf
cbe74051ac81a3a8878dc804cd42fd27959da4460fa531ba4d57f2f2bc6504c28a913fe3f5bef1e8dd351950696a64e84f9e56c77300fd736cdfe50b9b827a05 Voice.conf
97780fe04738a88afa2bc8bd96de5f053861d1ecb83185fc8af4534e77f365c0cbaaffdb2ee579aa0940db7ec3df74cbb90aa122d5fc97a2e3977432010f254f HiFi.conf
a790d9f06ab32a36ecfaf7f43e5b3c6d12e383f54ba0bad649edcf177f97d053d53de993a7df297bae91807f648c43ba69b2d1cf24969669155df89d6a7ad36c Voice.conf
6fa188b7756edc28f7cfa7dd6a6d2eacb828b55c4a989673321d82ef0802d8c1dd44d0aa40ba9bdb05843fd96c73325380c8bdcd41e35b269c4655196c888d99 wm8994aif1.conf
000e5400c552daa83b40d211cba78d034cd7430eb98d039190a71cf7df8a5921d78a0abfae824129284650748ab939e60cdbbe41841c43ae86d229c39f7fe1c0 40-samsung-i927.conf
81b90a4076e18f916937b48fb175172b0d41534d4a69db8d12043a40bd89a9f6d5f60f39a5a1d91479a061369b72bd29aa0fa9cc9706190cfeb21cd57eee5e37 40-samsung-i927.conf
607d8631a4ced6b727f93f8ffbcf906c0c216c71bbd026cb2538d1b25f94c9f09c06531da5a0bbbd40b064c5b15b8fa693deec9fe683ad009ca80f7afbb12c6b Xkbmap
5f6e51d51e0392fa25626554673a751d9bdee19c503eadf2f3a4e30b6cf8ff8d99b0ddf436dc2e496a3701c1969aca165eebc368fa6bbfb9cb3554dcf627f75d i927
49aad2429c0fa7a0dcc99a57c6372d1223661ec0ecf5fcb1ede28992138dbc2a1b8e18ca265ad7e9bc2f389b8f2cd7ec57598c1dbb2d8de0ee4a277fb3d79957 i927_rules

View file

@ -1,31 +1,36 @@
SectionVerb {
EnableSequence [
cdev "hw:wm8994aif1"
EnableSequence [
cdev "hw:wm8994aif1"
]
# Speaker
DisableSequence [
cdev "hw:wm8994aif1"
]
Value {
PlaybackPCM "hw:wm8994aif1,0"
CapturePCM "hw:wm8994aif1,0"
}
}
SectionDevice."Speaker" {
EnableSequence [
cdev "hw:wm8994aif1"
cset "name='Speaker Mixer Volume' 100"
cset "name='SPKR Output Switch' 1"
cset "name='SPKL Output Switch' 1"
cset "name='SPKL Boost SPKL Switch' 1"
cset "name='SPKL Boost SPKR Switch' 1"
cset "name='SPKR Boost SPKL Switch' 0"
cset "name='SPKR Boost SPKR Switch' 1"
cset "name='Speaker Mixer Volume' 100"
cset "name='Speaker Switch' 1"
]
# Headphones
cset "name='Left Headphone Mux' Mixer"
cset "name='Right Headphone Mux' Mixer"
cset "name='Left Output Mixer DAC Switch' 1"
cset "name='Right Output Mixer DAC Switch' 1"
DisableSequence [
cdev "hw:wm8994aif1"
# Earpiece
cset "name='Earpiece Mixer Left Output Switch' 1"
cset "name='Earpiece Mixer Right Output Switch' 1"
]
DisableSequence [
cdev "hw:wm8994aif1"
# Speaker
cset "name='Speaker Switch' 0"
cset "name='SPKR Output Switch' 0"
cset "name='SPKL Output Switch' 0"
cset "name='SPKL Boost SPKL Switch' 0"
@ -33,103 +38,61 @@ SectionVerb {
cset "name='SPKR Boost SPKL Switch' 0"
cset "name='SPKR Boost SPKR Switch' 0"
cset "name='Speaker Mixer Volume' 0"
]
# Headphones
cset "name='Left Headphone Mux' Mixer"
cset "name='Right Headphone Mux' Mixer"
cset "name='Left Output Mixer DAC Switch' 0"
cset "name='Right Output Mixer DAC Switch' 0"
# Earpiece
cset "name='Earpiece Mixer Left Output Switch' 0"
cset "name='Earpiece Mixer Right Output Switch' 0"
]
Value {
PlaybackPCM "hw:wm8994aif1,0"
CapturePCM "hw:wm8994aif1,0"
}
}
SectionDevice."Speaker" {
EnableSequence [
cdev "hw:wm8994aif1"
cset "name='Speaker Switch' 1"
]
DisableSequence [
cdev "hw:wm8994aif1"
cset "name='Speaker Switch' 0"
]
Value {
PlaybackChannels "2"
}
Value {
PlaybackVolume "name='Speaker Volume'"
PlaybackChannels "2"
}
}
SectionDevice."Headphones" {
EnableSequence [
cdev "hw:wm8994aif1"
EnableSequence [
cdev "hw:wm8994aif1"
cset "name='Headphone Switch' 1"
]
cset "name='Left Output Mixer DAC Switch' 1"
cset "name='Right Output Mixer DAC Switch' 1"
cset "name='Left Headphone Mux' Mixer"
cset "name='Right Headphone Mux' Mixer"
cset "name='Headphone Switch' 1"
]
DisableSequence [
cdev "hw:wm8994aif1"
DisableSequence [
cdev "hw:wm8994aif1"
cset "name='Headphone Switch' 0"
]
cset "name='Headphone Switch' 0"
cset "name='Left Headphone Mux' DAC"
cset "name='Right Headphone Mux' DAC"
cset "name='Left Output Mixer DAC Switch' 0"
cset "name='Right Output Mixer DAC Switch' 0"
]
Value {
PlaybackChannels "2"
}
}
SectionDevice."Voice" {
EnableSequence [
cdev "hw:wm8994aif1"
cset "name='IN1L Switch' 1"
cset "name='IN1L PGA IN1LN Switch' 1"
cset "name='IN1L PGA IN1LP Switch' 1"
]
DisableSequence [
cdev "hw:wm8994aif1"
cset "name='IN1L Switch' 0"
cset "name='IN1L PGA IN1LN Switch' 0"
cset "name='IN1L PGA IN1LP Switch' 0"
]
Value {
CaptureChannels "2"
}
Value {
PlaybackVolume "name='Headphone Volume'"
PlaybackChannels "2"
}
}
SectionDevice."Earpiece" {
EnableSequence [
cdev "hw:wm8994aif1"
EnableSequence [
cdev "hw:wm8994aif1"
cset "name='Earpiece Mixer Left Output Switch' 1"
cset "name='Earpiece Mixer Right Output Switch' 1"
cset "name='Earpiece Switch' 1"
]
]
DisableSequence [
cdev "hw:wm8994aif1"
DisableSequence [
cdev "hw:wm8994aif1"
cset "name='Earpiece Switch' 0"
cset "name='Earpiece Mixer Left Output Switch' 0"
cset "name='Earpiece Mixer Right Output Switch' 0"
cset "name='Earpiece Switch' 0"
]
]
Value {
PlaybackChannels "2"
}
Value {
PlaybackVolume "name='Earpiece Volume'"
PlaybackChannels "2"
}
}

View file

@ -30,9 +30,9 @@ SectionDevice."Headset".0 {
EnableSequence [
cdev "hw:wm8994aif1"
cset "name='IN1L Switch' 1"
cset "name='IN1L PGA IN1LN Switch' 1"
cset "name='IN1L PGA IN1LP Switch' 1"
cset "name='IN1L Switch' 1"
]
DisableSequence [

View file

@ -1,4 +1,4 @@
From 2b9e681359e72c3ee0387dfc9b10ec9a7f548c97 Mon Sep 17 00:00:00 2001
From ad131294648ed09377a9c1ce9ecd68e2c587fa56 Mon Sep 17 00:00:00 2001
From: Jonathan Bakker <xc-racer2@live.ca>
Date: Tue, 12 Jun 2018 11:32:26 -0700
Subject: [PATCH] dt-bindings: drm: panel: Add Samsung s6e63m0 panel
@ -12,16 +12,6 @@ driver.
Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
Signed-off-by: Paweł Chmiel <pawel.mikolaj.chmiel@gmail.com>
---
Changes from v1:
- Add missing subject prefix
- Rename reset-gpio to reset-gpios
- Add link to spi properites documentation. They're required
for driver to work
- Removed delay properties, which are now hardcoded in driver
- Removed display timings, which are now hardcoded in driver
Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
---
.../display/panel/samsung,s6e63m0.txt | 33 +++++++++++++++++++
1 file changed, 33 insertions(+)
@ -67,5 +57,5 @@ index 000000000000..9fb9ebeef8e4
+ };
+ };
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From 837ca6b151a2ffe19b622a22351ea4a19c1d2cfd Mon Sep 17 00:00:00 2001
From 7a2c716cabba413f36f3da0f0aa35f0686cff215 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pawe=C5=82=20Chmiel?= <pawel.mikolaj.chmiel@gmail.com>
Date: Fri, 25 Jan 2019 16:32:08 +0100
Subject: [PATCH] drm/panel: Add driver for Samsung S6E63M0 panel
@ -13,58 +13,19 @@ Aries based phones.
Signed-off-by: Paweł Chmiel <pawel.mikolaj.chmiel@gmail.com>
Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
---
Changes from v2:
- VIDEOMODE_HELPERS is not needed in Kconfig
- Added help text to Kconfig
- Remove unneeded videomode includes/fields
- Add sentinel comment in s6e63m0_of_match struct
- Handle errors during registration of backlight device. We shouldn't
register panel if we fail to register backlight device
- Added Reviewed-by
Changes from v1:
- Correct order of Kconfig/Makefile entry
- Fix SPDX tag, so it matches value of MODULE_LICENSE
- Remove inclusion of drmP.h
- Fix code formatting
- Use DRM_DEV_ERROR/DEBUG
- Extract hardcoded values
- Remove possibility to change gamma through sysfs, leaving only one
gamma table values
- Fix reset_gpio handling, so it'll be asserted in power_on and
deasserted in power_off. Also do it before turning voltage on.
- Disable backlight and enter sleep mode in disable callback.
Previously it was done in unprepare
- Enable display and backlight in enable callback. Previously it was
done in prepare
- Hardcode display timings and delays. Previously they were readed
from device tree
- We're using SPDX, so we don't need to have license body
- Use MIPI_DCS_EXIT_SLEEP_MODE and MIPI_DCS_SET_DISPLAY_ON
- Rename MAX_GAMMA_LEVEL to NUM_GAMMA_LEVELS
- Ommit get_brightness callback
- Use backlight_enable/disable API, like it's done in other panel
drivers (for example panel-simple)
- Make set_brightness called only from backlight api, like it's done
in other panel drivers (for example panel-simple).
- Reset gpio should be set to GPIOD_OUT_HIGH. It's declared as active
low in device tree
- Don't call power_off in remove callback
Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
Reviewed-by: Andrzej Hajda <a.hajda@samsung.com>
---
drivers/gpu/drm/panel/Kconfig | 9 +
drivers/gpu/drm/panel/Makefile | 1 +
drivers/gpu/drm/panel/panel-samsung-s6e63m0.c | 517 ++++++++++++++++++
3 files changed, 527 insertions(+)
drivers/gpu/drm/panel/panel-samsung-s6e63m0.c | 514 ++++++++++++++++++
3 files changed, 524 insertions(+)
create mode 100644 drivers/gpu/drm/panel/panel-samsung-s6e63m0.c
diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig
index 6020c30a33b3..1a2c1d756bd3 100644
index e281fc544742..b23ffd2703d7 100644
--- a/drivers/gpu/drm/panel/Kconfig
+++ b/drivers/gpu/drm/panel/Kconfig
@@ -140,6 +140,15 @@ config DRM_PANEL_SAMSUNG_S6E63J0X03
@@ -201,6 +201,15 @@ config DRM_PANEL_SAMSUNG_S6E63J0X03
depends on BACKLIGHT_CLASS_DEVICE
select VIDEOMODE_HELPERS
@ -81,11 +42,11 @@ index 6020c30a33b3..1a2c1d756bd3 100644
tristate "Samsung S6E8AA0 DSI video mode panel"
depends on OF
diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile
index 5ccaaa9d13af..fd6fbcf7808c 100644
index 78e3dc376bdd..7fd498ab8f0f 100644
--- a/drivers/gpu/drm/panel/Makefile
+++ b/drivers/gpu/drm/panel/Makefile
@@ -14,6 +14,7 @@ obj-$(CONFIG_DRM_PANEL_RAYDIUM_RM68200) += panel-raydium-rm68200.o
obj-$(CONFIG_DRM_PANEL_SAMSUNG_LD9040) += panel-samsung-ld9040.o
@@ -20,6 +20,7 @@ obj-$(CONFIG_DRM_PANEL_SAMSUNG_LD9040) += panel-samsung-ld9040.o
obj-$(CONFIG_DRM_PANEL_SAMSUNG_S6D16D0) += panel-samsung-s6d16d0.o
obj-$(CONFIG_DRM_PANEL_SAMSUNG_S6E3HA2) += panel-samsung-s6e3ha2.o
obj-$(CONFIG_DRM_PANEL_SAMSUNG_S6E63J0X03) += panel-samsung-s6e63j0x03.o
+obj-$(CONFIG_DRM_PANEL_SAMSUNG_S6E63M0) += panel-samsung-s6e63m0.o
@ -94,10 +55,10 @@ index 5ccaaa9d13af..fd6fbcf7808c 100644
obj-$(CONFIG_DRM_PANEL_SHARP_LQ101R1SX01) += panel-sharp-lq101r1sx01.o
diff --git a/drivers/gpu/drm/panel/panel-samsung-s6e63m0.c b/drivers/gpu/drm/panel/panel-samsung-s6e63m0.c
new file mode 100644
index 000000000000..4312aa3e4386
index 000000000000..142d395ea512
--- /dev/null
+++ b/drivers/gpu/drm/panel/panel-samsung-s6e63m0.c
@@ -0,0 +1,517 @@
@@ -0,0 +1,514 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * S6E63M0 AMOLED LCD drm_panel driver.
@ -123,11 +84,13 @@ index 000000000000..4312aa3e4386
+
+/* Manufacturer Command Set */
+#define MCS_ELVSS_ON 0xb1
+#define MCS_ACL_CTRL 0xc0
+#define MCS_DISPLAY_CONDITION 0xf2
+#define MCS_ETC_CONDITION 0xf6
+#define MCS_PANEL_CONDITION 0xF8
+#define MCS_GAMMA_CTRL 0xfa
+#define MCS_MIECTL1 0xc0
+#define MCS_BCMODE 0xc1
+#define MCS_DISCTL 0xf2
+#define MCS_SRCCTL 0xf6
+#define MCS_IFCTL 0xf7
+#define MCS_PANELCTL 0xF8
+#define MCS_PGAMMACTL 0xfa
+
+#define NUM_GAMMA_LEVELS 11
+#define GAMMA_TABLE_COUNT 23
@ -138,47 +101,47 @@ index 000000000000..4312aa3e4386
+
+/* array of gamma tables for gamma value 2.2 */
+static u8 const s6e63m0_gamma_22[NUM_GAMMA_LEVELS][GAMMA_TABLE_COUNT] = {
+ { MCS_GAMMA_CTRL, 0x00,
+ { MCS_PGAMMACTL, 0x00,
+ 0x18, 0x08, 0x24, 0x78, 0xEC, 0x3D, 0xC8,
+ 0xC2, 0xB6, 0xC4, 0xC7, 0xB6, 0xD5, 0xD7,
+ 0xCC, 0x00, 0x39, 0x00, 0x36, 0x00, 0x51 },
+ { MCS_GAMMA_CTRL, 0x00,
+ { MCS_PGAMMACTL, 0x00,
+ 0x18, 0x08, 0x24, 0x73, 0x4A, 0x3D, 0xC0,
+ 0xC2, 0xB1, 0xBB, 0xBE, 0xAC, 0xCE, 0xCF,
+ 0xC5, 0x00, 0x5D, 0x00, 0x5E, 0x00, 0x82 },
+ { MCS_GAMMA_CTRL, 0x00,
+ { MCS_PGAMMACTL, 0x00,
+ 0x18, 0x08, 0x24, 0x70, 0x51, 0x3E, 0xBF,
+ 0xC1, 0xAF, 0xB9, 0xBC, 0xAB, 0xCC, 0xCC,
+ 0xC2, 0x00, 0x65, 0x00, 0x67, 0x00, 0x8D },
+ { MCS_GAMMA_CTRL, 0x00,
+ { MCS_PGAMMACTL, 0x00,
+ 0x18, 0x08, 0x24, 0x6C, 0x54, 0x3A, 0xBC,
+ 0xBF, 0xAC, 0xB7, 0xBB, 0xA9, 0xC9, 0xC9,
+ 0xBE, 0x00, 0x71, 0x00, 0x73, 0x00, 0x9E },
+ { MCS_GAMMA_CTRL, 0x00,
+ { MCS_PGAMMACTL, 0x00,
+ 0x18, 0x08, 0x24, 0x69, 0x54, 0x37, 0xBB,
+ 0xBE, 0xAC, 0xB4, 0xB7, 0xA6, 0xC7, 0xC8,
+ 0xBC, 0x00, 0x7B, 0x00, 0x7E, 0x00, 0xAB },
+ { MCS_GAMMA_CTRL, 0x00,
+ { MCS_PGAMMACTL, 0x00,
+ 0x18, 0x08, 0x24, 0x66, 0x55, 0x34, 0xBA,
+ 0xBD, 0xAB, 0xB1, 0xB5, 0xA3, 0xC5, 0xC6,
+ 0xB9, 0x00, 0x85, 0x00, 0x88, 0x00, 0xBA },
+ { MCS_GAMMA_CTRL, 0x00,
+ { MCS_PGAMMACTL, 0x00,
+ 0x18, 0x08, 0x24, 0x63, 0x53, 0x31, 0xB8,
+ 0xBC, 0xA9, 0xB0, 0xB5, 0xA2, 0xC4, 0xC4,
+ 0xB8, 0x00, 0x8B, 0x00, 0x8E, 0x00, 0xC2 },
+ { MCS_GAMMA_CTRL, 0x00,
+ { MCS_PGAMMACTL, 0x00,
+ 0x18, 0x08, 0x24, 0x62, 0x54, 0x30, 0xB9,
+ 0xBB, 0xA9, 0xB0, 0xB3, 0xA1, 0xC1, 0xC3,
+ 0xB7, 0x00, 0x91, 0x00, 0x95, 0x00, 0xDA },
+ { MCS_GAMMA_CTRL, 0x00,
+ { MCS_PGAMMACTL, 0x00,
+ 0x18, 0x08, 0x24, 0x66, 0x58, 0x34, 0xB6,
+ 0xBA, 0xA7, 0xAF, 0xB3, 0xA0, 0xC1, 0xC2,
+ 0xB7, 0x00, 0x97, 0x00, 0x9A, 0x00, 0xD1 },
+ { MCS_GAMMA_CTRL, 0x00,
+ { MCS_PGAMMACTL, 0x00,
+ 0x18, 0x08, 0x24, 0x64, 0x56, 0x33, 0xB6,
+ 0xBA, 0xA8, 0xAC, 0xB1, 0x9D, 0xC1, 0xC1,
+ 0xB7, 0x00, 0x9C, 0x00, 0x9F, 0x00, 0xD6 },
+ { MCS_GAMMA_CTRL, 0x00,
+ { MCS_PGAMMACTL, 0x00,
+ 0x18, 0x08, 0x24, 0x5f, 0x50, 0x2d, 0xB6,
+ 0xB9, 0xA7, 0xAd, 0xB1, 0x9f, 0xbe, 0xC0,
+ 0xB5, 0x00, 0xa0, 0x00, 0xa4, 0x00, 0xdb },
@ -279,38 +242,26 @@ index 000000000000..4312aa3e4386
+ s6e63m0_dcs_write(ctx, d, ARRAY_SIZE(d)); \
+ })
+
+static void s6e63m0_brightness_set(struct s6e63m0 *ctx)
+{
+ int brightness = ctx->bl_dev->props.brightness;
+
+ /* disable and set new gamma */
+ s6e63m0_dcs_write(ctx, s6e63m0_gamma_22[brightness],
+ ARRAY_SIZE(s6e63m0_gamma_22[brightness]));
+
+ /* update gamma table. */
+ s6e63m0_dcs_write_seq_static(ctx, MCS_GAMMA_CTRL, 0x01);
+}
+
+static void s6e63m0_init(struct s6e63m0 *ctx)
+{
+ s6e63m0_dcs_write_seq_static(ctx, MCS_PANEL_CONDITION,
+ s6e63m0_dcs_write_seq_static(ctx, MCS_PANELCTL,
+ 0x01, 0x27, 0x27, 0x07, 0x07, 0x54, 0x9f,
+ 0x63, 0x86, 0x1a, 0x33, 0x0d, 0x00, 0x00);
+
+ s6e63m0_dcs_write_seq_static(ctx, MCS_DISPLAY_CONDITION,
+ s6e63m0_dcs_write_seq_static(ctx, MCS_DISCTL,
+ 0x02, 0x03, 0x1c, 0x10, 0x10);
+ s6e63m0_dcs_write_seq_static(ctx, 0xf7,
+ s6e63m0_dcs_write_seq_static(ctx, MCS_IFCTL,
+ 0x03, 0x00, 0x00);
+
+ s6e63m0_dcs_write_seq_static(ctx, MCS_GAMMA_CTRL,
+ s6e63m0_dcs_write_seq_static(ctx, MCS_PGAMMACTL,
+ 0x00, 0x18, 0x08, 0x24, 0x64, 0x56, 0x33,
+ 0xb6, 0xba, 0xa8, 0xac, 0xb1, 0x9d, 0xc1,
+ 0xc1, 0xb7, 0x00, 0x9c, 0x00, 0x9f, 0x00,
+ 0xd6);
+ s6e63m0_dcs_write_seq_static(ctx, MCS_GAMMA_CTRL,
+ s6e63m0_dcs_write_seq_static(ctx, MCS_PGAMMACTL,
+ 0x01);
+
+ s6e63m0_dcs_write_seq_static(ctx, MCS_ETC_CONDITION,
+ s6e63m0_dcs_write_seq_static(ctx, MCS_SRCCTL,
+ 0x00, 0x8c, 0x07);
+ s6e63m0_dcs_write_seq_static(ctx, 0xb3,
+ 0xc);
@ -348,7 +299,7 @@ index 000000000000..4312aa3e4386
+ 0x44, 0x55, 0x55, 0x66, 0x66, 0x66, 0x66,
+ 0x66, 0x66);
+
+ s6e63m0_dcs_write_seq_static(ctx, 0xc1,
+ s6e63m0_dcs_write_seq_static(ctx, MCS_BCMODE,
+ 0x4d, 0x96, 0x1d, 0x00, 0x00, 0x01, 0xdf,
+ 0x00, 0x00, 0x03, 0x1f, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06,
@ -357,7 +308,7 @@ index 000000000000..4312aa3e4386
+ s6e63m0_dcs_write_seq_static(ctx, 0xb2,
+ 0x10, 0x10, 0x0b, 0x05);
+
+ s6e63m0_dcs_write_seq_static(ctx, MCS_ACL_CTRL,
+ s6e63m0_dcs_write_seq_static(ctx, MCS_MIECTL1,
+ 0x01);
+
+ s6e63m0_dcs_write_seq_static(ctx, MCS_ELVSS_ON,
@ -370,15 +321,15 @@ index 000000000000..4312aa3e4386
+{
+ int ret;
+
+ gpiod_set_value(ctx->reset_gpio, 0);
+ msleep(120);
+
+ ret = regulator_bulk_enable(ARRAY_SIZE(ctx->supplies), ctx->supplies);
+ if (ret < 0)
+ return ret;
+
+ msleep(25);
+
+ gpiod_set_value(ctx->reset_gpio, 0);
+ msleep(120);
+
+ return 0;
+}
+
@ -386,13 +337,13 @@ index 000000000000..4312aa3e4386
+{
+ int ret;
+
+ gpiod_set_value(ctx->reset_gpio, 1);
+ msleep(120);
+
+ ret = regulator_bulk_disable(ARRAY_SIZE(ctx->supplies), ctx->supplies);
+ if (ret < 0)
+ return ret;
+
+ gpiod_set_value(ctx->reset_gpio, 1);
+ msleep(120);
+
+ return 0;
+}
+
@ -505,7 +456,14 @@ index 000000000000..4312aa3e4386
+{
+ struct s6e63m0 *ctx = bl_get_data(bd);
+
+ s6e63m0_brightness_set(ctx);
+ int brightness = bd->props.brightness;
+
+ /* disable and set new gamma */
+ s6e63m0_dcs_write(ctx, s6e63m0_gamma_22[brightness],
+ ARRAY_SIZE(s6e63m0_gamma_22[brightness]));
+
+ /* update gamma table. */
+ s6e63m0_dcs_write_seq_static(ctx, MCS_PGAMMACTL, 0x01);
+
+ return s6e63m0_clear_error(ctx);
+}
@ -616,5 +574,5 @@ index 000000000000..4312aa3e4386
+MODULE_DESCRIPTION("s6e63m0 LCD Driver");
+MODULE_LICENSE("GPL v2");
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From 6dfb5189947dc913e9e643a82dd0f69efe7b16d7 Mon Sep 17 00:00:00 2001
From cb4d53dc10a31f773a2bac3955cb2a22bdd4dcc8 Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Sat, 26 Jan 2019 10:41:50 +0300
Subject: [PATCH] drm/tegra: Hacks for S6E63M0
@ -12,10 +12,10 @@ Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
1 file changed, 8 insertions(+)
diff --git a/drivers/gpu/drm/tegra/rgb.c b/drivers/gpu/drm/tegra/rgb.c
index 28a78d3120bc..a61c01b1b6f5 100644
index 4be4dfd4a68a..ae006396e78a 100644
--- a/drivers/gpu/drm/tegra/rgb.c
+++ b/drivers/gpu/drm/tegra/rgb.c
@@ -39,9 +39,17 @@ static const struct reg_entry rgb_enable[] = {
@@ -36,9 +36,17 @@ static const struct reg_entry rgb_enable[] = {
{ DC_COM_PIN_OUTPUT_ENABLE(2), 0x00000000 },
{ DC_COM_PIN_OUTPUT_ENABLE(3), 0x00000000 },
{ DC_COM_PIN_OUTPUT_POLARITY(0), 0x00000000 },
@ -34,5 +34,5 @@ index 28a78d3120bc..a61c01b1b6f5 100644
{ DC_COM_PIN_OUTPUT_DATA(1), 0x00000000 },
{ DC_COM_PIN_OUTPUT_DATA(2), 0x00000000 },
--
2.20.1
2.22.0

View file

@ -1,41 +0,0 @@
From 081df7f8582115c7b87f3516946acb829a1aa357 Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Sat, 26 Jan 2019 19:27:36 +0300
Subject: [PATCH] iio: gyro: mpu3050: get chip ID correctly
According to the datasheet, the first bit of CHIP_ID register specifies
the I2C bus state, and the last one does not belong to ID. Handle this
correctly.
Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
---
drivers/iio/gyro/mpu3050-core.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/iio/gyro/mpu3050-core.c b/drivers/iio/gyro/mpu3050-core.c
index 77fac81a3adc..0c541cbf13a4 100644
--- a/drivers/iio/gyro/mpu3050-core.c
+++ b/drivers/iio/gyro/mpu3050-core.c
@@ -29,7 +29,7 @@
#include "mpu3050.h"
-#define MPU3050_CHIP_ID 0x69
+#define MPU3050_CHIP_ID 0x68
/*
* Register map: anything suffixed *_H is a big-endian high byte and always
@@ -1176,8 +1176,8 @@ int mpu3050_common_probe(struct device *dev,
goto err_power_down;
}
- if (val != MPU3050_CHIP_ID) {
- dev_err(dev, "unsupported chip id %02x\n", (u8)val);
+ if ((val & 0x7E) != MPU3050_CHIP_ID) {
+ dev_err(dev, "unsupported chip id %02x\n", (u8)(val & 0x7E));
ret = -ENODEV;
goto err_power_down;
}
--
2.20.1

View file

@ -1,4 +1,4 @@
From baee924a1eb54c7b4283948f7a141134a351a188 Mon Sep 17 00:00:00 2001
From 71c0d5721b1855fa352f6cb223d1fc5014412267 Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Sat, 26 Jan 2019 19:32:58 +0300
Subject: [PATCH] soc/tegra: fix build for Tegra
@ -12,10 +12,10 @@ Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
1 file changed, 1 insertion(+)
diff --git a/drivers/soc/tegra/Kconfig b/drivers/soc/tegra/Kconfig
index fe4481676da6..ad5ede8f84ce 100644
index fbfce48ffb0d..a71650cc7bb3 100644
--- a/drivers/soc/tegra/Kconfig
+++ b/drivers/soc/tegra/Kconfig
@@ -126,6 +126,7 @@ config SOC_TEGRA_FLOWCTRL
@@ -128,6 +128,7 @@ config SOC_TEGRA_FLOWCTRL
bool
config SOC_TEGRA_PMC
@ -24,5 +24,5 @@ index fe4481676da6..ad5ede8f84ce 100644
config SOC_TEGRA_POWERGATE_BPMP
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From 4cb4e6156fa5f942cf004b3e34677f1ee6f32cab Mon Sep 17 00:00:00 2001
From 5a3ef17a66c43fc996d77d90f68f25af221c9b40 Mon Sep 17 00:00:00 2001
From: Dmitry Osipenko <digetx@gmail.com>
Date: Tue, 6 Oct 2015 19:27:48 +0300
Subject: [PATCH] mmc: core: Add a quirk for NVIDIA Tegra EMMC
@ -11,10 +11,10 @@ Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
index 55997cf84b39..643fbe58eb0f 100644
index c8804895595f..d4c5592aa22b 100644
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
@@ -408,8 +408,17 @@ static int mmc_decode_ext_csd(struct mmc_card *card, u8 *ext_csd)
@@ -405,8 +405,17 @@ static int mmc_decode_ext_csd(struct mmc_card *card, u8 *ext_csd)
ext_csd[EXT_CSD_SEC_CNT + 3] << 24;
/* Cards with density > 2GiB are sector addressed */
@ -34,5 +34,5 @@ index 55997cf84b39..643fbe58eb0f 100644
card->ext_csd.strobe_support = ext_csd[EXT_CSD_STROBE_SUPPORT];
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From facbfc379074eb38b85351e78f7a22ae638ebd24 Mon Sep 17 00:00:00 2001
From f14f1512693476e0a5256fef0bb4d0ad04e662da Mon Sep 17 00:00:00 2001
From: ryang <decatf@gmail.com>
Date: Tue, 31 Oct 2017 12:08:54 -0400
Subject: [PATCH] leds: Add led class support isa1200 vibration motor
@ -15,10 +15,10 @@ Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
create mode 100755 drivers/leds/leds-isa1200.h
diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
index a72f97fca57b..d659f0174b92 100644
index 760f73a49c9f..14552a9f2718 100644
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
@@ -766,6 +766,14 @@ config LEDS_NIC78BX
@@ -784,6 +784,14 @@ config LEDS_NIC78BX
To compile this driver as a module, choose M here: the module
will be called leds-nic78bx.
@ -34,10 +34,10 @@ index a72f97fca57b..d659f0174b92 100644
source "drivers/leds/trigger/Kconfig"
diff --git a/drivers/leds/Makefile b/drivers/leds/Makefile
index 4c1b0054f379..0ec7806479e9 100644
index 1e9702ebffee..8f2c88f41701 100644
--- a/drivers/leds/Makefile
+++ b/drivers/leds/Makefile
@@ -79,6 +79,7 @@ obj-$(CONFIG_LEDS_MT6323) += leds-mt6323.o
@@ -81,6 +81,7 @@ obj-$(CONFIG_LEDS_MT6323) += leds-mt6323.o
obj-$(CONFIG_LEDS_LM3692X) += leds-lm3692x.o
obj-$(CONFIG_LEDS_SC27XX_BLTC) += leds-sc27xx-bltc.o
obj-$(CONFIG_LEDS_LM3601X) += leds-lm3601x.o
@ -694,5 +694,5 @@ index 000000000000..50713449003c
+
+#endif
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From 9b7ba0a954eefd1b177fc351ce2f8c65ca39e7a3 Mon Sep 17 00:00:00 2001
From 30dfad94dda522bce62cb635c26fadf9bbf5a24e Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Sat, 26 Jan 2019 20:50:51 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: Samsung SGH-I927 support
@ -16,10 +16,10 @@ Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
create mode 100644 arch/arm/boot/dts/tegra20-glide.dts
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index b0e966d625b9..0c4e7e5e27ba 100644
index dab2914fa293..a7834dcc3d40 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -1078,7 +1078,8 @@ dtb-$(CONFIG_ARCH_TEGRA_2x_SOC) += \
@@ -1131,7 +1131,8 @@ dtb-$(CONFIG_ARCH_TEGRA_2x_SOC) += \
tegra20-seaboard.dtb \
tegra20-tec.dtb \
tegra20-trimslice.dtb \
@ -1327,5 +1327,5 @@ index 000000000000..32f59e7889be
+ };
+};
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From 2822f8beddd7daa36a8d6251c675646256f8dcee Mon Sep 17 00:00:00 2001
From ac0ff2a53a6fec198bd30d2cdeaca27c6f7d2a01 Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Sun, 27 Jan 2019 02:11:24 +0300
Subject: [PATCH] Input: stmpe-keypad - add STMPE1801 support
@ -12,7 +12,7 @@ Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
1 file changed, 85 insertions(+), 23 deletions(-)
diff --git a/drivers/input/keyboard/stmpe-keypad.c b/drivers/input/keyboard/stmpe-keypad.c
index d69e631cfa0a..1e2423a0a598 100644
index 7bf97285e30c..28a9cba7d4b7 100644
--- a/drivers/input/keyboard/stmpe-keypad.c
+++ b/drivers/input/keyboard/stmpe-keypad.c
@@ -13,7 +13,7 @@
@ -221,5 +221,5 @@ index d69e631cfa0a..1e2423a0a598 100644
static void stmpe_keypad_fill_used_pins(struct stmpe_keypad *keypad,
--
2.20.1
2.22.0

View file

@ -1,43 +0,0 @@
From 0a1b842f3974f3ee69129e598747a17921810bfd Mon Sep 17 00:00:00 2001
From: ryang <decatf@gmail.com>
Date: Tue, 18 Sep 2018 12:38:03 -0400
Subject: [PATCH] iio: accel: kxcjk: Add device tree support
(cherry picked from commit 3fb788f94dcb55414ba774211e21c80153fd21f5)
Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
---
drivers/iio/accel/kxcjk-1013.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/drivers/iio/accel/kxcjk-1013.c b/drivers/iio/accel/kxcjk-1013.c
index af53a1084ee5..3e13a837eb85 100644
--- a/drivers/iio/accel/kxcjk-1013.c
+++ b/drivers/iio/accel/kxcjk-1013.c
@@ -1504,13 +1504,23 @@ static const struct i2c_device_id kxcjk1013_id[] = {
{"SMO8500", KXCJ91008},
{}
};
-
MODULE_DEVICE_TABLE(i2c, kxcjk1013_id);
+static const struct of_device_id kxcjk1013_of_match[] = {
+ { .compatible = "kionix,kxcjk1013", },
+ { .compatible = "kionix,kxcj91008", },
+ { .compatible = "kionix,kxtj21009", },
+ { .compatible = "kionix,kxtf9", },
+ { .compatible = "kionix,SMO8500", },
+ { }
+};
+MODULE_DEVICE_TABLE(of, kxcjk1013_of_match);
+
static struct i2c_driver kxcjk1013_driver = {
.driver = {
.name = KXCJK1013_DRV_NAME,
.acpi_match_table = ACPI_PTR(kx_acpi_match),
+ .of_match_table = of_match_ptr(kxcjk1013_of_match),
.pm = &kxcjk1013_pm_ops,
},
.probe = kxcjk1013_probe,
--
2.20.1

View file

@ -1,4 +1,4 @@
From 0dd90d3d51bed50ce9753c06659f72c94536eeb7 Mon Sep 17 00:00:00 2001
From 4a165a7fca0de465672464243c56ba32dfa818fd Mon Sep 17 00:00:00 2001
From: ryang <decatf@gmail.com>
Date: Sat, 21 Apr 2018 09:33:37 -0400
Subject: [PATCH] Add tegra_wm8994 driver
@ -13,10 +13,10 @@ Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
create mode 100755 sound/soc/tegra/tegra_wm8994.c
diff --git a/sound/soc/tegra/Kconfig b/sound/soc/tegra/Kconfig
index 6875fc39a575..a95c7feee491 100644
index addadc827b91..f1018b271314 100644
--- a/sound/soc/tegra/Kconfig
+++ b/sound/soc/tegra/Kconfig
@@ -86,6 +86,20 @@ config SND_SOC_TEGRA_WM8903
@@ -87,6 +87,20 @@ config SND_SOC_TEGRA_WM8903
boards using the WM8093 codec. Currently, the supported boards are
Harmony, Ventana, Seaboard, Kaen, and Aebl.
@ -516,5 +516,5 @@ index 000000000000..bf928d7f4813
+MODULE_ALIAS("platform:" DRV_NAME);
+MODULE_DEVICE_TABLE(of, tegra_wm8994_of_match);
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From aa3924de19ea515a7aa3309da9e779303f73d43e Mon Sep 17 00:00:00 2001
From c042a1c5c29acfd5819b28b770ffb1a5ddd9e456 Mon Sep 17 00:00:00 2001
From: ryang <decatf@gmail.com>
Date: Sat, 26 May 2018 13:14:21 -0400
Subject: [PATCH] HACK: Fix wm8994 Kconfig
@ -10,10 +10,10 @@ Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig
index 9cc4f1848c9b..7bc76e5ebb82 100644
index e730d47ac85b..81f6174ab405 100644
--- a/sound/soc/codecs/Kconfig
+++ b/sound/soc/codecs/Kconfig
@@ -1255,7 +1255,7 @@ config SND_SOC_WM8993
@@ -1331,7 +1331,7 @@ config SND_SOC_WM8993
tristate
config SND_SOC_WM8994
@ -23,5 +23,5 @@ index 9cc4f1848c9b..7bc76e5ebb82 100644
config SND_SOC_WM8995
tristate
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From 392be1c5347b89a0c353e861a1222f925fe5b8a5 Mon Sep 17 00:00:00 2001
From 3ad800934b0affed3c881112897b8014d17b29c6 Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Mon, 28 Jan 2019 11:35:06 +0300
Subject: [PATCH] ASoC: tegra_wm8994: cleanup
@ -13,10 +13,10 @@ Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
2 files changed, 158 deletions(-)
diff --git a/sound/soc/tegra/Kconfig b/sound/soc/tegra/Kconfig
index a95c7feee491..99be3ef82d85 100644
index f1018b271314..a77e83692bdc 100644
--- a/sound/soc/tegra/Kconfig
+++ b/sound/soc/tegra/Kconfig
@@ -91,9 +91,6 @@ config SND_SOC_TEGRA_WM8994
@@ -92,9 +92,6 @@ config SND_SOC_TEGRA_WM8994
depends on SND_SOC_TEGRA && I2C
select SND_SOC_TEGRA20_I2S if ARCH_TEGRA_2x_SOC
select SND_SOC_TEGRA30_I2S if ARCH_TEGRA_3x_SOC
@ -207,5 +207,5 @@ index bf928d7f4813..87cb36df3bcf 100755
if (ret) {
dev_err(&pdev->dev, "tegra_asoc_utils_init failed (%d)\n",
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From de104acc782c9bfd4a71f32f91e6a2a059873cdd Mon Sep 17 00:00:00 2001
From 7c5d182e1cc50ac84a345da09b685dc049e3c748 Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Mon, 28 Jan 2019 11:38:19 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: Device Tree changes
@ -137,5 +137,5 @@ index 32f59e7889be..f9dfb7ec3a3e 100644
+ };
};
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From 73e3de92fdc2804a98b13de917dc218b065d3619 Mon Sep 17 00:00:00 2001
From aaf6b02f2f24bb4a3d72a485894206baace3de9b Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Thu, 7 Feb 2019 13:21:15 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: add memory node address
@ -25,5 +25,5 @@ index f9dfb7ec3a3e..ddadfd998493 100644
reg = <0x00000000 0x40000000>;
};
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From 0e7b869a461dc005c786b97ab9d6a8b3718d8ae5 Mon Sep 17 00:00:00 2001
From bd62ba68291c614fed975beed961b5e2636fcc6f Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Thu, 7 Feb 2019 13:26:02 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: comment out MHL
@ -50,5 +50,5 @@ index ddadfd998493..46e4d30b077a 100644
i2c@15 {
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From 21dec175043642df78f0cba6322cdf714fafdd9d Mon Sep 17 00:00:00 2001
From f1fa9be3da588eb045bf73a3de29b67fc7004062 Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Thu, 7 Feb 2019 13:30:45 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: fix duplicate i2c bus address
@ -24,5 +24,5 @@ index 46e4d30b077a..93a4f50f0710 100644
clock-frequency = <400000>;
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From 1ae43bfcc1b331d1585714d7571539d609507638 Mon Sep 17 00:00:00 2001
From 85321831353304bd8d8e63bf59f7e5b02694b6c6 Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Thu, 7 Feb 2019 13:33:31 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: fix USB gadget mode
@ -55,5 +55,5 @@ index 93a4f50f0710..c582512936a6 100644
compatible = "mmc-pwrseq-simple";
clocks = <&tegra_car TEGRA20_CLK_BLINK>;
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From 17a78313603f9da233307ccaf178c1fa6689de99 Mon Sep 17 00:00:00 2001
From 58b7bd9f4079d0e855b7a21976427ed7266c20db Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Thu, 7 Feb 2019 13:37:04 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: change display timings
@ -39,5 +39,5 @@ index c582512936a6..76493614f6df 100644
};
};
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From faf3aeb5d29682133c26da878f33a340cda6b90d Mon Sep 17 00:00:00 2001
From 1a24e50b7e3538b4ca9dd1a1fe310b1effaf0aaf Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Sat, 9 Feb 2019 18:30:12 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: add intrrupt binding for charger
@ -24,5 +24,5 @@ index 76493614f6df..cb219d1b1198 100644
};
--
2.20.1
2.22.0

View file

@ -1,9 +1,9 @@
From dc2429062dd7e527b96cd03e5d2ca310df64e5c5 Mon Sep 17 00:00:00 2001
From d70b9beaac828ec2da253c4b6e84b3d1afac5d8a Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Sat, 9 Feb 2019 18:35:00 +0300
Subject: [PATCH] drm/panel: s6e63m0: disable rotation
Low part of GTCON register is responsible for flipping/rotation.
Low part of GTCON(IFCTL) register is responsible for flipping/rotation.
This commit disables default rotation by 180 degrees.
Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
@ -12,18 +12,18 @@ Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/panel/panel-samsung-s6e63m0.c b/drivers/gpu/drm/panel/panel-samsung-s6e63m0.c
index 4312aa3e4386..dbd57239359e 100644
index 142d395ea512..3c84f3c073ae 100644
--- a/drivers/gpu/drm/panel/panel-samsung-s6e63m0.c
+++ b/drivers/gpu/drm/panel/panel-samsung-s6e63m0.c
@@ -200,7 +200,7 @@ static void s6e63m0_init(struct s6e63m0 *ctx)
s6e63m0_dcs_write_seq_static(ctx, MCS_DISPLAY_CONDITION,
@@ -190,7 +190,7 @@ static void s6e63m0_init(struct s6e63m0 *ctx)
s6e63m0_dcs_write_seq_static(ctx, MCS_DISCTL,
0x02, 0x03, 0x1c, 0x10, 0x10);
s6e63m0_dcs_write_seq_static(ctx, 0xf7,
s6e63m0_dcs_write_seq_static(ctx, MCS_IFCTL,
- 0x03, 0x00, 0x00);
+ 0x00, 0x00, 0x00);
s6e63m0_dcs_write_seq_static(ctx, MCS_GAMMA_CTRL,
s6e63m0_dcs_write_seq_static(ctx, MCS_PGAMMACTL,
0x00, 0x18, 0x08, 0x24, 0x64, 0x56, 0x33,
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From aa393adbba669ab25251d241672ef9f418a85e8c Mon Sep 17 00:00:00 2001
From 8b6c7500f016c3454dd0ba6dfb81a267e8bb7192 Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Sat, 9 Feb 2019 18:44:17 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: set panel reset GPIO pin to active
@ -25,5 +25,5 @@ index cb219d1b1198..87d737c62b0a 100644
panel-height-mm = <87>;
/* 25 + 1 for regulator */
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From bac8eb35a16b6a0bc0969dc7d3fa862159519672 Mon Sep 17 00:00:00 2001
From c0a73c04d982dc7e055436b4f101b36f51c8f2e5 Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Sat, 9 Feb 2019 18:47:19 +0300
Subject: [PATCH] power: supply: max17040: Fix voltage reporting
@ -26,5 +26,5 @@ index 91cafc7bed30..de5e791e0055 100644
static void max17040_get_soc(struct i2c_client *client)
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From eab2e34a6db401c7477f3084fca8152155bebd8c Mon Sep 17 00:00:00 2001
From 803cb62a1861bf76e65b17f559ab1bbf4970ce9b Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Sat, 9 Feb 2019 19:00:23 +0300
Subject: [PATCH] power: supply: max17040: Set initial RCOMP value
@ -23,5 +23,5 @@ index de5e791e0055..dd75c8045ff1 100644
INIT_DEFERRABLE_WORK(&chip->work, max17040_work);
queue_delayed_work(system_power_efficient_wq, &chip->work,
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From 191217e9006ab051cd2f18accc02582737fe0a38 Mon Sep 17 00:00:00 2001
From 686aedfeba8decf53b126679266fd5849444ec87 Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Sat, 9 Feb 2019 20:13:26 +0300
Subject: [PATCH] drm/panel: s6e63m0: Increase back porch
@ -12,10 +12,10 @@ Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/panel/panel-samsung-s6e63m0.c b/drivers/gpu/drm/panel/panel-samsung-s6e63m0.c
index dbd57239359e..b77e3a774291 100644
index 3c84f3c073ae..db2c34adf26d 100644
--- a/drivers/gpu/drm/panel/panel-samsung-s6e63m0.c
+++ b/drivers/gpu/drm/panel/panel-samsung-s6e63m0.c
@@ -112,9 +112,9 @@ static const struct drm_display_mode default_mode = {
@@ -114,9 +114,9 @@ static const struct drm_display_mode default_mode = {
.hsync_end = 480 + 16 + 2,
.htotal = 480 + 16 + 2 + 16,
.vdisplay = 800,
@ -29,5 +29,5 @@ index dbd57239359e..b77e3a774291 100644
.width_mm = 53,
.height_mm = 89,
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From cc78d2d1c0b02ee1a94801c4a99924ed85808c41 Mon Sep 17 00:00:00 2001
From 727e4b1a1d921520b5b5dc08869eb12b11ba248f Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Sun, 10 Feb 2019 00:43:16 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: fix AK8975
@ -25,5 +25,5 @@ index 87d737c62b0a..f1909f55d8e3 100644
};
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From bc7a628192bb519681a3c93bc1e1ed3f79c358da Mon Sep 17 00:00:00 2001
From 399193f1e688a210de9ef6fbab664218ba276c95 Mon Sep 17 00:00:00 2001
From: Beomho Seo <beomho.seo@samsung.com>
Date: Mon, 12 Aug 2013 22:04:13 +0900
Subject: [PATCH] Input: mcs_touchkey: Add parse DT function from device tree
@ -11,10 +11,10 @@ Signed-off-by: Beomho Seo <beomho.seo@samsung.com>
1 file changed, 71 insertions(+), 4 deletions(-)
diff --git a/drivers/input/keyboard/mcs_touchkey.c b/drivers/input/keyboard/mcs_touchkey.c
index be56d4f262a7..2c9d7f63b562 100644
index 8cb0062b98e4..dae959a5c8f6 100644
--- a/drivers/input/keyboard/mcs_touchkey.c
+++ b/drivers/input/keyboard/mcs_touchkey.c
@@ -19,6 +19,8 @@
@@ -15,6 +15,8 @@
#include <linux/slab.h>
#include <linux/platform_data/mcs.h>
#include <linux/pm.h>
@ -23,7 +23,7 @@ index be56d4f262a7..2c9d7f63b562 100644
/* MCS5000 Touchkey */
#define MCS5000_TOUCHKEY_STATUS 0x04
@@ -96,6 +98,61 @@ static irqreturn_t mcs_touchkey_interrupt(int irq, void *dev_id)
@@ -92,6 +94,61 @@ static irqreturn_t mcs_touchkey_interrupt(int irq, void *dev_id)
return IRQ_HANDLED;
}
@ -85,7 +85,7 @@ index be56d4f262a7..2c9d7f63b562 100644
static int mcs_touchkey_probe(struct i2c_client *client,
const struct i2c_device_id *id)
{
@@ -107,10 +164,14 @@ static int mcs_touchkey_probe(struct i2c_client *client,
@@ -103,10 +160,14 @@ static int mcs_touchkey_probe(struct i2c_client *client,
int error;
int i;
@ -103,8 +103,8 @@ index be56d4f262a7..2c9d7f63b562 100644
+ return PTR_ERR(pdata);
}
data = kzalloc(sizeof(struct mcs_touchkey_data) +
@@ -262,10 +323,16 @@ static const struct i2c_device_id mcs_touchkey_id[] = {
data = kzalloc(struct_size(data, keycodes, pdata->key_maxval + 1),
@@ -257,10 +318,16 @@ static const struct i2c_device_id mcs_touchkey_id[] = {
};
MODULE_DEVICE_TABLE(i2c, mcs_touchkey_id);
@ -122,5 +122,5 @@ index be56d4f262a7..2c9d7f63b562 100644
.probe = mcs_touchkey_probe,
.remove = mcs_touchkey_remove,
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From c4ff1dc8430861193f894aa5cb7d4a816dc95b0d Mon Sep 17 00:00:00 2001
From 4875c8f4b870d206bf05f5335c4bf1f35341b387 Mon Sep 17 00:00:00 2001
From: Beomho Seo <beomho.seo@samsung.com>
Date: Mon, 13 Oct 2014 11:46:26 +0900
Subject: [PATCH] input: keyboard: mcs_touchkey:Convert to devm_* managed
@ -9,21 +9,21 @@ Tis patch use the devm_* managed functions to allocate resources.
Change-Id: I9351869922b481a6791ca98f6dd3328d84424906
Signed-off-by: Beomho Seo <beomho.seo@samsung.com>
---
drivers/input/keyboard/mcs_touchkey.c | 27 +++++++++++----------------
1 file changed, 11 insertions(+), 16 deletions(-)
drivers/input/keyboard/mcs_touchkey.c | 28 ++++++++++++---------------
1 file changed, 12 insertions(+), 16 deletions(-)
diff --git a/drivers/input/keyboard/mcs_touchkey.c b/drivers/input/keyboard/mcs_touchkey.c
index 2c9d7f63b562..933429c165b5 100644
index dae959a5c8f6..b5e2a8a2d3d1 100644
--- a/drivers/input/keyboard/mcs_touchkey.c
+++ b/drivers/input/keyboard/mcs_touchkey.c
@@ -174,14 +174,14 @@ static int mcs_touchkey_probe(struct i2c_client *client,
@@ -170,13 +170,14 @@ static int mcs_touchkey_probe(struct i2c_client *client,
return PTR_ERR(pdata);
}
- data = kzalloc(sizeof(struct mcs_touchkey_data) +
+ data = devm_kzalloc(&client->dev, sizeof(struct mcs_touchkey_data) +
sizeof(data->keycodes[0]) * (pdata->key_maxval + 1),
GFP_KERNEL);
- data = kzalloc(struct_size(data, keycodes, pdata->key_maxval + 1),
+ data = devm_kzalloc(&client->dev,
+ struct_size(data, keycodes, pdata->key_maxval + 1),
GFP_KERNEL);
- input_dev = input_allocate_device();
+ input_dev = devm_input_allocate_device(&client->dev);
if (!data || !input_dev) {
@ -34,7 +34,7 @@ index 2c9d7f63b562..933429c165b5 100644
}
data->client = client;
@@ -204,7 +204,7 @@ static int mcs_touchkey_probe(struct i2c_client *client,
@@ -199,7 +200,7 @@ static int mcs_touchkey_probe(struct i2c_client *client,
if (fw_ver < 0) {
error = fw_ver;
dev_err(&client->dev, "i2c read error[%d]\n", error);
@ -43,7 +43,7 @@ index 2c9d7f63b562..933429c165b5 100644
}
dev_info(&client->dev, "Firmware version: %d\n", fw_ver);
@@ -237,27 +237,22 @@ static int mcs_touchkey_probe(struct i2c_client *client,
@@ -232,27 +233,22 @@ static int mcs_touchkey_probe(struct i2c_client *client,
data->poweron(true);
}
@ -79,5 +79,5 @@ index 2c9d7f63b562..933429c165b5 100644
static int mcs_touchkey_remove(struct i2c_client *client)
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From 6497c54d598bd7b62c2a54a76d3246b155a1cc4b Mon Sep 17 00:00:00 2001
From 869e15f976c669fbf6fcc8b4faeb7b43a4580686 Mon Sep 17 00:00:00 2001
From: Seung-Woo Kim <sw0312.kim@samsung.com>
Date: Thu, 4 Dec 2014 20:19:30 +0900
Subject: [PATCH] input: keyboard: mcs_touchkey: add sentinel into array of
@ -14,10 +14,10 @@ Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
1 file changed, 1 insertion(+)
diff --git a/drivers/input/keyboard/mcs_touchkey.c b/drivers/input/keyboard/mcs_touchkey.c
index 933429c165b5..21ceea6bbff5 100644
index b5e2a8a2d3d1..cd26a5560449 100644
--- a/drivers/input/keyboard/mcs_touchkey.c
+++ b/drivers/input/keyboard/mcs_touchkey.c
@@ -321,6 +321,7 @@ MODULE_DEVICE_TABLE(i2c, mcs_touchkey_id);
@@ -317,6 +317,7 @@ MODULE_DEVICE_TABLE(i2c, mcs_touchkey_id);
static struct of_device_id mcs_touchkey_dt_match[] = {
{ .compatible = "mcs5000_touchkey", },
{ .compatible = "mcs5080_touchkey", },
@ -26,5 +26,5 @@ index 933429c165b5..21ceea6bbff5 100644
static struct i2c_driver mcs_touchkey_driver = {
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From ecda374fe948e278635b6146320e5a569097b6a6 Mon Sep 17 00:00:00 2001
From ee20adbc92dde3253b807247df3e512a25f333b8 Mon Sep 17 00:00:00 2001
From: Beomho Seo <beomho.seo@samsung.com>
Date: Mon, 12 Aug 2013 21:51:45 +0900
Subject: [PATCH] TRATS2: dts: exynos4412-m0.dts: Add mcs-touchkey node
@ -45,5 +45,5 @@ index 000000000000..545454112a43
+ /* ... */
+ };
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From 5efe0ea2a8014795c7c5926f257336394ce2177e Mon Sep 17 00:00:00 2001
From 41e9df869d6d0e5b5e9bce90851e15fccdc51215 Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Sun, 10 Feb 2019 13:19:50 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: Add touchkey binding
@ -42,5 +42,5 @@ index f1909f55d8e3..89f0002789ea 100644
i2c@20 {
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From dd1d90e46c9f1a5d0757330ee2d5801962e9ef60 Mon Sep 17 00:00:00 2001
From 41c63421d3711853cffdf37fb05f2234a5bc59e1 Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Sun, 10 Feb 2019 13:21:07 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: Add keyboard backlight LED
@ -33,5 +33,5 @@ index 89f0002789ea..3d419e094665 100644
nvidia,invert-interrupt;
nvidia,suspend-mode = <0>;
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From e91d56736df792ebe7da24644ea551a14b68db7a Mon Sep 17 00:00:00 2001
From 2ba7eb1a5abad5659b6dfbb2ab0164dc9529212a Mon Sep 17 00:00:00 2001
From: "Kim, HeungJun" <riverful.kim@samsung.com>
Date: Mon, 15 Nov 2010 13:33:30 +0900
Subject: [PATCH] input: keyboard: mcs_touchkey: LED support
@ -12,10 +12,10 @@ Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
2 files changed, 57 insertions(+), 5 deletions(-)
diff --git a/drivers/input/keyboard/Kconfig b/drivers/input/keyboard/Kconfig
index 4713957b0cbb..38578298491b 100644
index 7c4f19dab34f..74c733dff9d6 100644
--- a/drivers/input/keyboard/Kconfig
+++ b/drivers/input/keyboard/Kconfig
@@ -397,6 +397,7 @@ config KEYBOARD_MAX7359
@@ -409,6 +409,7 @@ config KEYBOARD_MAX7359
config KEYBOARD_MCS
tristate "MELFAS MCS Touchkey"
depends on I2C
@ -24,10 +24,10 @@ index 4713957b0cbb..38578298491b 100644
Say Y here if you have the MELFAS MCS5000/5080 touchkey controller
chip in your system.
diff --git a/drivers/input/keyboard/mcs_touchkey.c b/drivers/input/keyboard/mcs_touchkey.c
index 21ceea6bbff5..36acbaea9aa1 100644
index cd26a5560449..a0a168625c06 100644
--- a/drivers/input/keyboard/mcs_touchkey.c
+++ b/drivers/input/keyboard/mcs_touchkey.c
@@ -21,18 +21,26 @@
@@ -17,18 +17,26 @@
#include <linux/pm.h>
#include <linux/of_platform.h>
#include <linux/of_gpio.h>
@ -54,7 +54,7 @@ index 21ceea6bbff5..36acbaea9aa1 100644
enum mcs_touchkey_type {
MCS5000_TOUCHKEY,
@@ -44,6 +52,8 @@ struct mcs_touchkey_chip {
@@ -40,6 +48,8 @@ struct mcs_touchkey_chip {
unsigned int pressbit;
unsigned int press_invert;
unsigned int baseval;
@ -63,7 +63,7 @@ index 21ceea6bbff5..36acbaea9aa1 100644
};
struct mcs_touchkey_data {
@@ -54,9 +64,25 @@ struct mcs_touchkey_data {
@@ -50,9 +60,25 @@ struct mcs_touchkey_data {
struct mcs_touchkey_chip chip;
unsigned int key_code;
unsigned int key_val;
@ -89,7 +89,7 @@ index 21ceea6bbff5..36acbaea9aa1 100644
static irqreturn_t mcs_touchkey_interrupt(int irq, void *dev_id)
{
struct mcs_touchkey_data *data = dev_id;
@@ -65,12 +91,21 @@ static irqreturn_t mcs_touchkey_interrupt(int irq, void *dev_id)
@@ -61,12 +87,21 @@ static irqreturn_t mcs_touchkey_interrupt(int irq, void *dev_id)
struct input_dev *input = data->input_dev;
unsigned int key_val;
unsigned int pressed;
@ -116,7 +116,7 @@ index 21ceea6bbff5..36acbaea9aa1 100644
}
pressed = (val & (1 << chip->pressbit)) >> chip->pressbit;
@@ -191,12 +226,16 @@ static int mcs_touchkey_probe(struct i2c_client *client,
@@ -187,12 +222,16 @@ static int mcs_touchkey_probe(struct i2c_client *client,
data->chip.status_reg = MCS5000_TOUCHKEY_STATUS;
data->chip.pressbit = MCS5000_TOUCHKEY_STATUS_PRESS;
data->chip.baseval = MCS5000_TOUCHKEY_BASE_VAL;
@ -133,7 +133,7 @@ index 21ceea6bbff5..36acbaea9aa1 100644
fw_reg = MCS5080_TOUCHKEY_FW;
}
@@ -252,6 +291,18 @@ static int mcs_touchkey_probe(struct i2c_client *client,
@@ -248,6 +287,18 @@ static int mcs_touchkey_probe(struct i2c_client *client,
i2c_set_clientdata(client, data);
@ -153,5 +153,5 @@ index 21ceea6bbff5..36acbaea9aa1 100644
}
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From ceeecef75e5faa16a3f435eb25bb66c3d983a345 Mon Sep 17 00:00:00 2001
From 2928e35e48296db3c9bca2630357f7c08056ecda Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Sun, 10 Feb 2019 16:55:18 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: Add HALL GPIO binding
@ -44,5 +44,5 @@ index 3d419e094665..ab30b1b8cc29 100644
spi@7000d800 {
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From bb7a98455d6ea2ec660621ff047060a4a9816f3e Mon Sep 17 00:00:00 2001
From b1bf7e12c7ab8c8dd1e6b5223888f076ff866c4a Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Sun, 17 Feb 2019 17:05:40 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: Change keyboard keycodes
@ -72,5 +72,5 @@ index ab30b1b8cc29..f2b1805fc8cf 100644
stmpegpio: stmpe_gpio {
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From f2965a337e9971f338d663fc5baa19d08865acad Mon Sep 17 00:00:00 2001
From 59831748951e92720700af72cf75f185e96afb8d Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Sat, 23 Feb 2019 21:03:21 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: Fix UART bindings
@ -124,5 +124,5 @@ index f2b1805fc8cf..751c67924310 100644
status = "okay";
};
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From 5edeb7774dc89c4ba385eb066e31fa1e8774630c Mon Sep 17 00:00:00 2001
From 9af18d58ad5b4f5d99bd1ae080d615892dbaee88 Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Sat, 23 Feb 2019 21:14:49 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: USB OTG mode and power
@ -100,5 +100,5 @@ index 751c67924310..aa6cb3a78b2d 100644
compatible = "nvidia,tegra-audio-wm8994";
nvidia,model = "wm8994-aif1";
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From c68a5b3ceb2a8997a87d9a0bb3370facb9d242b2 Mon Sep 17 00:00:00 2001
From 4c66aee456ae81c584647bb4f55a9a1bcd5adf26 Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Sat, 23 Feb 2019 21:26:15 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: Remove WiFi host-wake GPIO
@ -25,5 +25,5 @@ index aa6cb3a78b2d..d7dfa895cf56 100644
};
--
2.20.1
2.22.0

View file

@ -1,4 +1,4 @@
From baf8ef830ce0bd32708b131a592c9cc01467c83b Mon Sep 17 00:00:00 2001
From 32e6469e95ebbb3f8178eb79db3b1d53a2584f91 Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Sun, 24 Feb 2019 18:20:08 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: Add bindings for microphone
@ -54,5 +54,5 @@ index d7dfa895cf56..195ccb0a1012 100644
pmc@7000e400 {
--
2.20.1
2.22.0

View file

@ -0,0 +1,475 @@
From cd9f564d0e9c26495bf161cd5b802fbf461dbcbc Mon Sep 17 00:00:00 2001
From: Tomasz Figa <tomasz.figa@gmail.com>
Date: Sat, 4 Jan 2014 01:47:25 +0100
Subject: [PATCH] extcon: Add fsa9480 extcon driver
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This patch adds extcon driver for Fairchild Semiconductor FSA9480
microUSB switch.
Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
Signed-off-by: Paweł Chmiel <pawel.mikolaj.chmiel@gmail.com>
---
drivers/extcon/Kconfig | 10 +
drivers/extcon/Makefile | 1 +
drivers/extcon/extcon-fsa9480.c | 412 ++++++++++++++++++++++++++++++++
3 files changed, 423 insertions(+)
create mode 100644 drivers/extcon/extcon-fsa9480.c
diff --git a/drivers/extcon/Kconfig b/drivers/extcon/Kconfig
index 6f5af4196b8d..13a42f8751ae 100644
--- a/drivers/extcon/Kconfig
+++ b/drivers/extcon/Kconfig
@@ -37,6 +37,16 @@ config EXTCON_AXP288
Say Y here to enable support for USB peripheral detection
and USB MUX switching by X-Power AXP288 PMIC.
+config EXTCON_FSA9480
+ tristate "FSA9480 EXTCON Support"
+ depends on INPUT
+ help
+ If you say yes here you get support for the Fairchild Semiconductor
+ FSA9480 microUSB switch and accessory detector chip. The FSA9480 is a USB
+ port accessory detector and switch. The FSA9480 is fully controlled using
+ I2C and enables USB data, stereo and mono audio, video, microphone
+ and UART data to use a common connector port.
+
config EXTCON_GPIO
tristate "GPIO extcon support"
depends on GPIOLIB || COMPILE_TEST
diff --git a/drivers/extcon/Makefile b/drivers/extcon/Makefile
index d3941a735df3..52096fd8a216 100644
--- a/drivers/extcon/Makefile
+++ b/drivers/extcon/Makefile
@@ -8,6 +8,7 @@ extcon-core-objs += extcon.o devres.o
obj-$(CONFIG_EXTCON_ADC_JACK) += extcon-adc-jack.o
obj-$(CONFIG_EXTCON_ARIZONA) += extcon-arizona.o
obj-$(CONFIG_EXTCON_AXP288) += extcon-axp288.o
+obj-$(CONFIG_EXTCON_FSA9480) += extcon-fsa9480.o
obj-$(CONFIG_EXTCON_GPIO) += extcon-gpio.o
obj-$(CONFIG_EXTCON_INTEL_INT3496) += extcon-intel-int3496.o
obj-$(CONFIG_EXTCON_INTEL_CHT_WC) += extcon-intel-cht-wc.o
diff --git a/drivers/extcon/extcon-fsa9480.c b/drivers/extcon/extcon-fsa9480.c
new file mode 100644
index 000000000000..8365c222ca80
--- /dev/null
+++ b/drivers/extcon/extcon-fsa9480.c
@@ -0,0 +1,412 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * extcon-fsa9480.c - Fairchild Semiconductor FSA9480 extcon driver
+ *
+ * Copyright (c) 2014 Tomasz Figa <tomasz.figa@gmail.com>
+ *
+ * Loosely based on old fsa9480 misc-device driver.
+ */
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/types.h>
+#include <linux/i2c.h>
+#include <linux/slab.h>
+#include <linux/bitops.h>
+#include <linux/interrupt.h>
+#include <linux/err.h>
+#include <linux/platform_device.h>
+#include <linux/kobject.h>
+#include <linux/extcon-provider.h>
+#include <linux/irqdomain.h>
+#include <linux/regmap.h>
+
+/* FSA9480 I2C registers */
+#define FSA9480_REG_DEVID 0x01
+#define FSA9480_REG_CTRL 0x02
+#define FSA9480_REG_INT1 0x03
+#define FSA9480_REG_INT2 0x04
+#define FSA9480_REG_INT1_MASK 0x05
+#define FSA9480_REG_INT2_MASK 0x06
+#define FSA9480_REG_ADC 0x07
+#define FSA9480_REG_TIMING1 0x08
+#define FSA9480_REG_TIMING2 0x09
+#define FSA9480_REG_DEV_T1 0x0a
+#define FSA9480_REG_DEV_T2 0x0b
+#define FSA9480_REG_BTN1 0x0c
+#define FSA9480_REG_BTN2 0x0d
+#define FSA9480_REG_CK 0x0e
+#define FSA9480_REG_CK_INT1 0x0f
+#define FSA9480_REG_CK_INT2 0x10
+#define FSA9480_REG_CK_INTMASK1 0x11
+#define FSA9480_REG_CK_INTMASK2 0x12
+#define FSA9480_REG_MANSW1 0x13
+#define FSA9480_REG_MANSW2 0x14
+#define FSA9480_REG_END 0x15
+
+/* Control */
+#define CON_SWITCH_OPEN (1 << 4)
+#define CON_RAW_DATA (1 << 3)
+#define CON_MANUAL_SW (1 << 2)
+#define CON_WAIT (1 << 1)
+#define CON_INT_MASK (1 << 0)
+#define CON_MASK (CON_SWITCH_OPEN | CON_RAW_DATA | \
+ CON_MANUAL_SW | CON_WAIT)
+
+/* Device Type 1 */
+#define DEV_USB_OTG 7
+#define DEV_DEDICATED_CHG 6
+#define DEV_USB_CHG 5
+#define DEV_CAR_KIT 4
+#define DEV_UART 3
+#define DEV_USB 2
+#define DEV_AUDIO_2 1
+#define DEV_AUDIO_1 0
+
+#define DEV_T1_USB_MASK (DEV_USB_OTG | DEV_USB)
+#define DEV_T1_UART_MASK (DEV_UART)
+#define DEV_T1_CHARGER_MASK (DEV_DEDICATED_CHG | DEV_USB_CHG)
+
+/* Device Type 2 */
+#define DEV_AV 14
+#define DEV_TTY 13
+#define DEV_PPD 12
+#define DEV_JIG_UART_OFF 11
+#define DEV_JIG_UART_ON 10
+#define DEV_JIG_USB_OFF 9
+#define DEV_JIG_USB_ON 8
+
+#define DEV_T2_USB_MASK (DEV_JIG_USB_OFF | DEV_JIG_USB_ON)
+#define DEV_T2_UART_MASK (DEV_JIG_UART_OFF | DEV_JIG_UART_ON)
+#define DEV_T2_JIG_MASK (DEV_JIG_USB_OFF | DEV_JIG_USB_ON | \
+ DEV_JIG_UART_OFF | DEV_JIG_UART_ON)
+
+/*
+ * Manual Switch
+ * D- [7:5] / D+ [4:2]
+ * 000: Open all / 001: USB / 010: AUDIO / 011: UART / 100: V_AUDIO
+ */
+#define SW_VAUDIO ((4 << 5) | (4 << 2))
+#define SW_UART ((3 << 5) | (3 << 2))
+#define SW_AUDIO ((2 << 5) | (2 << 2))
+#define SW_DHOST ((1 << 5) | (1 << 2))
+#define SW_AUTO ((0 << 5) | (0 << 2))
+
+/* Interrupt 1 */
+#define INT1_MASK (0xff << 0)
+#define INT_DETACH (1 << 1)
+#define INT_ATTACH (1 << 0)
+
+/* Interrupt 2 mask */
+#define INT2_MASK (0x1f << 0)
+
+/* Timing Set 1 */
+#define TIMING1_ADC_500MS (0x6 << 0)
+
+struct fsa9480_usbsw {
+ struct device *dev;
+ struct regmap *regmap;
+ struct extcon_dev *edev;
+ u16 cable;
+};
+
+static const unsigned int fsa9480_extcon_cable[] = {
+ EXTCON_USB_HOST,
+ EXTCON_USB,
+ EXTCON_CHG_USB_DCP,
+ EXTCON_CHG_USB_SDP,
+ EXTCON_CHG_USB_ACA,
+ EXTCON_JACK_LINE_OUT,
+ EXTCON_JACK_VIDEO_OUT,
+ EXTCON_JIG,
+
+ EXTCON_NONE,
+};
+
+static const u64 cable_types[] = {
+ [DEV_USB_OTG] = BIT_ULL(EXTCON_USB_HOST),
+ [DEV_DEDICATED_CHG] = BIT_ULL(EXTCON_USB) | BIT_ULL(EXTCON_CHG_USB_DCP),
+ [DEV_USB_CHG] = BIT_ULL(EXTCON_USB) | BIT_ULL(EXTCON_CHG_USB_SDP),
+ [DEV_CAR_KIT] = BIT_ULL(EXTCON_USB) | BIT_ULL(EXTCON_CHG_USB_SDP)
+ | BIT_ULL(EXTCON_JACK_LINE_OUT),
+ [DEV_UART] = BIT_ULL(EXTCON_JIG),
+ [DEV_USB] = BIT_ULL(EXTCON_USB) | BIT_ULL(EXTCON_CHG_USB_SDP),
+ [DEV_AUDIO_2] = BIT_ULL(EXTCON_JACK_LINE_OUT),
+ [DEV_AUDIO_1] = BIT_ULL(EXTCON_JACK_LINE_OUT),
+ [DEV_AV] = BIT_ULL(EXTCON_JACK_LINE_OUT)
+ | BIT_ULL(EXTCON_JACK_VIDEO_OUT),
+ [DEV_TTY] = BIT_ULL(EXTCON_JIG),
+ [DEV_PPD] = BIT_ULL(EXTCON_JACK_LINE_OUT) | BIT_ULL(EXTCON_CHG_USB_ACA),
+ [DEV_JIG_UART_OFF] = BIT_ULL(EXTCON_JIG),
+ [DEV_JIG_UART_ON] = BIT_ULL(EXTCON_JIG),
+ [DEV_JIG_USB_OFF] = BIT_ULL(EXTCON_USB) | BIT_ULL(EXTCON_JIG),
+ [DEV_JIG_USB_ON] = BIT_ULL(EXTCON_USB) | BIT_ULL(EXTCON_JIG),
+};
+
+/* Define interrupt list of FSA9480 to register regmap_irq */
+static const struct regmap_irq fsa9480_irqs[] = {
+ /* INT1 interrupts */
+ { .reg_offset = 0, .mask = INT_ATTACH, },
+ { .reg_offset = 0, .mask = INT_DETACH, },
+};
+
+static const struct regmap_irq_chip fsa9480_irq_chip = {
+ .name = "fsa9480",
+ .status_base = FSA9480_REG_INT1,
+ .mask_base = FSA9480_REG_INT1_MASK,
+ .mask_invert = false,
+ .num_regs = 1,
+ .irqs = fsa9480_irqs,
+ .num_irqs = ARRAY_SIZE(fsa9480_irqs),
+};
+
+/* Define regmap configuration of FSA9480 for I2C communication */
+static bool fsa9480_volatile_reg(struct device *dev, unsigned int reg)
+{
+ switch (reg) {
+ case FSA9480_REG_INT1_MASK:
+ return true;
+ default:
+ break;
+ }
+ return false;
+}
+
+static const struct regmap_config fsa9480_regmap_config = {
+ .reg_bits = 8,
+ .val_bits = 8,
+ .volatile_reg = fsa9480_volatile_reg,
+ .max_register = FSA9480_REG_END,
+};
+
+static int fsa9480_write_reg(struct fsa9480_usbsw *usbsw, int reg, int value)
+{
+ int ret;
+
+ ret = regmap_write(usbsw->regmap, reg, value);
+ if (ret < 0)
+ dev_err(usbsw->dev, "%s: err %d\n", __func__, ret);
+
+ return ret;
+}
+
+static int fsa9480_read_reg(struct fsa9480_usbsw *usbsw, int reg)
+{
+ int ret, val;
+
+ ret = regmap_read(usbsw->regmap, reg, &val);
+ if (ret < 0) {
+ dev_err(usbsw->dev, "%s: err %d\n", __func__, ret);
+ return ret;
+ }
+
+ return val;
+}
+
+static int fsa9480_read_irq(struct fsa9480_usbsw *usbsw, int *value)
+{
+ u8 regs[2];
+ int ret;
+
+ ret = regmap_bulk_read(usbsw->regmap, FSA9480_REG_INT1, regs, 2);
+ if (ret < 0)
+ dev_err(usbsw->dev, "%s: err %d\n", __func__, ret);
+
+ *value = regs[1] << 8 | regs[0];
+ return ret;
+}
+
+static void fsa9480_handle_change(struct fsa9480_usbsw *usbsw,
+ u16 mask, bool attached)
+{
+ while (mask) {
+ int dev = fls64(mask) - 1;
+ u64 cables = cable_types[dev];
+
+ while (cables) {
+ int cable = fls64(cables) - 1;
+
+ extcon_set_state_sync(usbsw->edev, cable, attached);
+ cables &= ~BIT_ULL(cable);
+ }
+
+ mask &= ~BIT_ULL(dev);
+ }
+}
+
+static void fsa9480_detect_dev(struct fsa9480_usbsw *usbsw)
+{
+ int val1, val2;
+ u16 val;
+
+ val1 = fsa9480_read_reg(usbsw, FSA9480_REG_DEV_T1);
+ val2 = fsa9480_read_reg(usbsw, FSA9480_REG_DEV_T2);
+ if (val1 < 0 || val2 < 0) {
+ dev_err(usbsw->dev, "%s: failed to read registers", __func__);
+ return;
+ }
+ val = val2 << 8 | val1;
+
+ dev_info(usbsw->dev, "dev1: 0x%x, dev2: 0x%x\n", val1, val2);
+
+ /* handle detached cables first */
+ fsa9480_handle_change(usbsw, usbsw->cable & ~val, false);
+
+ /* then handle attached ones */
+ fsa9480_handle_change(usbsw, val & ~usbsw->cable, true);
+
+ usbsw->cable = val;
+}
+
+static irqreturn_t fsa9480_irq_handler(int irq, void *data)
+{
+ struct fsa9480_usbsw *usbsw = data;
+ int intr = 0;
+
+ /* clear interrupt */
+ fsa9480_read_irq(usbsw, &intr);
+ if (!intr)
+ return IRQ_NONE;
+
+ /* device detection */
+ fsa9480_detect_dev(usbsw);
+
+ return IRQ_HANDLED;
+}
+
+static int fsa9480_probe(struct i2c_client *client,
+ const struct i2c_device_id *id)
+{
+ struct fsa9480_usbsw *info;
+ int ret;
+
+ if (!client->irq) {
+ dev_err(&client->dev, "no interrupt provided\n");
+ return -EINVAL;
+ }
+
+ info = devm_kzalloc(&client->dev, sizeof(*info), GFP_KERNEL);
+ if (!info)
+ return -ENOMEM;
+ info->dev = &client->dev;
+
+ i2c_set_clientdata(client, info);
+
+ /* External connector */
+ info->edev = devm_extcon_dev_allocate(info->dev,
+ fsa9480_extcon_cable);
+ if (IS_ERR(info->edev)) {
+ dev_err(info->dev, "failed to allocate memory for extcon\n");
+ ret = -ENOMEM;
+ return ret;
+ }
+
+ ret = devm_extcon_dev_register(info->dev, info->edev);
+ if (ret) {
+ dev_err(info->dev, "failed to register extcon device\n");
+ return ret;
+ }
+
+ info->regmap = devm_regmap_init_i2c(client, &fsa9480_regmap_config);
+ if (IS_ERR(info->regmap)) {
+ ret = PTR_ERR(info->regmap);
+ dev_err(info->dev, "failed to allocate register map: %d\n",
+ ret);
+ return ret;
+ }
+
+ /* ADC Detect Time: 500ms */
+ fsa9480_write_reg(info, FSA9480_REG_TIMING1, TIMING1_ADC_500MS);
+
+ /* configure automatic switching */
+ fsa9480_write_reg(info, FSA9480_REG_CTRL, CON_MASK);
+
+ /* unmask interrupt (attach/detach only) */
+ fsa9480_write_reg(info, FSA9480_REG_INT1_MASK,
+ INT1_MASK & ~(INT_ATTACH | INT_DETACH));
+ fsa9480_write_reg(info, FSA9480_REG_INT2_MASK, INT2_MASK);
+
+ ret = devm_request_threaded_irq(info->dev, client->irq, NULL,
+ fsa9480_irq_handler,
+ IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
+ "fsa9480", info);
+ if (ret) {
+ dev_err(info->dev, "failed to request IRQ\n");
+ return ret;
+ }
+
+ device_init_wakeup(info->dev, true);
+ fsa9480_detect_dev(info);
+
+ return 0;
+}
+
+static int fsa9480_remove(struct i2c_client *client)
+{
+ return 0;
+}
+
+#ifdef CONFIG_PM_SLEEP
+static int fsa9480_suspend(struct device *dev)
+{
+ struct i2c_client *client = to_i2c_client(dev);
+
+ if (device_may_wakeup(&client->dev) && client->irq)
+ enable_irq_wake(client->irq);
+
+ return 0;
+}
+
+static int fsa9480_resume(struct device *dev)
+{
+ struct i2c_client *client = to_i2c_client(dev);
+
+ if (device_may_wakeup(&client->dev) && client->irq)
+ disable_irq_wake(client->irq);
+
+ return 0;
+}
+#endif
+
+static const struct dev_pm_ops fsa9480_pm_ops = {
+ SET_SYSTEM_SLEEP_PM_OPS(fsa9480_suspend, fsa9480_resume)
+};
+
+static const struct i2c_device_id fsa9480_id[] = {
+ { "fsa9480", 0 },
+ {}
+};
+MODULE_DEVICE_TABLE(i2c, fsa9480_id);
+
+static const struct of_device_id fsa9480_of_match[] = {
+ { .compatible = "fcs,fsa9480", },
+ { },
+};
+MODULE_DEVICE_TABLE(of, fsa9480_of_match);
+
+static struct i2c_driver fsa9480_i2c_driver = {
+ .driver = {
+ .name = "fsa9480",
+ .pm = &fsa9480_pm_ops,
+ .of_match_table = fsa9480_of_match,
+ },
+ .probe = fsa9480_probe,
+ .remove = fsa9480_remove,
+ .id_table = fsa9480_id,
+};
+
+static int __init fsa9480_module_init(void)
+{
+ return i2c_add_driver(&fsa9480_i2c_driver);
+}
+subsys_initcall(fsa9480_module_init);
+
+static void __exit fsa9480_module_exit(void)
+{
+ i2c_del_driver(&fsa9480_i2c_driver);
+}
+module_exit(fsa9480_module_exit);
+
+MODULE_DESCRIPTION("Fairchild Semiconductor FSA9480 extcon driver");
+MODULE_AUTHOR("Tomasz Figa <tomasz.figa@gmail.com>");
+MODULE_LICENSE("GPL");
--
2.22.0

View file

@ -0,0 +1,60 @@
From 6f64a6f1329e4d61da8f94b4bd68a0a2a62da305 Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Thu, 20 Jun 2019 19:47:11 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: Workaround RTC bugs
MAX8907 has broken RTC on this board - alarm reports
always-on IRQ, so as a workaround we use Tegra's RTC.
Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
---
arch/arm/boot/dts/tegra20-glide.dts | 26 +++++++++++++++++++++++---
1 file changed, 23 insertions(+), 3 deletions(-)
diff --git a/arch/arm/boot/dts/tegra20-glide.dts b/arch/arm/boot/dts/tegra20-glide.dts
index 195ccb0a1012..107efb68c99e 100644
--- a/arch/arm/boot/dts/tegra20-glide.dts
+++ b/arch/arm/boot/dts/tegra20-glide.dts
@@ -9,8 +9,9 @@
compatible = "samsung,i927", "nvidia,tegra20";
aliases {
- rtc0 = "/i2c@7000d000/max8907@3c";
- rtc1 = "/rtc@7000e000";
+ /* MAX8907 RTC seems to be broken here, so use Tegra's */
+ rtc0 = "/rtc@7000e000";
+ rtc1 = "/i2c@7000d000/max8907@3c";
serial0 = &uartb;
serial1 = &uarta;
serial2 = &uartc;
@@ -585,7 +586,26 @@
pmic: max8907@3c {
compatible = "maxim,max8907";
reg = <0x3c>;
- interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
+ /*
+ * Ints seem to be broken, even on downstream -
+ * on Whistler board, which uses the same PMIC,
+ * they're marked as LEVEL_HIGH, however, this
+ * makes them always-on, so we get something
+ * like "irq 301: nobody cared" - no interrupt
+ * status reg set, BUT irq line is asserted, and
+ * I don't know how to clear it. Probably it
+ * should be triggered on edge. Downstream
+ * charger driver triggers charging interrupt
+ * on TRIGGER_RISING. Oh, no docs available
+ * on the net.
+ *
+ * Downstream kernel also has broken alarm, but
+ * time readings are correct.
+ *
+ * As a workaround, we use internal Tegra RTC
+ * as a main RTC.
+ */
+ interrupts = <GIC_SPI 86 IRQ_TYPE_EDGE_RISING>;
maxim,system-power-controller;
--
2.22.0

View file

@ -0,0 +1,66 @@
From 5d5cf4cb138bc06ff76b64f3970af87836451e4a Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Thu, 20 Jun 2019 19:54:17 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: Fixup GPS binding
Still doesn't work - UART controller does not detect
any transfers, so we're probably unsupported with
kernel SiRF driver. The chip appears to be GSD4t.
Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
---
arch/arm/boot/dts/tegra20-glide.dts | 20 ++++++++++++++++++--
1 file changed, 18 insertions(+), 2 deletions(-)
diff --git a/arch/arm/boot/dts/tegra20-glide.dts b/arch/arm/boot/dts/tegra20-glide.dts
index 107efb68c99e..b55effa69fbe 100644
--- a/arch/arm/boot/dts/tegra20-glide.dts
+++ b/arch/arm/boot/dts/tegra20-glide.dts
@@ -445,8 +445,13 @@
// GPS
serial@70006000 {
- compatible = "nvidia,tegra20-hsuart";
+ // I get a DMA error when HSUART is enabled, fall back to 8250
+ // Also I get mysterious timed-out errors, no matter what GPIOs are.
+ // compatible = "nvidia,tegra20-hsuart";
status = "okay";
+ current-speed = <115200>;
+ // current-speed = <460800>;
+ // current-speed = <9600>;
/*
* Wakeup GPIO is needed for kernel driver to work,
@@ -461,8 +466,10 @@
sirf,onoff-gpios = <&gpio TEGRA_GPIO(N, 6) GPIO_ACTIVE_HIGH>;
// reset GPIO: B2
+ // sirf,onoff-gpios = <&gpio TEGRA_GPIO(B, 2) GPIO_ACTIVE_LOW>;
// Also depends on this, but no way to specify it
clocks = <&tegra_car TEGRA20_CLK_BLINK>;
+ vcc-supply = <&gps_en>;
};
#endif
};
@@ -1380,8 +1387,17 @@
gpio = <&gpio TEGRA_GPIO(R, 7) GPIO_ACTIVE_HIGH>;
enable-active-high;
};
- };
+ gps_en: regulator@4 {
+ compatible = "regulator-fixed";
+ reg = <4>;
+ regulator-name = "gps-en";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ // gpio = <&gpio TEGRA_GPIO(N, 6) GPIO_ACTIVE_HIGH>;
+ // gpio = <&gpio TEGRA_GPIO(B, 2) GPIO_ACTIVE_HIGH>;
+ };
+ };
sound {
compatible = "nvidia,tegra-audio-wm8994";
--
2.22.0

View file

@ -0,0 +1,238 @@
From 1f0771d6cb2e929da00c58cdc4e07830d18b23a5 Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Thu, 20 Jun 2019 19:58:36 +0300
Subject: [PATCH] regulator: max8893: add regulator driver
MAX8893 is a simple regulator which can be found on some of Sasmsung
phones.
Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
---
drivers/regulator/Kconfig | 7 ++
drivers/regulator/Makefile | 1 +
drivers/regulator/max8893.c | 183 ++++++++++++++++++++++++++++++++++++
3 files changed, 191 insertions(+)
create mode 100644 drivers/regulator/max8893.c
diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig
index 8553bdf87c1d..4a6a5c0120c6 100644
--- a/drivers/regulator/Kconfig
+++ b/drivers/regulator/Kconfig
@@ -493,6 +493,13 @@ config REGULATOR_MAX8660
This driver controls a Maxim 8660/8661 voltage output
regulator via I2C bus.
+config REGULATOR_MAX8893
+ tristate "Maxim 8893 voltage regulator"
+ depends on I2C
+ help
+ This driver controls a Maxim 8893 voltage output
+ regulator via I2C bus.
+
config REGULATOR_MAX8907
tristate "Maxim 8907 voltage regulator"
depends on MFD_MAX8907
diff --git a/drivers/regulator/Makefile b/drivers/regulator/Makefile
index 93f53840e8f1..eed0bf2de2ee 100644
--- a/drivers/regulator/Makefile
+++ b/drivers/regulator/Makefile
@@ -64,6 +64,7 @@ obj-$(CONFIG_REGULATOR_MAX77620) += max77620-regulator.o
obj-$(CONFIG_REGULATOR_MAX77650) += max77650-regulator.o
obj-$(CONFIG_REGULATOR_MAX8649) += max8649.o
obj-$(CONFIG_REGULATOR_MAX8660) += max8660.o
+obj-$(CONFIG_REGULATOR_MAX8893) += max8893.o
obj-$(CONFIG_REGULATOR_MAX8907) += max8907-regulator.o
obj-$(CONFIG_REGULATOR_MAX8925) += max8925-regulator.o
obj-$(CONFIG_REGULATOR_MAX8952) += max8952.o
diff --git a/drivers/regulator/max8893.c b/drivers/regulator/max8893.c
new file mode 100644
index 000000000000..1519bf760da7
--- /dev/null
+++ b/drivers/regulator/max8893.c
@@ -0,0 +1,183 @@
+// SPDX-License-Identifier: GPL-2.0+
+#include <linux/module.h>
+#include <linux/i2c.h>
+#include <linux/of.h>
+#include <linux/regmap.h>
+#include <linux/regulator/driver.h>
+
+static const struct regulator_ops max8893_ops = {
+ .is_enabled = regulator_is_enabled_regmap,
+ .enable = regulator_enable_regmap,
+ .disable = regulator_disable_regmap,
+ .get_voltage_sel = regulator_get_voltage_sel_regmap,
+ .set_voltage_sel = regulator_set_voltage_sel_regmap,
+ .list_voltage = regulator_list_voltage_linear,
+ .map_voltage = regulator_map_voltage_linear,
+};
+
+static const struct regulator_desc max8893_regulators[] = {
+ {
+ .name = "BUCK",
+ .supply_name = "in-buck",
+ .of_match = of_match_ptr("buck"),
+ .regulators_node = of_match_ptr("regulators"),
+ .n_voltages = 0x11,
+ .id = 6,
+ .ops = &max8893_ops,
+ .type = REGULATOR_VOLTAGE,
+ .owner = THIS_MODULE,
+ .min_uV = 800000,
+ .uV_step = 100000,
+ .vsel_reg = 0x4,
+ .vsel_mask = 0x1f,
+ .enable_reg = 0x0,
+ .enable_mask = BIT(7),
+ },
+ {
+ .name = "LDO1",
+ .supply_name = "in-ldo1",
+ .of_match = of_match_ptr("ldo1"),
+ .regulators_node = of_match_ptr("regulators"),
+ .n_voltages = 0x12,
+ .id = 1,
+ .ops = &max8893_ops,
+ .type = REGULATOR_VOLTAGE,
+ .owner = THIS_MODULE,
+ .min_uV = 1600000,
+ .uV_step = 100000,
+ .vsel_reg = 0x5,
+ .vsel_mask = 0x1f,
+ .enable_reg = 0x0,
+ .enable_mask = BIT(5),
+ },
+ {
+ .name = "LDO2",
+ .supply_name = "in-ldo2",
+ .of_match = of_match_ptr("ldo2"),
+ .regulators_node = of_match_ptr("regulators"),
+ .n_voltages = 0x16,
+ .id = 2,
+ .ops = &max8893_ops,
+ .type = REGULATOR_VOLTAGE,
+ .owner = THIS_MODULE,
+ .min_uV = 1200000,
+ .uV_step = 100000,
+ .vsel_reg = 0x6,
+ .vsel_mask = 0x1f,
+ .enable_reg = 0x0,
+ .enable_mask = BIT(4),
+ },
+ {
+ .name = "LDO3",
+ .supply_name = "in-ldo3",
+ .of_match = of_match_ptr("ldo3"),
+ .regulators_node = of_match_ptr("regulators"),
+ .n_voltages = 0x12,
+ .id = 3,
+ .ops = &max8893_ops,
+ .type = REGULATOR_VOLTAGE,
+ .owner = THIS_MODULE,
+ .min_uV = 1600000,
+ .uV_step = 100000,
+ .vsel_reg = 0x7,
+ .vsel_mask = 0x1f,
+ .enable_reg = 0x0,
+ .enable_mask = BIT(3),
+ },
+ {
+ .name = "LDO4",
+ .supply_name = "in-ldo4",
+ .of_match = of_match_ptr("ldo4"),
+ .regulators_node = of_match_ptr("regulators"),
+ .n_voltages = 0x1a,
+ .id = 4,
+ .ops = &max8893_ops,
+ .type = REGULATOR_VOLTAGE,
+ .owner = THIS_MODULE,
+ .min_uV = 800000,
+ .uV_step = 100000,
+ .vsel_reg = 0x8,
+ .vsel_mask = 0x1f,
+ .enable_reg = 0x0,
+ .enable_mask = BIT(2),
+ },
+ {
+ .name = "LDO5",
+ .supply_name = "in-ldo5",
+ .of_match = of_match_ptr("ldo5"),
+ .regulators_node = of_match_ptr("regulators"),
+ .n_voltages = 0x1a,
+ .id = 5,
+ .ops = &max8893_ops,
+ .type = REGULATOR_VOLTAGE,
+ .owner = THIS_MODULE,
+ .min_uV = 800000,
+ .uV_step = 100000,
+ .vsel_reg = 0x9,
+ .vsel_mask = 0x1f,
+ .enable_reg = 0x0,
+ .enable_mask = BIT(1),
+ }
+};
+
+static const struct regmap_config max8893_regmap = {
+ .reg_bits = 8,
+ .val_bits = 8,
+};
+
+static int max8893_probe_new(struct i2c_client *i2c)
+{
+ int id, ret;
+ struct regulator_config config = {.dev = &i2c->dev};
+ struct regmap *regmap = devm_regmap_init_i2c(i2c, &max8893_regmap);
+
+ if (IS_ERR(regmap)) {
+ ret = PTR_ERR(regmap);
+ dev_err(&i2c->dev, "regmap init failed: %d\n", ret);
+ return ret;
+ }
+
+ for (id = 0; id < ARRAY_SIZE(max8893_regulators); id++) {
+ struct regulator_dev *rdev;
+ rdev = devm_regulator_register(&i2c->dev,
+ &max8893_regulators[id],
+ &config);
+ if (IS_ERR(rdev)) {
+ ret = PTR_ERR(rdev);
+ dev_err(&i2c->dev, "failed to register %s: %d\n",
+ max8893_regulators[id].name, ret);
+ return ret;
+ }
+ }
+
+ return 0;
+}
+
+#ifdef CONFIG_OF
+static const struct of_device_id max8893_dt_match[] = {
+ { .compatible = "maxim,max8893" },
+ { /* sentinel */ },
+};
+MODULE_DEVICE_TABLE(of, max8893_dt_match);
+#endif
+
+static const struct i2c_device_id max8893_ids[] = {
+ { "max8893", 0 },
+ { },
+};
+MODULE_DEVICE_TABLE(i2c, max8893_ids);
+
+static struct i2c_driver max8893_driver = {
+ .probe_new = max8893_probe_new,
+ .driver = {
+ .name = "max8893",
+ .of_match_table = of_match_ptr(max8893_dt_match),
+ },
+ .id_table = max8893_ids,
+};
+
+module_i2c_driver(max8893_driver);
+
+MODULE_DESCRIPTION("Maxim MAX8893 PMIC driver");
+MODULE_AUTHOR("Sergey Larin <cerg2010cerg2010@mail.ru>");
+MODULE_LICENSE("GPL");
--
2.22.0

View file

@ -0,0 +1,138 @@
From bce4b77a6c6ca82e4e0518c80444d3b879c7b60e Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Thu, 20 Jun 2019 20:03:09 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: Add cameras regulators
Cameras use multiple power sources on this board. Labels near the regulator
indicate the camera which uses the regulator and the order of powering on.
Also, the reset GPIO is specified to keep the info inside DT.
Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
---
arch/arm/boot/dts/tegra20-glide.dts | 94 ++++++++++++++++++++++++++++-
1 file changed, 91 insertions(+), 3 deletions(-)
diff --git a/arch/arm/boot/dts/tegra20-glide.dts b/arch/arm/boot/dts/tegra20-glide.dts
index b55effa69fbe..f2af07aba8a3 100644
--- a/arch/arm/boot/dts/tegra20-glide.dts
+++ b/arch/arm/boot/dts/tegra20-glide.dts
@@ -578,6 +578,7 @@
/* Not supported - no DT binding */
/* m5mo@1f {
reg = <0x1f>;
+ reset-gpios = <&gpio TEGRA_GPIO(D, 2) GPIO_ACTIVE_HIGH>;
}; */
/* Not supported - no DT binding */
@@ -997,10 +998,48 @@
#address-cells = <1>;
#size-cells = <0>;
- /* Not supported - no driver?/no DT binding? */
- /* m5mo_pmic@3e {
+ max8893@3e {
+ compatible = "maxim,max8893";
reg = <0x3e>;
- }; */
+
+ regulators {
+ /* Front camera - s5k6aafx, back - m5mo */
+ /* Numbers used to indicate the sequence */
+ front_1_back_1: buck {
+ regulator-name = "cam_isp_core_1v2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ };
+
+ front_4_back_5: ldo1 {
+ regulator-name = "vt_io_1v8,cam_isp_1v8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ };
+
+ front_3_back_4: ldo2 {
+ regulator-name = "vt_core_1v5";
+ regulator-min-microvolt = <1500000>;
+ regulator-max-microvolt = <1500000>;
+ };
+
+ front_5_back_6: ldo3 {
+ regulator-name = "vt_cam_1v8,vt_sensor_io_1v8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ };
+
+ ldo4 {
+ /* not used */
+ };
+
+ back_7: ldo5 {
+ regulator-name = "cam_sensor_io_1v8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ };
+ };
+ };
};
i2c@17 {
@@ -1397,6 +1436,55 @@
// gpio = <&gpio TEGRA_GPIO(N, 6) GPIO_ACTIVE_HIGH>;
// gpio = <&gpio TEGRA_GPIO(B, 2) GPIO_ACTIVE_HIGH>;
};
+
+ front_2_back_3: regulator@5 {
+ compatible = "regulator-fixed";
+ reg = <5>;
+ regulator-name = "cam-pmic-en2";
+ /* voltage is unknown */
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ gpio = <&gpio TEGRA_GPIO(T, 3) GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ /*
+ * on m5mo, this needs to be disabled after
+ * cam-vt-nrst GPIO, but I don't know how to
+ * write this here properly. Probably will need
+ * to dance with pinmux?
+ */
+ front_6_back_8_10: regulator@6 {
+ compatible = "regulator-fixed";
+ reg = <6>;
+ regulator-name = "cam-vt-nstby";
+ /* voltage is unknown */
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ gpio = <&gpio TEGRA_GPIO(D, 5) GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ front_7_back_9: regulator@7 {
+ compatible = "regulator-fixed";
+ reg = <7>;
+ regulator-name = "cam-vt-nrst";
+ /* voltage is unknown */
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ gpio = <&gpio TEGRA_GPIO(T, 4) GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ back_2: regulator@8 {
+ compatible = "regulator-fixed";
+ reg = <8>;
+ regulator-name = "cam-mega-core-1p2-en";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ gpio = <&gpio TEGRA_GPIO(R, 0) GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
};
sound {
--
2.22.0

View file

@ -0,0 +1,27 @@
From a3ceabcdcd82397a6f6be19d7e3f55c534102025 Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Thu, 20 Jun 2019 20:08:45 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: Disable BBAT regualtor
This regulator is unused on this board, so disable it.
Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
---
arch/arm/boot/dts/tegra20-glide.dts | 1 -
1 file changed, 1 deletion(-)
diff --git a/arch/arm/boot/dts/tegra20-glide.dts b/arch/arm/boot/dts/tegra20-glide.dts
index f2af07aba8a3..2e40b051546f 100644
--- a/arch/arm/boot/dts/tegra20-glide.dts
+++ b/arch/arm/boot/dts/tegra20-glide.dts
@@ -819,7 +819,6 @@
bbat {
regulator-name = "bbat";
- regulator-always-on;
};
sdby {
--
2.22.0

View file

@ -0,0 +1,28 @@
From 990843643ca68c40b5e9371212c775054eb19b95 Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Thu, 20 Jun 2019 20:09:50 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: Set boot-on property to vdd_arm
regulator
This is used to keep the stock voltage specified by bootloader.
Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
---
arch/arm/boot/dts/tegra20-glide.dts | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/arm/boot/dts/tegra20-glide.dts b/arch/arm/boot/dts/tegra20-glide.dts
index 2e40b051546f..e9a05dccb734 100644
--- a/arch/arm/boot/dts/tegra20-glide.dts
+++ b/arch/arm/boot/dts/tegra20-glide.dts
@@ -842,6 +842,7 @@
regulator-min-microvolt = <770000>;
regulator-max-microvolt = <1100000>;
regulator-always-on;
+ regulator-boot-on;
};
};
--
2.22.0

View file

@ -0,0 +1,33 @@
From bcbcf94f3224c2cf5c312b41667187c6b2e6d3ee Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Thu, 20 Jun 2019 20:12:18 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: Fix STMPE GPIO binding
These GPIOs are also used as interrupts.
norequest-mask is set to avoid conflicts with keyboard.
Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
---
arch/arm/boot/dts/tegra20-glide.dts | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/arm/boot/dts/tegra20-glide.dts b/arch/arm/boot/dts/tegra20-glide.dts
index e9a05dccb734..90f2a6eb9d77 100644
--- a/arch/arm/boot/dts/tegra20-glide.dts
+++ b/arch/arm/boot/dts/tegra20-glide.dts
@@ -1173,8 +1173,11 @@
stmpegpio: stmpe_gpio {
compatible = "st,stmpe-gpio";
+ st,norequest-mask = <0x7fff>;
gpio-controller;
#gpio-cells = <2>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
};
};
};
--
2.22.0

View file

@ -0,0 +1,167 @@
From 0f7667b7fbbea13855b4a34b4cf17595357463f0 Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Thu, 20 Jun 2019 20:19:35 +0300
Subject: [PATCH] power: supply: Add regulator to max8903 charger for VBUS
control
When OTG cable is inserted, the host needs to enable VBUS in order to
supply power to the connected device. However, the charger detects that
and starts charging the battery, draining the supplied power.
Avoid this by using an optional regulator subnode which disables charging
when enabled.
Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
---
drivers/power/supply/Kconfig | 1 +
drivers/power/supply/max8903_charger.c | 72 +++++++++++++++++++++++++-
2 files changed, 72 insertions(+), 1 deletion(-)
diff --git a/drivers/power/supply/Kconfig b/drivers/power/supply/Kconfig
index dd7da41f230c..9d394ae8a3b8 100644
--- a/drivers/power/supply/Kconfig
+++ b/drivers/power/supply/Kconfig
@@ -440,6 +440,7 @@ config CHARGER_ISP1704
config CHARGER_MAX8903
tristate "MAX8903 Battery DC-DC Charger for USB and Adapter Power"
+ depends on REGULATOR
help
Say Y to enable support for the MAX8903 DC-DC charger and sysfs.
The driver supports controlling charger-enable and current-limit
diff --git a/drivers/power/supply/max8903_charger.c b/drivers/power/supply/max8903_charger.c
index 0bd39b0cc257..465fdae7179b 100644
--- a/drivers/power/supply/max8903_charger.c
+++ b/drivers/power/supply/max8903_charger.c
@@ -16,15 +16,18 @@
#include <linux/power_supply.h>
#include <linux/platform_device.h>
#include <linux/power/max8903_charger.h>
+#include <linux/regulator/driver.h>
struct max8903_data {
struct max8903_pdata *pdata;
struct device *dev;
struct power_supply *psy;
struct power_supply_desc psy_desc;
+ struct regulator_desc otg_rdesc;
bool fault;
bool usb_in;
bool ta_in;
+ bool otg_en;
};
static enum power_supply_property max8903_charger_props[] = {
@@ -43,7 +46,7 @@ static int max8903_get_property(struct power_supply *psy,
case POWER_SUPPLY_PROP_STATUS:
val->intval = POWER_SUPPLY_STATUS_UNKNOWN;
if (gpio_is_valid(data->pdata->chg)) {
- if (gpio_get_value(data->pdata->chg) == 0)
+ if (gpio_get_value_cansleep(data->pdata->chg) == 0)
val->intval = POWER_SUPPLY_STATUS_CHARGING;
else if (data->usb_in || data->ta_in)
val->intval = POWER_SUPPLY_STATUS_NOT_CHARGING;
@@ -75,6 +78,8 @@ static irqreturn_t max8903_dcin(int irq, void *_data)
bool ta_in;
enum power_supply_type old_type;
+ /* Do not touch OTG mode */
+
ta_in = gpio_get_value(pdata->dok) ? false : true;
if (ta_in == data->ta_in)
@@ -116,6 +121,10 @@ static irqreturn_t max8903_usbin(int irq, void *_data)
bool usb_in;
enum power_supply_type old_type;
+ /* Don't do anything if OTG is active */
+ if (data->otg_en)
+ return IRQ_HANDLED;
+
usb_in = gpio_get_value(pdata->uok) ? false : true;
if (usb_in == data->usb_in)
@@ -330,12 +339,55 @@ static int max8903_setup_gpios(struct platform_device *pdev)
return 0;
}
+static int max8903_otg_enable(struct regulator_dev *rdev)
+{
+ struct max8903_data *data = rdev_get_drvdata(rdev);
+ struct max8903_pdata *pdata = data->pdata;
+
+ /* Disable charging */
+ data->otg_en = true;
+ if (data->usb_in)
+ gpio_set_value(pdata->cen, 1);
+ data->usb_in = false;
+
+ if (data->psy_desc.type != POWER_SUPPLY_TYPE_BATTERY)
+ {
+ data->psy_desc.type = POWER_SUPPLY_TYPE_BATTERY;
+ power_supply_changed(data->psy);
+ }
+
+ return 0;
+}
+
+static int max8903_otg_disable(struct regulator_dev *rdev)
+{
+ struct max8903_data *data = rdev_get_drvdata(rdev);
+
+ /* Enable charging */
+ data->otg_en = false;
+ return 0;
+}
+
+static int max8903_otg_is_enabled(struct regulator_dev *rdev)
+{
+ struct max8903_data *data = rdev_get_drvdata(rdev);
+ return data->otg_en;
+}
+
+struct regulator_ops otg_ops = {
+ .enable = max8903_otg_enable,
+ .disable = max8903_otg_disable,
+ .is_enabled = max8903_otg_is_enabled,
+};
+
static int max8903_probe(struct platform_device *pdev)
{
struct max8903_data *data;
struct device *dev = &pdev->dev;
struct max8903_pdata *pdata = pdev->dev.platform_data;
struct power_supply_config psy_cfg = {};
+ struct regulator_config config = {};
+ struct regulator_dev *otg_reg;
int ret = 0;
data = devm_kzalloc(dev, sizeof(struct max8903_data), GFP_KERNEL);
@@ -420,6 +472,24 @@ static int max8903_probe(struct platform_device *pdev)
}
}
+ data->otg_rdesc.id = -1;
+ data->otg_rdesc.name = "otg-vbus";
+ data->otg_rdesc.ops = &otg_ops;
+ data->otg_rdesc.owner = THIS_MODULE;
+ data->otg_rdesc.type = REGULATOR_VOLTAGE;
+ data->otg_rdesc.supply_name = "usb-otg-in";
+ data->otg_rdesc.of_match = of_match_ptr("otg-vbus");
+
+ config.dev = dev;
+ config.driver_data = data;
+
+ otg_reg = devm_regulator_register(dev, &data->otg_rdesc,
+ &config);
+ if (IS_ERR(otg_reg))
+ {
+ dev_info(dev, "regulator not registered");
+ }
+
return 0;
}
--
2.22.0

View file

@ -0,0 +1,58 @@
From 0675c1ad70a49437fe6711f7456dd14be29a9913 Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Thu, 20 Jun 2019 20:22:08 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: Add binding for charger
MAX8922 is compatible with MAX8903's driver, which is very flexible. So
we use it to detect the cable insertion and control the charging.
Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
---
arch/arm/boot/dts/tegra20-glide.dts | 21 +++++++++++++++++++--
1 file changed, 19 insertions(+), 2 deletions(-)
diff --git a/arch/arm/boot/dts/tegra20-glide.dts b/arch/arm/boot/dts/tegra20-glide.dts
index 90f2a6eb9d77..b8f3916ec35b 100644
--- a/arch/arm/boot/dts/tegra20-glide.dts
+++ b/arch/arm/boot/dts/tegra20-glide.dts
@@ -853,8 +853,6 @@
i2c-gpio,delay-us = <1>;
#address-cells = <1>;
#size-cells = <0>;
- //interrupt-parent = <&gpio>;
- //interrupts = <TEGRA_GPIO(I, 5) IRQ_TYPE_LEVEL_HIGH>;
// Use 17040 as 17043 is compatible - no ALRT feature
max17043@36 {
@@ -862,9 +860,28 @@
reg = <0x36>;
interrupt-parent = <&gpio>;
interrupts = <TEGRA_GPIO(I, 5) IRQ_TYPE_LEVEL_HIGH>;
+ power-supplies = <&usb_ta_charger>;
+ /* Fuel alert - not supported (for now?) */
+ //interrupt-parent = <&gpio>;
+ //interrupts = <TEGRA_GPIO(I, 5) IRQ_TYPE_LEVEL_HIGH>;
};
};
+ usb_ta_charger: max8922-charger {
+ compatible = "maxim,max8903";
+ chg-gpios = <&stmpegpio 16 GPIO_ACTIVE_LOW>;
+ cen-gpios = <&gpio TEGRA_GPIO(R, 3) GPIO_ACTIVE_HIGH>;
+ uok-gpios = <&gpio TEGRA_GPIO(T, 0) GPIO_ACTIVE_HIGH>;
+ /*
+ * Original sources also use FSA9480 for USB charger
+ * detection, but it's on extcon and not GPIO,
+ * so skip it since dok (GPIO_TA_nCONNECTED) works fine.
+ * (specified as uok since USB is detected)
+ */
+
+ charger_supply: otg-vbus {};
+ };
+
i2c@7 {
compatible = "i2c-gpio";
sda-gpios = <&gpio TEGRA_GPIO(O, 4) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
--
2.22.0

View file

@ -0,0 +1,39 @@
From 98e6d3ea7aa540d68edb5e3773cd7d85b574fc46 Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Thu, 20 Jun 2019 20:24:45 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: Add binding for FSA9480
FSA9480 is a USB cable detector and switch. This board uses this
to provide USB, USB-OTG, MHL and UART functionality over one microUSB port.
Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
---
arch/arm/boot/dts/tegra20-glide.dts | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/arch/arm/boot/dts/tegra20-glide.dts b/arch/arm/boot/dts/tegra20-glide.dts
index b8f3916ec35b..fc4aca8a1c47 100644
--- a/arch/arm/boot/dts/tegra20-glide.dts
+++ b/arch/arm/boot/dts/tegra20-glide.dts
@@ -941,13 +941,13 @@
i2c-gpio,delay-us = <1>;
#address-cells = <1>;
#size-cells = <0>;
- interrupt-parent = <&gpio>;
- interrupts = <TEGRA_GPIO(L, 1) IRQ_TYPE_LEVEL_HIGH>;
- /* Not supported - no DT bindings */
- /* fsa9480@25 {
+ fsa9480@25 {
+ compatible = "fcs,fsa9480";
reg = <0x25>;
- }; */
+ interrupt-parent = <&gpio>;
+ interrupts = <TEGRA_GPIO(L, 1) IRQ_TYPE_LEVEL_HIGH>;
+ };
};
hdmi_ddc: i2c@13 {
--
2.22.0

View file

@ -0,0 +1,28 @@
From 92533301876cd45f4b5ec0f36c1f39c49575b428 Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Thu, 20 Jun 2019 20:27:26 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: Remove combined-power-req property
This board uses separate-power-req, however, this property is unused
in the driver.
Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
---
arch/arm/boot/dts/tegra20-glide.dts | 1 -
1 file changed, 1 deletion(-)
diff --git a/arch/arm/boot/dts/tegra20-glide.dts b/arch/arm/boot/dts/tegra20-glide.dts
index fc4aca8a1c47..7d3b6066ac0c 100644
--- a/arch/arm/boot/dts/tegra20-glide.dts
+++ b/arch/arm/boot/dts/tegra20-glide.dts
@@ -1245,7 +1245,6 @@
nvidia,core-pwr-off-time = <0>;
nvidia,core-power-req-active-high;
nvidia,sys-clock-req-active-high;
- nvidia,combined-power-req;
nvidia,lp0-vec = <0x1819E000 8192>;
};
--
2.22.0

View file

@ -0,0 +1,299 @@
From b302defd02e5db34787d577adfbe56c1323385ee Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Thu, 20 Jun 2019 20:29:17 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: Add EMC memory timings
There's one memory module inside, so the timings are not versioned.
Extracted from downstream with regex and VIM magic.
Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
---
arch/arm/boot/dts/tegra20-glide.dts | 272 ++++++++++++++++++++++++++++
1 file changed, 272 insertions(+)
diff --git a/arch/arm/boot/dts/tegra20-glide.dts b/arch/arm/boot/dts/tegra20-glide.dts
index 7d3b6066ac0c..0c6a903ef0c7 100644
--- a/arch/arm/boot/dts/tegra20-glide.dts
+++ b/arch/arm/boot/dts/tegra20-glide.dts
@@ -1248,6 +1248,278 @@
nvidia,lp0-vec = <0x1819E000 8192>;
};
+ memory-controller@7000f400 {
+ emc-table@25000 {
+ compatible = "nvidia,tegra20-emc-table";
+ reg = <25000>;
+ clock-frequency = < 25000 >; /* SDRAM frquency */
+ nvidia,emc-registers = <
+ 0x00000002 /* RC */
+ 0x00000006 /* RFC */
+ 0x00000003 /* RAS */
+ 0x00000003 /* RP */
+ 0x00000006 /* R2W */
+ 0x00000004 /* W2R */
+ 0x00000002 /* R2P */
+ 0x0000000b /* W2P */
+ 0x00000003 /* RD_RCD */
+ 0x00000003 /* WR_RCD */
+ 0x00000002 /* RRD */
+ 0x00000002 /* REXT */
+ 0x00000003 /* WDV */
+ 0x00000005 /* QUSE */
+ 0x00000004 /* QRST */
+ 0x00000008 /* QSAFE */
+ 0x0000000c /* RDV */
+ 0x0000004d /* REFRESH */
+ 0x00000000 /* BURST_REFRESH_NUM */
+ 0x00000003 /* PDEX2WR */
+ 0x00000003 /* PDEX2RD */
+ 0x00000003 /* PCHG2PDEN */
+ 0x00000008 /* ACT2PDEN */
+ 0x00000001 /* AR2PDEN */
+ 0x0000000b /* RW2PDEN */
+ 0x00000004 /* TXSR */
+ 0x00000003 /* TCKE */
+ 0x00000008 /* TFAW */
+ 0x00000004 /* TRPAB */
+ 0x00000008 /* TCLKSTABLE */
+ 0x00000002 /* TCLKSTOP */
+ 0x00000068 /* TREFBW */
+ 0x00000000 /* QUSE_EXTRA */
+ 0x00000003 /* FBIO_CFG6 */
+ 0x00000000 /* ODT_WRITE */
+ 0x00000000 /* ODT_READ */
+ 0x00000082 /* FBIO_CFG5 */
+ 0xa06a04ae /* CFG_DIG_DLL */
+ 0x00080000 /* DLL_XFORM_DQS */
+ 0x00000000 /* DLL_XFORM_QUSE */
+ 0x00000000 /* ZCAL_REF_CNT */
+ 0x00000003 /* ZCAL_WAIT_CNT */
+ 0x00000000 /* AUTO_CAL_INTERVAL */
+ 0x00000000 /* CFG_CLKTRIM_0 */
+ 0x00000000 /* CFG_CLKTRIM_1 */
+ 0x00000000 /* CFG_CLKTRIM_2 */
+ >;
+ };
+
+ emc-table@50000 {
+ compatible = "nvidia,tegra20-emc-table";
+ reg = <50000>;
+ clock-frequency = < 50000 >; /* SDRAM frquency */
+ nvidia,emc-registers = <
+ 0x00000003 /* RC */
+ 0x00000007 /* RFC */
+ 0x00000003 /* RAS */
+ 0x00000003 /* RP */
+ 0x00000006 /* R2W */
+ 0x00000004 /* W2R */
+ 0x00000002 /* R2P */
+ 0x0000000b /* W2P */
+ 0x00000003 /* RD_RCD */
+ 0x00000003 /* WR_RCD */
+ 0x00000002 /* RRD */
+ 0x00000002 /* REXT */
+ 0x00000003 /* WDV */
+ 0x00000006 /* QUSE */
+ 0x00000004 /* QRST */
+ 0x00000008 /* QSAFE */
+ 0x0000000c /* RDV */
+ 0x0000009f /* REFRESH */
+ 0x00000000 /* BURST_REFRESH_NUM */
+ 0x00000003 /* PDEX2WR */
+ 0x00000003 /* PDEX2RD */
+ 0x00000003 /* PCHG2PDEN */
+ 0x00000008 /* ACT2PDEN */
+ 0x00000001 /* AR2PDEN */
+ 0x0000000b /* RW2PDEN */
+ 0x00000007 /* TXSR */
+ 0x00000003 /* TCKE */
+ 0x00000008 /* TFAW */
+ 0x00000004 /* TRPAB */
+ 0x00000008 /* TCLKSTABLE */
+ 0x00000002 /* TCLKSTOP */
+ 0x000000d0 /* TREFBW */
+ 0x00000000 /* QUSE_EXTRA */
+ 0x00000000 /* FBIO_CFG6 */
+ 0x00000000 /* ODT_WRITE */
+ 0x00000000 /* ODT_READ */
+ 0x00000082 /* FBIO_CFG5 */
+ 0xa06a04ae /* CFG_DIG_DLL */
+ 0x00080000 /* DLL_XFORM_DQS */
+ 0x00000000 /* DLL_XFORM_QUSE */
+ 0x00000000 /* ZCAL_REF_CNT */
+ 0x00000005 /* ZCAL_WAIT_CNT */
+ 0x00000000 /* AUTO_CAL_INTERVAL */
+ 0x00000000 /* CFG_CLKTRIM_0 */
+ 0x00000000 /* CFG_CLKTRIM_1 */
+ 0x00000000 /* CFG_CLKTRIM_2 */
+ >;
+ };
+
+ emc-table@75000 {
+ compatible = "nvidia,tegra20-emc-table";
+ reg = <75000>;
+ clock-frequency = < 75000 >; /* SDRAM frquency */
+ nvidia,emc-registers = <
+ 0x00000005 /* RC */
+ 0x0000000a /* RFC */
+ 0x00000004 /* RAS */
+ 0x00000003 /* RP */
+ 0x00000006 /* R2W */
+ 0x00000004 /* W2R */
+ 0x00000002 /* R2P */
+ 0x0000000b /* W2P */
+ 0x00000003 /* RD_RCD */
+ 0x00000003 /* WR_RCD */
+ 0x00000002 /* RRD */
+ 0x00000002 /* REXT */
+ 0x00000003 /* WDV */
+ 0x00000006 /* QUSE */
+ 0x00000004 /* QRST */
+ 0x00000008 /* QSAFE */
+ 0x0000000c /* RDV */
+ 0x000000ff /* REFRESH */
+ 0x00000000 /* BURST_REFRESH_NUM */
+ 0x00000003 /* PDEX2WR */
+ 0x00000003 /* PDEX2RD */
+ 0x00000003 /* PCHG2PDEN */
+ 0x00000008 /* ACT2PDEN */
+ 0x00000001 /* AR2PDEN */
+ 0x0000000b /* RW2PDEN */
+ 0x0000000b /* TXSR */
+ 0x00000003 /* TCKE */
+ 0x00000008 /* TFAW */
+ 0x00000004 /* TRPAB */
+ 0x00000008 /* TCLKSTABLE */
+ 0x00000002 /* TCLKSTOP */
+ 0x00000138 /* TREFBW */
+ 0x00000000 /* QUSE_EXTRA */
+ 0x00000000 /* FBIO_CFG6 */
+ 0x00000000 /* ODT_WRITE */
+ 0x00000000 /* ODT_READ */
+ 0x00000082 /* FBIO_CFG5 */
+ 0xa06a04ae /* CFG_DIG_DLL */
+ 0x00080000 /* DLL_XFORM_DQS */
+ 0x00000000 /* DLL_XFORM_QUSE */
+ 0x00000000 /* ZCAL_REF_CNT */
+ 0x00000007 /* ZCAL_WAIT_CNT */
+ 0x00000000 /* AUTO_CAL_INTERVAL */
+ 0x00000000 /* CFG_CLKTRIM_0 */
+ 0x00000000 /* CFG_CLKTRIM_1 */
+ 0x00000000 /* CFG_CLKTRIM_2 */
+ >;
+ };
+
+ emc-table@150000 {
+ compatible = "nvidia,tegra20-emc-table";
+ reg = <150000>;
+ clock-frequency = < 150000 >; /* SDRAM frquency */
+ nvidia,emc-registers = <
+ 0x00000009 /* RC */
+ 0x00000014 /* RFC */
+ 0x00000007 /* RAS */
+ 0x00000003 /* RP */
+ 0x00000006 /* R2W */
+ 0x00000004 /* W2R */
+ 0x00000002 /* R2P */
+ 0x0000000b /* W2P */
+ 0x00000003 /* RD_RCD */
+ 0x00000003 /* WR_RCD */
+ 0x00000002 /* RRD */
+ 0x00000002 /* REXT */
+ 0x00000003 /* WDV */
+ 0x00000006 /* QUSE */
+ 0x00000004 /* QRST */
+ 0x00000008 /* QSAFE */
+ 0x0000000c /* RDV */
+ 0x0000021f /* REFRESH */
+ 0x00000000 /* BURST_REFRESH_NUM */
+ 0x00000003 /* PDEX2WR */
+ 0x00000003 /* PDEX2RD */
+ 0x00000003 /* PCHG2PDEN */
+ 0x00000008 /* ACT2PDEN */
+ 0x00000001 /* AR2PDEN */
+ 0x0000000b /* RW2PDEN */
+ 0x00000015 /* TXSR */
+ 0x00000003 /* TCKE */
+ 0x00000008 /* TFAW */
+ 0x00000004 /* TRPAB */
+ 0x00000008 /* TCLKSTABLE */
+ 0x00000002 /* TCLKSTOP */
+ 0x00000270 /* TREFBW */
+ 0x00000000 /* QUSE_EXTRA */
+ 0x00000001 /* FBIO_CFG6 */
+ 0x00000000 /* ODT_WRITE */
+ 0x00000000 /* ODT_READ */
+ 0x00000082 /* FBIO_CFG5 */
+ 0xa04c04ae /* CFG_DIG_DLL */
+ 0x007dea10 /* DLL_XFORM_DQS */
+ 0x00000000 /* DLL_XFORM_QUSE */
+ 0x00000000 /* ZCAL_REF_CNT */
+ 0x0000000e /* ZCAL_WAIT_CNT */
+ 0x00000000 /* AUTO_CAL_INTERVAL */
+ 0x00000000 /* CFG_CLKTRIM_0 */
+ 0x00000000 /* CFG_CLKTRIM_1 */
+ 0x00000000 /* CFG_CLKTRIM_2 */
+ >;
+ };
+
+ emc-table@300000 {
+ compatible = "nvidia,tegra20-emc-table";
+ reg = <300000>;
+ clock-frequency = < 300000 >; /* SDRAM frquency */
+ nvidia,emc-registers = <
+ 0x00000012 /* RC */
+ 0x00000027 /* RFC */
+ 0x0000000d /* RAS */
+ 0x00000006 /* RP */
+ 0x00000007 /* R2W */
+ 0x00000005 /* W2R */
+ 0x00000003 /* R2P */
+ 0x0000000b /* W2P */
+ 0x00000006 /* RD_RCD */
+ 0x00000006 /* WR_RCD */
+ 0x00000003 /* RRD */
+ 0x00000003 /* REXT */
+ 0x00000003 /* WDV */
+ 0x00000007 /* QUSE */
+ 0x00000004 /* QRST */
+ 0x00000009 /* QSAFE */
+ 0x0000000d /* RDV */
+ 0x0000045f /* REFRESH */
+ 0x00000000 /* BURST_REFRESH_NUM */
+ 0x00000004 /* PDEX2WR */
+ 0x00000004 /* PDEX2RD */
+ 0x00000006 /* PCHG2PDEN */
+ 0x00000008 /* ACT2PDEN */
+ 0x00000001 /* AR2PDEN */
+ 0x0000000f /* RW2PDEN */
+ 0x0000002a /* TXSR */
+ 0x00000003 /* TCKE */
+ 0x0000000f /* TFAW */
+ 0x00000007 /* TRPAB */
+ 0x00000007 /* TCLKSTABLE */
+ 0x00000002 /* TCLKSTOP */
+ 0x000004e0 /* TREFBW */
+ 0x00000006 /* QUSE_EXTRA */
+ 0x00000002 /* FBIO_CFG6 */
+ 0x00000000 /* ODT_WRITE */
+ 0x00000000 /* ODT_READ */
+ 0x00000282 /* FBIO_CFG5 */
+ 0xe03c048b /* CFG_DIG_DLL */
+ 0x007e0010 /* DLL_XFORM_DQS */
+ 0x00000000 /* DLL_XFORM_QUSE */
+ 0x00000000 /* ZCAL_REF_CNT */
+ 0x0000001b /* ZCAL_WAIT_CNT */
+ 0x00000000 /* AUTO_CAL_INTERVAL */
+ 0x00000000 /* CFG_CLKTRIM_0 */
+ 0x00000000 /* CFG_CLKTRIM_1 */
+ 0x00000000 /* CFG_CLKTRIM_2 */
+ >;
+ };
+ };
+
usb@c5000000 {
compatible = "nvidia,tegra20-udc";
status = "okay";
--
2.22.0

View file

@ -0,0 +1,77 @@
From 4729b2a505cf18d16d484af5deb8627f937b773d Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Thu, 20 Jun 2019 20:31:45 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: USB OTG bindings
OTG here is provided by ChipIdea controller, which uses OTG FSM to
power on the connected device. However, OTG specification says that
the device needs to receive power in 100ms, but this is not a strict
requirement. We need to disable the charger first and then power on VBUS,
which is slow process so we set a delay for the regulator to workaround
this.
Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
---
arch/arm/boot/dts/tegra20-glide.dts | 25 ++++++++++++++++++++++---
1 file changed, 22 insertions(+), 3 deletions(-)
diff --git a/arch/arm/boot/dts/tegra20-glide.dts b/arch/arm/boot/dts/tegra20-glide.dts
index 0c6a903ef0c7..56e5407b2f42 100644
--- a/arch/arm/boot/dts/tegra20-glide.dts
+++ b/arch/arm/boot/dts/tegra20-glide.dts
@@ -1520,15 +1520,28 @@
};
};
+ /*
+ * There's funny thing going on with OTG power
+ * which I don't know how to fix properly.
+ * When the OTG cable is plugged in, USB
+ * controller detects this and enables VBUS
+ * power. However, charger thinks that the
+ * charging cable is plugged in and enables
+ * charging. After that there's no power on
+ * the port :)
+ *
+ * So we use a bit modified driver with "dummy"
+ * regulator which disables charging when enabled.
+ */
usb@c5000000 {
compatible = "nvidia,tegra20-udc";
status = "okay";
- dr_mode = "otg";
- vbus-supply = <&vbus_reg>;
+ vbus-supply = <&otg_reg>;
};
usb-phy@c5000000 {
status = "okay";
+ dr_mode = "otg";
vbus-supply = <&usb_phy_reg>;
};
@@ -1708,7 +1721,7 @@
enable-active-high;
};
- vbus_reg: regulator@3 {
+ otg_reg: regulator@3 {
compatible = "regulator-fixed";
reg = <3>;
regulator-name = "otg-en";
@@ -1716,6 +1729,12 @@
regulator-max-microvolt = <5000000>;
gpio = <&gpio TEGRA_GPIO(R, 7) GPIO_ACTIVE_HIGH>;
enable-active-high;
+ /*
+ * CI HDRC controller requires delay in 100ms, but
+ * this thing is so slow!
+ */
+ regulator-enable-ramp-delay = <350000>;
+ vin-supply = <&charger_supply>;
};
gps_en: regulator@4 {
--
2.22.0

View file

@ -0,0 +1,61 @@
From 724efaa6ddffddc839ae3413a07d2424624cc8e5 Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Thu, 20 Jun 2019 20:39:05 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: Fixup MMC bindings
This is needed to avoid some warnings at boot. Someone reported that
card detection is broken, but these changes should fix this too.
Also WiFi timings are bumped to avoid issues on suspend-resume.
Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
---
arch/arm/boot/dts/tegra20-glide.dts | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/arch/arm/boot/dts/tegra20-glide.dts b/arch/arm/boot/dts/tegra20-glide.dts
index 56e5407b2f42..ef5145ce16ac 100644
--- a/arch/arm/boot/dts/tegra20-glide.dts
+++ b/arch/arm/boot/dts/tegra20-glide.dts
@@ -1559,8 +1559,8 @@
compatible = "mmc-pwrseq-simple";
clocks = <&tegra_car TEGRA20_CLK_BLINK>;
clock-names = "ext_clock";
- power-off-delay-us = <100000>;
- post-power-on-delay-ms = <100>;
+ power-off-delay-us = <200000>;
+ post-power-on-delay-ms = <200>;
};
sdhci@c8000000 {
@@ -1571,6 +1571,7 @@
non-removable;
wakeup-source;
post-power-on-delay-ms = <100>;
+ no-1-8-v;
#address-cells = <1>;
#size-cells = <0>;
@@ -1590,8 +1591,11 @@
// cd-gpios = <&stmpegpio 16 GPIO_ACTIVE_HIGH>;
cd-gpios = <&gpio TEGRA_GPIO(V, 6) GPIO_ACTIVE_HIGH>;
vmmc-supply = <&vmmc_reg>;
+ post-power-on-delay-ms = <100>;
+ disable-wp;
broken-cd;
keep-power-in-suspend;
+ no-1-8-v;
};
// internal memory
@@ -1599,6 +1603,7 @@
status = "okay";
bus-width = <8>;
non-removable;
+ disable-wp;
keep-power-in-suspend;
};
--
2.22.0

View file

@ -0,0 +1,54 @@
From 5891c9c0ef408034de2c01df1e483d5b0aaf7041 Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Fri, 28 Jun 2019 22:51:59 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: Uncomment SII9234/MHL nodes
This chip should work well with proper Xorg configuration, and it looks like
this speeds up booting time significantly.
Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
---
arch/arm/boot/dts/tegra20-glide.dts | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/arch/arm/boot/dts/tegra20-glide.dts b/arch/arm/boot/dts/tegra20-glide.dts
index ef5145ce16ac..6a85ab96b763 100644
--- a/arch/arm/boot/dts/tegra20-glide.dts
+++ b/arch/arm/boot/dts/tegra20-glide.dts
@@ -46,7 +46,7 @@
nvidia,panel = <&panel>;
};
};
-#if 0
+
hdmi@54280000 {
status = "okay";
@@ -63,7 +63,6 @@
};
};
};
-#endif
};
pinmux@70000014 {
@@ -966,7 +965,7 @@
i2c-gpio,delay-us = <5>;
#address-cells = <1>;
#size-cells = <0>;
-#if 0
+
sii9234@39 {
compatible = "sil,sii9234";
reg = <0x39>;
@@ -984,7 +983,6 @@
};
};
};
-#endif
};
i2c@15 {
--
2.22.0

View file

@ -0,0 +1,62 @@
From 2dbda86d5f83841ad6904a75ae5a04f1241133fe Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Fri, 28 Jun 2019 22:54:20 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: Fix audio power binding
The LDO definition in wm8994 node is used for internal LDOs, but not for
powering the chip, so we use the fixed regulator to resolve this.
All regulators of wm8994 are defined to suppress messages in dmesg.
Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
---
arch/arm/boot/dts/tegra20-glide.dts | 23 +++++++++++++++++++++--
1 file changed, 21 insertions(+), 2 deletions(-)
diff --git a/arch/arm/boot/dts/tegra20-glide.dts b/arch/arm/boot/dts/tegra20-glide.dts
index 6a85ab96b763..74edc637f4d1 100644
--- a/arch/arm/boot/dts/tegra20-glide.dts
+++ b/arch/arm/boot/dts/tegra20-glide.dts
@@ -908,12 +908,21 @@
compatible = "wlf,wm8994";
reg = <0x1a>;
+ DBVDD-supply = <&wlf_ldo>;
+ DCVDD-supply = <&wlf_ldo>;
+ AVDD1-supply = <&wlf_ldo>;
+ AVDD2-supply = <&wlf_ldo>;
+ CPVDD-supply = <&wlf_ldo>;
+ SPKVDD1-supply = <&wlf_ldo>;
+ SPKVDD2-supply = <&wlf_ldo>;
+
gpio-controller;
#gpio-cells = <2>;
- wlf,ldo1ena = <&gpio TEGRA_GPIO(X, 5) GPIO_ACTIVE_HIGH>;
- wlf,gpio-cfg = <0xA101 0 0 0 0 0 0 0 0 0 0>;
+ /* Probably doesn't make sense because typoed in driver */
+ wlf,ldoena-always-driven;
+ wlf,gpio-cfg = <0xA101 0 0 0 0 0 0 0 0 0 0>;
};
};
@@ -1798,6 +1807,16 @@
gpio = <&gpio TEGRA_GPIO(R, 0) GPIO_ACTIVE_HIGH>;
enable-active-high;
};
+
+ wlf_ldo: regulator@9 {
+ compatible = "regulator-fixed";
+ reg = <9>;
+ regulator-name = "wlf-wm8994-ldo";
+ gpio = <&gpio TEGRA_GPIO(X, 5) GPIO_ACTIVE_HIGH>;
+ regulator-enable-ramp-delay = <125000>;
+ regulator-boot-on;
+ enable-active-high;
+ };
};
sound {
--
2.22.0

View file

@ -0,0 +1,52 @@
From de32110f32933b2eb0fc2dbe23951a7771b0941f Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Sat, 29 Jun 2019 15:30:57 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: Set up VSENSOR regulator
This is not configured in downstream kernel, but it was identified that
disabling this regulator makes these sensors not working (note: kxtf9
included).
Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
---
arch/arm/boot/dts/tegra20-glide.dts | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/arch/arm/boot/dts/tegra20-glide.dts b/arch/arm/boot/dts/tegra20-glide.dts
index 74edc637f4d1..c3698603ee69 100644
--- a/arch/arm/boot/dts/tegra20-glide.dts
+++ b/arch/arm/boot/dts/tegra20-glide.dts
@@ -512,6 +512,8 @@
mount-matrix = "0", "1", "0",
"-1", "0", "0",
"0", "0", "-1";
+ vdd-supply = <&vsensor>;
+ vlogic-supply = <&vsensor>;
i2c-gate {
#address-cells = <1>;
@@ -729,12 +731,10 @@
regulator-max-microvolt = <3300000>;
};
- ldo10 {
+ vsensor: ldo10 {
regulator-name = "nvvdd_ldo10,vsensor_1v8";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
- regulator-always-on;
- regulator-boot-on;
};
ldo11 {
@@ -893,6 +893,7 @@
compatible = "asahi-kasei,ak8975";
reg = <0xc>;
gpios = <&gpio TEGRA_GPIO(K, 4) GPIO_ACTIVE_HIGH>;
+ vdd-supply = <&vsensor>;
};
};
--
2.22.0

View file

@ -0,0 +1,93 @@
From a9b327e26842789cd17d259b5424d2c0486096b9 Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Sun, 14 Jul 2019 19:06:48 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: Lower GPIO I2C frequency
Defaults used by downstream kernel are very high. This should resolve
communication issues and improve stability. Values are set according to
the comments near I2C structs in original kernel.
Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
---
arch/arm/boot/dts/tegra20-glide.dts | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/arch/arm/boot/dts/tegra20-glide.dts b/arch/arm/boot/dts/tegra20-glide.dts
index c3698603ee69..013f46d159a1 100644
--- a/arch/arm/boot/dts/tegra20-glide.dts
+++ b/arch/arm/boot/dts/tegra20-glide.dts
@@ -849,7 +849,7 @@
compatible = "i2c-gpio";
sda-gpios = <&gpio TEGRA_GPIO(O, 0) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
scl-gpios = <&gpio TEGRA_GPIO(O, 7) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
- i2c-gpio,delay-us = <1>;
+ i2c-gpio,delay-us = <5>;
#address-cells = <1>;
#size-cells = <0>;
@@ -901,7 +901,7 @@
compatible = "i2c-gpio";
sda-gpios = <&gpio TEGRA_GPIO(G, 3) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
scl-gpios = <&gpio TEGRA_GPIO(I, 0) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
- i2c-gpio,delay-us = <1>;
+ i2c-gpio,delay-us = <5>;
#address-cells = <1>;
#size-cells = <0>;
@@ -947,7 +947,7 @@
compatible = "i2c-gpio";
sda-gpios = <&gpio TEGRA_GPIO(BB, 4) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
scl-gpios = <&gpio TEGRA_GPIO(BB, 1) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
- i2c-gpio,delay-us = <1>;
+ i2c-gpio,delay-us = <5>;
#address-cells = <1>;
#size-cells = <0>;
@@ -999,7 +999,7 @@
compatible = "i2c-gpio";
sda-gpios = <&gpio TEGRA_GPIO(Y, 3) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
scl-gpios = <&gpio TEGRA_GPIO(Y, 1) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
- i2c-gpio,delay-us = <1>;
+ i2c-gpio,delay-us = <5>;
#address-cells = <1>;
#size-cells = <0>;
interrupt-parent = <&gpio>;
@@ -1019,7 +1019,7 @@
compatible = "i2c-gpio";
sda-gpios = <&gpio TEGRA_GPIO(L, 7) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
scl-gpios = <&gpio TEGRA_GPIO(L, 6) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
- i2c-gpio,delay-us = <1>;
+ i2c-gpio,delay-us = <5>;
#address-cells = <1>;
#size-cells = <0>;
@@ -1071,7 +1071,7 @@
compatible = "i2c-gpio";
sda-gpios = <&gpio TEGRA_GPIO(Z, 3) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
scl-gpios = <&gpio TEGRA_GPIO(C, 6) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
- i2c-gpio,delay-us = <1>;
+ i2c-gpio,delay-us = <5>;
#address-cells = <1>;
#size-cells = <0>;
@@ -1102,7 +1102,7 @@
compatible = "i2c-gpio";
sda-gpios = <&gpio TEGRA_GPIO(T, 6) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
scl-gpios = <&gpio TEGRA_GPIO(T, 5) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
- i2c-gpio,delay-us = <1>;
+ i2c-gpio,delay-us = <5>;
#address-cells = <1>;
#size-cells = <0>;
@@ -1120,7 +1120,7 @@
compatible = "i2c-gpio";
sda-gpios = <&gpio TEGRA_GPIO(X, 2) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
scl-gpios = <&gpio TEGRA_GPIO(X, 0) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
- i2c-gpio,delay-us = <1>;
+ i2c-gpio,delay-us = <5>;
#address-cells = <1>;
#size-cells = <0>;
--
2.22.0

View file

@ -0,0 +1,459 @@
From c96dc7817d36eedb85d8ac3b8775e4d9803f8467 Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Sun, 14 Jul 2019 20:22:44 +0300
Subject: [PATCH] ASoC: tegra_wm8994: New driver based on WM8903
This fully routed driver resolves issues with suspend/resume state not being
correctly restored. It also provides headphone detection and internal/external
mic switching (however, mic detection is probably broken).
Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
---
sound/soc/tegra/tegra_wm8994.c | 295 +++++++++++++++++++++------------
1 file changed, 188 insertions(+), 107 deletions(-)
diff --git a/sound/soc/tegra/tegra_wm8994.c b/sound/soc/tegra/tegra_wm8994.c
index 87cb36df3bcf..5e59b3b34f72 100755
--- a/sound/soc/tegra/tegra_wm8994.c
+++ b/sound/soc/tegra/tegra_wm8994.c
@@ -1,8 +1,10 @@
/*
* tegra_wm8994.c - Tegra machine ASoC driver for boards using WM8994 codec.
*
+ * Author: Sergey Larin <cerg2010cerg2010@mail.ru>
+ * Based on driver for wm8994 by:
* Author: Stephen Warren <swarren@nvidia.com>
- * Copyright (C) 2010-2011 - NVIDIA, Inc.
+ * Copyright (C) 2010-2012 - NVIDIA, Inc.
*
* Based on code copyright/by:
*
@@ -28,29 +30,29 @@
*
*/
-#include <asm/mach-types.h>
-
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
#include <linux/gpio.h>
-#include <linux/of.h>
+#include <linux/of_gpio.h>
#include <sound/core.h>
+#include <sound/jack.h>
#include <sound/pcm.h>
#include <sound/pcm_params.h>
#include <sound/soc.h>
-#include "tegra_pcm.h"
-#include "tegra_asoc_utils.h"
+#include "../codecs/wm8994.h"
-#ifdef CONFIG_ARCH_TEGRA_2x_SOC
-#include "tegra20_das.h"
-#endif
+#include "tegra_asoc_utils.h"
#define DRV_NAME "tegra-snd-wm8994"
struct tegra_wm8994 {
+ int gpio_hp_det;
+ int gpio_ear_sel;
+ int gpio_int_mic_en;
+ int gpio_ext_mic_en;
struct tegra_asoc_utils_data util_data;
};
@@ -59,10 +61,9 @@ static int tegra_wm8994_hw_params(struct snd_pcm_substream *substream,
{
struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_dai *codec_dai = rtd->codec_dai;
- struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
struct snd_soc_card *card = rtd->card;
struct tegra_wm8994 *machine = snd_soc_card_get_drvdata(card);
- int srate, mclk, i2s_daifmt;
+ int srate, mclk;
int err;
srate = params_rate(params);
@@ -82,104 +83,152 @@ static int tegra_wm8994_hw_params(struct snd_pcm_substream *substream,
err = tegra_asoc_utils_set_rate(&machine->util_data, srate, mclk);
if (err < 0) {
- if (!(machine->util_data.set_mclk % mclk))
- mclk = machine->util_data.set_mclk;
- else {
- dev_err(card->dev, "Can't configure clocks\n");
- return err;
- }
- }
-
- i2s_daifmt = SND_SOC_DAIFMT_NB_NF |
- SND_SOC_DAIFMT_CBS_CFS;
-
- /* Use DSP mode for mono on Tegra20 */
- // if ((params_channels(params) != 2) &&
- // (machine_is_ventana() || machine_is_harmony() ||
- // machine_is_kaen() || machine_is_aebl()))
- // i2s_daifmt |= SND_SOC_DAIFMT_DSP_A;
- // else
- i2s_daifmt |= SND_SOC_DAIFMT_I2S;
-
- err = snd_soc_dai_set_fmt(codec_dai, i2s_daifmt);
- if (err < 0) {
- dev_err(card->dev, "codec_dai fmt not set\n");
+ dev_err(card->dev, "Can't configure clocks\n");
return err;
}
- err = snd_soc_dai_set_fmt(cpu_dai, i2s_daifmt);
- if (err < 0) {
- dev_err(card->dev, "cpu_dai fmt not set\n");
- return err;
- }
- /* Need to check clk id */
- err = snd_soc_dai_set_sysclk(codec_dai, 1, mclk,
+ err = snd_soc_dai_set_sysclk(codec_dai, WM8994_SYSCLK_MCLK1, mclk,
SND_SOC_CLOCK_IN);
if (err < 0) {
dev_err(card->dev, "codec_dai clock not set\n");
return err;
}
-#ifdef CONFIG_ARCH_TEGRA_2x_SOC
- err = tegra20_das_connect_dac_to_dap(TEGRA20_DAS_DAP_SEL_DAC1,
- TEGRA20_DAS_DAP_ID_1);
- if (err < 0) {
- dev_err(card->dev, "failed to set dap-dac path\n");
- return err;
- }
-
- err = tegra20_das_connect_dap_to_dac(TEGRA20_DAS_DAP_ID_1,
- TEGRA20_DAS_DAP_SEL_DAC1);
- if (err < 0) {
- dev_err(card->dev, "failed to set dac-dap path\n");
- return err;
- }
-#endif
return 0;
}
-static int tegra_hw_free(struct snd_pcm_substream *substream)
+static const struct snd_soc_ops tegra_wm8994_ops = {
+ .hw_params = tegra_wm8994_hw_params,
+};
+
+static struct snd_soc_jack tegra_wm8994_hp_jack;
+
+static struct snd_soc_jack_pin tegra_wm8994_hp_jack_pins[] = {
+ {
+ .pin = "Headphone Jack",
+ .mask = SND_JACK_HEADPHONE,
+ },
+};
+
+static struct snd_soc_jack_gpio tegra_wm8994_hp_jack_gpio = {
+ .name = "headphone detect",
+ .report = SND_JACK_HEADPHONE,
+ .debounce_time = 150,
+ .invert = 1,
+};
+
+static struct snd_soc_jack tegra_wm8994_mic_jack;
+
+static struct snd_soc_jack_pin tegra_wm8994_mic_jack_pins[] = {
+ {
+ .pin = "Mic Jack",
+ .mask = SND_JACK_MICROPHONE,
+ },
+};
+
+static int tegra_wm8994_event_ext_mic(struct snd_soc_dapm_widget *w,
+ struct snd_kcontrol *k, int event)
{
+ struct snd_soc_dapm_context *dapm = w->dapm;
+ struct snd_soc_card *card = dapm->card;
+ struct tegra_wm8994 *machine = snd_soc_card_get_drvdata(card);
+
+ pr_info("EXT MIC event: %s", SND_SOC_DAPM_EVENT_ON(event) ? "on" : "off");
+
+ if (gpio_is_valid(machine->gpio_ext_mic_en))
+ {
+ gpio_set_value_cansleep(machine->gpio_ext_mic_en,
+ SND_SOC_DAPM_EVENT_ON(event));
+ }
+
+ if (gpio_is_valid(machine->gpio_int_mic_en))
+ {
+ gpio_set_value_cansleep(machine->gpio_int_mic_en,
+ !SND_SOC_DAPM_EVENT_ON(event));
+ }
+
+ /* Internal/external mic switch */
+ if (gpio_is_valid(machine->gpio_ear_sel))
+ {
+ gpio_set_value_cansleep(machine->gpio_ear_sel,
+ SND_SOC_DAPM_EVENT_ON(event));
+ }
+
return 0;
}
-static struct snd_soc_ops tegra_wm8994_ops = {
- .hw_params = tegra_wm8994_hw_params,
- .hw_free = tegra_hw_free,
+static const struct snd_soc_dapm_widget tegra_wm8994_dapm_widgets[] = {
+ SND_SOC_DAPM_SPK("Int Spk", NULL),
+ SND_SOC_DAPM_HP("Headphone Jack", NULL),
+ SND_SOC_DAPM_MIC("Mic Jack", tegra_wm8994_event_ext_mic),
+ SND_SOC_DAPM_SPK("Earpiece Spk", NULL),
+};
+
+static const struct snd_kcontrol_new tegra_wm8994_controls[] = {
+ SOC_DAPM_PIN_SWITCH("Int Spk"),
};
static int tegra_wm8994_init(struct snd_soc_pcm_runtime *rtd)
{
- pr_info("%s\n", __func__);
+ struct snd_soc_dai *codec_dai = rtd->codec_dai;
+ struct snd_soc_component *component = codec_dai->component;
+ struct snd_soc_card *card = rtd->card;
+ struct tegra_wm8994 *machine = snd_soc_card_get_drvdata(card);
+
+ if (gpio_is_valid(machine->gpio_hp_det)) {
+ tegra_wm8994_hp_jack_gpio.gpio = machine->gpio_hp_det;
+ snd_soc_card_jack_new(rtd->card, "Headphone Jack",
+ SND_JACK_HEADPHONE, &tegra_wm8994_hp_jack,
+ tegra_wm8994_hp_jack_pins,
+ ARRAY_SIZE(tegra_wm8994_hp_jack_pins));
+ snd_soc_jack_add_gpios(&tegra_wm8994_hp_jack,
+ 1,
+ &tegra_wm8994_hp_jack_gpio);
+ }
+
+ snd_soc_card_jack_new(rtd->card, "Mic Jack", SND_JACK_MICROPHONE,
+ &tegra_wm8994_mic_jack,
+ tegra_wm8994_mic_jack_pins,
+ ARRAY_SIZE(tegra_wm8994_mic_jack_pins));
+ wm8994_mic_detect(component, &tegra_wm8994_mic_jack, 1);
+
return 0;
}
static int tegra_wm8994_remove(struct snd_soc_card *card)
{
- pr_info("%s\n", __func__);
+ struct snd_soc_pcm_runtime *rtd =
+ snd_soc_get_pcm_runtime(card, card->dai_link[0].name);
+ struct snd_soc_dai *codec_dai = rtd->codec_dai;
+ struct snd_soc_component *component = codec_dai->component;
+
+ wm8994_mic_detect(component, NULL, 1);
+
return 0;
}
-static struct snd_soc_dai_link tegra_wm8994_dai[] = {
- {
- .name = "WM8994",
- .stream_name = "WM8994 PCM",
- .codec_dai_name = "wm8994-aif1",
- .init = tegra_wm8994_init,
-
- // .codec_name = "WM8994 I2C Codec.8-001b",
- // .platform_name = "tegra-pcm-audio",
- // .cpu_dai_name = "tegra20-i2s.0",
- // .codec_dai_name = "WM8994 PAIFRX",
- .ops = &tegra_wm8994_ops,
- },
+static struct snd_soc_dai_link tegra_wm8994_dai = {
+ .name = "WM8994",
+ .stream_name = "WM8994 PCM",
+ .codec_dai_name = "wm8994-aif1",
+ .init = tegra_wm8994_init,
+ .ops = &tegra_wm8994_ops,
+ .dai_fmt = SND_SOC_DAIFMT_I2S |
+ SND_SOC_DAIFMT_NB_NF |
+ SND_SOC_DAIFMT_CBS_CFS,
};
static struct snd_soc_card snd_soc_tegra_wm8994 = {
.name = "tegra-wm8994",
- .dai_link = tegra_wm8994_dai,
- .num_links = ARRAY_SIZE(tegra_wm8994_dai),
+ .owner = THIS_MODULE,
+ .dai_link = &tegra_wm8994_dai,
+ .num_links = 1,
.remove = tegra_wm8994_remove,
+ .controls = tegra_wm8994_controls,
+ .num_controls = ARRAY_SIZE(tegra_wm8994_controls),
+ .dapm_widgets = tegra_wm8994_dapm_widgets,
+ .num_dapm_widgets = ARRAY_SIZE(tegra_wm8994_dapm_widgets),
+ .fully_routed = true,
};
static int tegra_wm8994_driver_probe(struct platform_device *pdev)
@@ -189,59 +238,95 @@ static int tegra_wm8994_driver_probe(struct platform_device *pdev)
struct tegra_wm8994 *machine;
int ret;
- pr_info("%s\n", __func__);
-
- if (!pdev->dev.platform_data && !pdev->dev.of_node) {
- dev_err(&pdev->dev, "No platform data supplied\n");
- return -EINVAL;
- }
-
machine = devm_kzalloc(&pdev->dev, sizeof(struct tegra_wm8994),
- GFP_KERNEL);
- if (!machine) {
- dev_err(&pdev->dev, "Can't allocate tegra_wm8994 struct\n");
- ret = -ENOMEM;
- goto err;
- }
+ GFP_KERNEL);
+ if (!machine)
+ return -ENOMEM;
card->dev = &pdev->dev;
- platform_set_drvdata(pdev, card);
snd_soc_card_set_drvdata(card, machine);
- // Parse device tree nodes
+ machine->gpio_ear_sel = of_get_named_gpio(np, "nvidia,ear-sel-gpios",
+ 0);
+ if (machine->gpio_ear_sel == -EPROBE_DEFER)
+ return -EPROBE_DEFER;
+ if (gpio_is_valid(machine->gpio_ear_sel)) {
+ ret = devm_gpio_request_one(&pdev->dev, machine->gpio_ear_sel,
+ GPIOF_OUT_INIT_HIGH, "ear_sel");
+ if (ret) {
+ dev_err(card->dev, "cannot get ear_sel gpio\n");
+ return ret;
+ }
+ gpio_set_value_cansleep(machine->gpio_ear_sel, 0);
+ }
- // ...
+ machine->gpio_hp_det = of_get_named_gpio(np, "nvidia,hp-det-gpios", 0);
+ if (machine->gpio_hp_det == -EPROBE_DEFER)
+ return -EPROBE_DEFER;
+
+ machine->gpio_int_mic_en = of_get_named_gpio(np,
+ "nvidia,int-mic-en-gpios", 0);
+ if (machine->gpio_int_mic_en == -EPROBE_DEFER)
+ return -EPROBE_DEFER;
+ if (gpio_is_valid(machine->gpio_int_mic_en)) {
+ /* Disable int mic; enable signal is active-high */
+ ret = devm_gpio_request_one(&pdev->dev,
+ machine->gpio_int_mic_en,
+ GPIOF_OUT_INIT_LOW, "int_mic_en");
+ if (ret) {
+ dev_err(card->dev, "cannot get int_mic_en gpio\n");
+ return ret;
+ }
+ gpio_set_value_cansleep(machine->gpio_int_mic_en, 1);
+ }
+
+ machine->gpio_ext_mic_en = of_get_named_gpio(np,
+ "nvidia,ext-mic-en-gpios", 0);
+ if (machine->gpio_ext_mic_en == -EPROBE_DEFER)
+ return -EPROBE_DEFER;
+ if (gpio_is_valid(machine->gpio_ext_mic_en)) {
+ /* Enable ext mic; enable signal is active-low */
+ ret = devm_gpio_request_one(&pdev->dev,
+ machine->gpio_ext_mic_en,
+ GPIOF_OUT_INIT_LOW, "ext_mic_en");
+ if (ret) {
+ dev_err(card->dev, "cannot get ext_mic_en gpio\n");
+ return ret;
+ }
+ gpio_set_value_cansleep(machine->gpio_ext_mic_en, 0);
+ }
ret = snd_soc_of_parse_card_name(card, "nvidia,model");
if (ret)
goto err;
+ ret = snd_soc_of_parse_audio_routing(card, "nvidia,audio-routing");
+ if (ret)
+ goto err;
- tegra_wm8994_dai[0].codec_of_node = of_parse_phandle(np,
+ tegra_wm8994_dai.codec_of_node = of_parse_phandle(np,
"nvidia,audio-codec", 0);
- if (!tegra_wm8994_dai[0].codec_of_node) {
+ if (!tegra_wm8994_dai.codec_of_node) {
dev_err(&pdev->dev,
"Property 'nvidia,audio-codec' missing or invalid\n");
ret = -EINVAL;
goto err;
}
- tegra_wm8994_dai[0].cpu_of_node = of_parse_phandle(np,
+ tegra_wm8994_dai.cpu_of_node = of_parse_phandle(np,
"nvidia,i2s-controller", 0);
- if (!tegra_wm8994_dai[0].cpu_of_node) {
+ if (!tegra_wm8994_dai.cpu_of_node) {
dev_err(&pdev->dev,
"Property 'nvidia,i2s-controller' missing or invalid\n");
ret = -EINVAL;
goto err;
}
- tegra_wm8994_dai[0].platform_of_node = tegra_wm8994_dai[0].cpu_of_node;
+ tegra_wm8994_dai.platform_of_node = tegra_wm8994_dai.cpu_of_node;
+
ret = tegra_asoc_utils_init(&machine->util_data, &pdev->dev);
- if (ret) {
- dev_err(&pdev->dev, "tegra_asoc_utils_init failed (%d)\n",
- ret);
+ if (ret)
goto err;
- }
ret = snd_soc_register_card(card);
if (ret) {
@@ -250,9 +335,6 @@ static int tegra_wm8994_driver_probe(struct platform_device *pdev)
goto err_fini_utils;
}
- pr_info("%s: probed\n", __func__);
-
-
return 0;
err_fini_utils:
@@ -265,6 +347,7 @@ static int tegra_wm8994_driver_remove(struct platform_device *pdev)
{
struct snd_soc_card *card = platform_get_drvdata(pdev);
struct tegra_wm8994 *machine = snd_soc_card_get_drvdata(card);
+
snd_soc_unregister_card(card);
tegra_asoc_utils_fini(&machine->util_data);
@@ -280,17 +363,15 @@ static const struct of_device_id tegra_wm8994_of_match[] = {
static struct platform_driver tegra_wm8994_driver = {
.driver = {
.name = DRV_NAME,
- .owner = THIS_MODULE,
.pm = &snd_soc_pm_ops,
.of_match_table = tegra_wm8994_of_match,
},
.probe = tegra_wm8994_driver_probe,
.remove = tegra_wm8994_driver_remove,
};
-
module_platform_driver(tegra_wm8994_driver);
-MODULE_AUTHOR("Stephen Warren <swarren@nvidia.com>");
+MODULE_AUTHOR("Sergey Larin <cerg2010cerg2010@mail.ru>");
MODULE_DESCRIPTION("Tegra+WM8994 machine ASoC driver");
MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:" DRV_NAME);
--
2.22.0

View file

@ -0,0 +1,68 @@
From 7e74b78bb09db386fba009554f0bbe60c7c18a5a Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Sun, 14 Jul 2019 20:29:24 +0300
Subject: [PATCH] ARM: dts: tegra20-glide: Bindings for new audio driver
Remove old GPIO LEDs for mic switching and move the power management to
the audio driver. Also specify DAPM routing - modem and bluetooth routes
are not present because they're currently not used.
Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
---
arch/arm/boot/dts/tegra20-glide.dts | 34 ++++++++++++++---------------
1 file changed, 16 insertions(+), 18 deletions(-)
diff --git a/arch/arm/boot/dts/tegra20-glide.dts b/arch/arm/boot/dts/tegra20-glide.dts
index 013f46d159a1..9321a751a000 100644
--- a/arch/arm/boot/dts/tegra20-glide.dts
+++ b/arch/arm/boot/dts/tegra20-glide.dts
@@ -1224,24 +1224,6 @@
linux,default-trigger = "gpio";
default-state = "off";
};
-
- micbias1 {
- label = "MICBIAS1";
- gpios = <&gpio TEGRA_GPIO(X, 6) GPIO_ACTIVE_HIGH>;
- default-state = "on";
- };
-
- micbias2 {
- label = "MICBIAS2";
- gpios = <&gpio TEGRA_GPIO(H, 3) GPIO_ACTIVE_HIGH>;
- default-state = "off";
- };
-
- earsel {
- label = "EAR_SEL";
- gpios = <&gpio TEGRA_GPIO(I, 4) GPIO_ACTIVE_HIGH>;
- default-state = "off";
- };
};
pmc@7000e400 {
@@ -1831,5 +1813,21 @@
<&tegra_car TEGRA20_CLK_PLL_A_OUT0>,
<&tegra_car TEGRA20_CLK_CDEV1>;
clock-names = "pll_a", "pll_a_out0", "mclk";
+
+ nvidia,ear-sel-gpios = <&gpio TEGRA_GPIO(I, 4) GPIO_ACTIVE_HIGH>;
+ nvidia,int-mic-en-gpios = <&gpio TEGRA_GPIO(X, 6) GPIO_ACTIVE_HIGH>;
+ nvidia,ext-mic-en-gpios = <&gpio TEGRA_GPIO(H, 3) GPIO_ACTIVE_HIGH>;
+ nvidia,hp-det-gpios = <&gpio TEGRA_GPIO(L, 3) GPIO_ACTIVE_HIGH>;
+
+ nvidia,audio-routing =
+ "Int Spk", "SPKOUTLP",
+ "Int Spk", "SPKOUTLN",
+ "Headphone Jack", "HPOUT1L",
+ "Headphone Jack", "HPOUT1R",
+ "Earpiece Spk", "HPOUT2P",
+ "Earpiece Spk", "HPOUT2N",
+ "IN1LP", "Mic Jack",
+ "IN1LN", "Mic Jack";
+ /* TODO: routes for modem and, probably, BT SCO */
};
};
--
2.22.0

View file

@ -0,0 +1,51 @@
From 41a364dd10b44827986f6713932b297a79bd4778 Mon Sep 17 00:00:00 2001
From: Sergey Larin <cerg2010cerg2010@mail.ru>
Date: Sun, 14 Jul 2019 22:42:00 +0300
Subject: [PATCH] drm/panel: s6e63m0: Workaround screen corruption on boot
The panel driver gets probed before PMIC, so the regulator_bulk_get() call
fails with EPROBE_DEFER, making the driver to probe later in the boot
process. However, the screen gets corrupted in some time with noise
displayed. To resolve this, reset GPIO is now requested before the
regulator, setting the panel to the reset state.
Signed-off-by: Sergey Larin <cerg2010cerg2010@mail.ru>
---
drivers/gpu/drm/panel/panel-samsung-s6e63m0.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/panel/panel-samsung-s6e63m0.c b/drivers/gpu/drm/panel/panel-samsung-s6e63m0.c
index db2c34adf26d..753906c32fe0 100644
--- a/drivers/gpu/drm/panel/panel-samsung-s6e63m0.c
+++ b/drivers/gpu/drm/panel/panel-samsung-s6e63m0.c
@@ -449,6 +449,13 @@ static int s6e63m0_probe(struct spi_device *spi)
ctx->enabled = false;
ctx->prepared = false;
+ ctx->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH);
+ if (IS_ERR(ctx->reset_gpio)) {
+ DRM_DEV_ERROR(dev, "cannot get reset-gpios %ld\n",
+ PTR_ERR(ctx->reset_gpio));
+ return PTR_ERR(ctx->reset_gpio);
+ }
+
ctx->supplies[0].supply = "vdd3";
ctx->supplies[1].supply = "vci";
ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(ctx->supplies),
@@ -458,13 +465,6 @@ static int s6e63m0_probe(struct spi_device *spi)
return ret;
}
- ctx->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH);
- if (IS_ERR(ctx->reset_gpio)) {
- DRM_DEV_ERROR(dev, "cannot get reset-gpios %ld\n",
- PTR_ERR(ctx->reset_gpio));
- return PTR_ERR(ctx->reset_gpio);
- }
-
spi->bits_per_word = 9;
spi->mode = SPI_MODE_3;
ret = spi_setup(spi);
--
2.22.0

View file

@ -2,8 +2,8 @@
# Kernel config based on: arch/arm/configs/tegra_defconfig
pkgname="linux-samsung-i927"
pkgver=4.20.4
pkgrel=2
pkgver=5.2.1
pkgrel=0
pkgdesc="Samsung Captivate Glide kernel fork"
arch="armv7"
_carch="arm"
@ -21,47 +21,67 @@ HOSTCC="${HOSTCC#${CROSS_COMPILE}}"
_repository="linux"
_config="config-${_flavor}.${arch}"
source="
$pkgname-$pkgver.tar.gz::https://kernel.org/pub/linux/kernel/v4.x/linux-$pkgver.tar.gz
$pkgname-$pkgver.tar.gz::https://kernel.org/pub/linux/kernel/v5.x/linux-$pkgver.tar.gz
$_config
0001-dt-bindings-drm-panel-Add-Samsung-s6e63m0-panel-docu.patch
0002-drm-panel-Add-driver-for-Samsung-S6E63M0-panel.patch
0003-drm-tegra-Hacks-for-S6E63M0.patch
0004-iio-gyro-mpu3050-get-chip-ID-correctly.patch
0005-soc-tegra-fix-build-for-Tegra.patch
0006-mmc-core-Add-a-quirk-for-NVIDIA-Tegra-EMMC.patch
0007-leds-Add-led-class-support-isa1200-vibration-motor.patch
0008-iio-accel-kxcjk-Add-device-tree-support.patch
0009-ARM-dts-tegra20-glide-Samsung-SGH-I927-support.patch
0010-Input-stmpe-keypad-add-STMPE1801-support.patch
0011-Add-tegra_wm8994-driver.patch
0012-HACK-Fix-wm8994-Kconfig.patch
0013-ASoC-tegra_wm8994-cleanup.patch
0014-ARM-dts-tegra20-glide-Device-Tree-changes.patch
0015-ARM-dts-tegra20-glide-add-memory-node-address.patch
0016-ARM-dts-tegra20-glide-comment-out-MHL.patch
0017-ARM-dts-tegra20-glide-fix-duplicate-i2c-bus-address.patch
0018-ARM-dts-tegra20-glide-fix-USB-gadget-mode.patch
0019-ARM-dts-tegra20-glide-change-display-timings.patch
0020-ARM-dts-tegra20-glide-add-intrrupt-binding-for-charg.patch
0021-drm-panel-s6e63m0-disable-rotation.patch
0022-ARM-dts-tegra20-glide-set-panel-reset-GPIO-pin-to-ac.patch
0023-power-supply-max17040-Fix-voltage-reporting.patch
0024-power-supply-max17040-Set-initial-RCOMP-value.patch
0025-drm-panel-s6e63m0-Increase-back-porch.patch
0026-ARM-dts-tegra20-glide-fix-AK8975.patch
0027-Input-mcs_touchkey-Add-parse-DT-function-from-device.patch
0028-input-keyboard-mcs_touchkey-Convert-to-devm_-managed.patch
0029-input-keyboard-mcs_touchkey-add-sentinel-into-array-.patch
0030-TRATS2-dts-exynos4412-m0.dts-Add-mcs-touchkey-node.patch
0031-ARM-dts-tegra20-glide-Add-touchkey-binding.patch
0032-ARM-dts-tegra20-glide-Add-keyboard-backlight-LED.patch
0033-input-keyboard-mcs_touchkey-LED-support.patch
0034-ARM-dts-tegra20-glide-Add-HALL-GPIO-binding.patch
0035-ARM-dts-tegra20-glide-Change-keyboard-keycodes.patch
0036-ARM-dts-tegra20-glide-Fix-UART-bindings.patch
0037-ARM-dts-tegra20-glide-USB-OTG-mode-and-power.patch
0038-ARM-dts-tegra20-glide-Remove-WiFi-host-wake-GPIO.patch
0039-ARM-dts-tegra20-glide-Add-bindings-for-microphone.patch
0004-soc-tegra-fix-build-for-Tegra.patch
0005-mmc-core-Add-a-quirk-for-NVIDIA-Tegra-EMMC.patch
0006-leds-Add-led-class-support-isa1200-vibration-motor.patch
0007-ARM-dts-tegra20-glide-Samsung-SGH-I927-support.patch
0008-Input-stmpe-keypad-add-STMPE1801-support.patch
0009-Add-tegra_wm8994-driver.patch
0010-HACK-Fix-wm8994-Kconfig.patch
0011-ASoC-tegra_wm8994-cleanup.patch
0012-ARM-dts-tegra20-glide-Device-Tree-changes.patch
0013-ARM-dts-tegra20-glide-add-memory-node-address.patch
0014-ARM-dts-tegra20-glide-comment-out-MHL.patch
0015-ARM-dts-tegra20-glide-fix-duplicate-i2c-bus-address.patch
0016-ARM-dts-tegra20-glide-fix-USB-gadget-mode.patch
0017-ARM-dts-tegra20-glide-change-display-timings.patch
0018-ARM-dts-tegra20-glide-add-intrrupt-binding-for-charg.patch
0019-drm-panel-s6e63m0-disable-rotation.patch
0020-ARM-dts-tegra20-glide-set-panel-reset-GPIO-pin-to-ac.patch
0021-power-supply-max17040-Fix-voltage-reporting.patch
0022-power-supply-max17040-Set-initial-RCOMP-value.patch
0023-drm-panel-s6e63m0-Increase-back-porch.patch
0024-ARM-dts-tegra20-glide-fix-AK8975.patch
0025-Input-mcs_touchkey-Add-parse-DT-function-from-device.patch
0026-input-keyboard-mcs_touchkey-Convert-to-devm_-managed.patch
0027-input-keyboard-mcs_touchkey-add-sentinel-into-array-.patch
0028-TRATS2-dts-exynos4412-m0.dts-Add-mcs-touchkey-node.patch
0029-ARM-dts-tegra20-glide-Add-touchkey-binding.patch
0030-ARM-dts-tegra20-glide-Add-keyboard-backlight-LED.patch
0031-input-keyboard-mcs_touchkey-LED-support.patch
0032-ARM-dts-tegra20-glide-Add-HALL-GPIO-binding.patch
0033-ARM-dts-tegra20-glide-Change-keyboard-keycodes.patch
0034-ARM-dts-tegra20-glide-Fix-UART-bindings.patch
0035-ARM-dts-tegra20-glide-USB-OTG-mode-and-power.patch
0036-ARM-dts-tegra20-glide-Remove-WiFi-host-wake-GPIO.patch
0037-ARM-dts-tegra20-glide-Add-bindings-for-microphone.patch
0038-extcon-Add-fsa9480-extcon-driver.patch
0039-ARM-dts-tegra20-glide-Workaround-RTC-bugs.patch
0040-ARM-dts-tegra20-glide-Fixup-GPS-binding.patch
0041-regulator-max8893-add-regulator-driver.patch
0042-ARM-dts-tegra20-glide-Add-cameras-regulators.patch
0043-ARM-dts-tegra20-glide-Disable-BBAT-regualtor.patch
0044-ARM-dts-tegra20-glide-Set-boot-on-property-to-vdd_ar.patch
0045-ARM-dts-tegra20-glide-Fix-STMPE-GPIO-binding.patch
0046-power-supply-Add-regulator-to-max8903-charger-for-VB.patch
0047-ARM-dts-tegra20-glide-Add-binding-for-charger.patch
0048-ARM-dts-tegra20-glide-Add-binding-for-FSA9480.patch
0049-ARM-dts-tegra20-glide-Remove-combined-power-req-prop.patch
0050-ARM-dts-tegra20-glide-Add-EMC-memory-timings.patch
0051-ARM-dts-tegra20-glide-USB-OTG-bindings.patch
0052-ARM-dts-tegra20-glide-Fixup-MMC-bindings.patch
0053-ARM-dts-tegra20-glide-Uncomment-SII9234-MHL-nodes.patch
0054-ARM-dts-tegra20-glide-Fix-audio-power-binding.patch
0055-ARM-dts-tegra20-glide-Set-up-VSENSOR-regulator.patch
0056-ARM-dts-tegra20-glide-Lower-GPIO-I2C-frequency.patch
0057-ASoC-tegra_wm8994-New-driver-based-on-WM8903.patch
0058-ARM-dts-tegra20-glide-Bindings-for-new-audio-driver.patch
0059-drm-panel-s6e63m0-Workaround-screen-corruption-on-bo.patch
"
builddir="$srcdir/${_repository}-${pkgver}"
@ -108,44 +128,64 @@ package() {
INSTALL_MOD_PATH="$pkgdir"
}
sha512sums="5f9eb065932e404091dd9e4afd5a92b6382ddbc81488684c42981cdfe227da9a423356c19ec236ca1a9a7f4bf042cf351aa8b3cd4f7488b0d8b1245d69221a5c linux-samsung-i927-4.20.4.tar.gz
31f3fd4989c4e49bb0933e3c96e978956782f27fdf4842c6f98b62e0b8eaa09c916cb3ab2655c785405e105aaf679437711c07cdd12ce31ddf17e645668b3d85 config-samsung-i927.armv7
7dfb712823f783f9263622fe16a3e65b8ae11c3d0661f17e5f527c2e30ded0f89a38f0de998e4ba12ea89cbae5ddbe8a27c9ce87e8f54344d838f5a5dcff1c9f 0001-dt-bindings-drm-panel-Add-Samsung-s6e63m0-panel-docu.patch
fcf88346c9c7ace5918d7b87acdab346e8f2fd6a189a293db6b5aa879108e535b148827cf001df65742a4e0177fcd8c9cf7ba2ad1ab8e89bdab753ab536fe807 0002-drm-panel-Add-driver-for-Samsung-S6E63M0-panel.patch
29e9510202e0ccdb1be3b05de42c82c65fafaa52a78a252a92d5278293b6d136eef1b182ad58b5375248ceaf5b3513c1c0691902d1ace007576948bf2285748a 0003-drm-tegra-Hacks-for-S6E63M0.patch
3b05c9d840d1ace9769d4ac577ff363458f5fa70a2efd467c5ff140ff7e328a1bdbee988e450deb267c1747158a0c809f7418d9871d3470049ad42d7d800aa6f 0004-iio-gyro-mpu3050-get-chip-ID-correctly.patch
f76ea98539052453ec9937f92de4001c6b676262939fd1938723597d663da72f77f75371f4fa97b10dc9146336a4be315545142de4bfd6ed90af8c89799bd254 0005-soc-tegra-fix-build-for-Tegra.patch
f88ba68f43a53e5a73155bfd73eed060f8ce506eb8238aa73f60e9f03a14325278eea34a82e913992f5045def866003cd576106c06018970b77e67cbe07097d2 0006-mmc-core-Add-a-quirk-for-NVIDIA-Tegra-EMMC.patch
7329673a287a4e6b088b2a8accb20fca80939e1a6762993b38d7b8219c1787df1e72515afaed135957b3501f4dfb53f5d21dc718d4fa73e693ac6b880c203297 0007-leds-Add-led-class-support-isa1200-vibration-motor.patch
f071517e12b195ae8e95784cdd0dcf61766015f25b08b8d86fc928218e46457e706ff4cce6ca04e2b70763d2910f858d32167441df4d3f234ace25add550c897 0008-iio-accel-kxcjk-Add-device-tree-support.patch
2994910eeee9bc5a7049ebc4fd9a0607e233849411c03a71bc1bf83aa68c087293723b5ca9b8468a6865c9cd38a6a158b25176bfb9bed159ca0e2574e21c7fcc 0009-ARM-dts-tegra20-glide-Samsung-SGH-I927-support.patch
b1179f041735d9f3197e77f4cf7588bbe07b1dc11c73798abf9d6f06e4e13b284a9b347ff8d2512592374451e8c6cfabb8e5f36105f95ed913b8b647ef7823cb 0010-Input-stmpe-keypad-add-STMPE1801-support.patch
d5f7b94d14e0ab122d40b2ce6fe56c9fb617ea3060ba35892487c61de5032d068ad582ece0db5dff4d340bb440c0037a905b270841faef980242a72aa8438029 0011-Add-tegra_wm8994-driver.patch
926be3e6a37bfe37b17fc42022445c3354a178716bb460f445fa332b4aae8cfc2c6bf49b28799c01ae2ea3c010cd61c192f89987dd931aeca7708d88a82eaee7 0012-HACK-Fix-wm8994-Kconfig.patch
449da7e1adac68fbf31a01240f10a573ef65b739b1d8f1180bb72321095119a792210b98563e89d7c230f8aa577940261ffca1239f435a64bb1fabf7a7250e2b 0013-ASoC-tegra_wm8994-cleanup.patch
05bd5d1a21eb20c0fb373d3fea6829942f7f7591bb8dd3b37ebe8d544652e1134e69348be6a2c1728fc30abc5a68cb0188595861e2487712e7c49411abb03586 0014-ARM-dts-tegra20-glide-Device-Tree-changes.patch
42c70a41c5fbd989ee2a23f7abf9bc28cb65a6de6764db5ad5fd102b17b5ed69a696e7b3ffc0f24ddafb93985b1e0cbdc16cac42ec6b9aea1c9caa97ccbc225d 0015-ARM-dts-tegra20-glide-add-memory-node-address.patch
2fda20516869817dd13324d89d5ebf4347cb15aa5de5d44a87ddba4402ce4c9b4f913dd7a34911a0783cd221d7b75e3a2b0e50b76811c883f55bf06a047e4af9 0016-ARM-dts-tegra20-glide-comment-out-MHL.patch
9a0000f4b69dce55d542eb9efe3dd568403b1056cccaa0b91db9ebd007091eabd6675ceb59c17b900985776ea6747f421df36b34de52c311bb5bcc530d2eb236 0017-ARM-dts-tegra20-glide-fix-duplicate-i2c-bus-address.patch
898cfe0fb15702f40b236e8ae12ea07db960d61e58d1474abdbbe35bd2cfc87748228e78b6c2f2f3058e78982a64a0986a533eca412d2fc2ef344b806c9ecd41 0018-ARM-dts-tegra20-glide-fix-USB-gadget-mode.patch
dae4e3a9bfe17fb58e568ef4467f2344ebd8cff9614f03ee245bca1aec614c0fceaa1a693e8d3aba4cb29577760bf312b3c4c4fbf6223ef606c79b3c4fe7e702 0019-ARM-dts-tegra20-glide-change-display-timings.patch
3919c2f80a0cf6529f2b469c560c822113e703fa0ee40b35f9fc0a244b0060b6b535960c17ce0ba73f9623aeede809f736345cc4db6ff14f41ff2a11be75b4dd 0020-ARM-dts-tegra20-glide-add-intrrupt-binding-for-charg.patch
2e7a2341734c3164803ec589d81a63c85923482c30a51e3cfed8a11b672b75628b77965e554bffbc53e25ccb696f361b163c52b02d5ca52093be3464ef1510d2 0021-drm-panel-s6e63m0-disable-rotation.patch
898cc2e189a0032b7e87208a7d932e43504fded1642e012e6fb97ba34027e5645740c82ca0afd51e951ede548e6343e3bbd0ccd1defe4c7a9b30d4f90a577987 0022-ARM-dts-tegra20-glide-set-panel-reset-GPIO-pin-to-ac.patch
0db0a631fcbefa3df40de808cf4d9e5c09bff05456e99ccb1d728e29c57798a89dacc7fb3b9d294ece40ae188437f3d2e653a91273b7b056dd759bf9b177480d 0023-power-supply-max17040-Fix-voltage-reporting.patch
a9c2ea83254fdf682835f040a4f7803e189c62362834eafce97618b3e364a753cb91ac55b8eecb2341f01186d743dc544685475fa934244e9fb7bd6a575b092c 0024-power-supply-max17040-Set-initial-RCOMP-value.patch
5171517d32de9df58731bd01d5bcde646a9ea556c6b49840d09a66a95d4ad0c9785e507b314684bb8902d7e073406e3fc198f124baad0c02f21a506cc0298896 0025-drm-panel-s6e63m0-Increase-back-porch.patch
9ba9c82b0eca98d82fed651aac20e95299347bb42115e19d58d0d9af806cf95ff61e027986054aebee8c7e6cdb830453130281f38ae27c68e57fc6bcfcab35af 0026-ARM-dts-tegra20-glide-fix-AK8975.patch
f0822d4adc53b5ba9f1c1f1584785b65c6a830bebdd6f87015d33198764274153f69954ed3329e5300b48d7ddcdc90bce5a24e1cbb29169dcf7915f483d6b730 0027-Input-mcs_touchkey-Add-parse-DT-function-from-device.patch
032013b850cc2dadcb49d5184744fb9b9d8c7860e8cbc9b7250e6bc4a37a22e12bb3a1c871fff325ccd11163aa19073171d2fcce0355d7434ef66af435eb9053 0028-input-keyboard-mcs_touchkey-Convert-to-devm_-managed.patch
ff77927fb87dd283484feccf8c9ef073f42ccebd2192a87c1fe78a9423dd7b3bcc1e3dfdb0999a5500452a42135151c2ed9e77d3c34e0b9b84ca7f4a1dead8d4 0029-input-keyboard-mcs_touchkey-add-sentinel-into-array-.patch
f02cbe2baeb4784eebdc491aa4b12e97ae7fdaf2a5130231b3eb1f562c32e7257cc6eb416c4cd36c6d176741c5e9d98c9b194d255383f6a36ed5ae723896b3c7 0030-TRATS2-dts-exynos4412-m0.dts-Add-mcs-touchkey-node.patch
17841e65cf2e0a8cc2959055f854982bfa1060e5a50c54658a6023919c2c1591acb800c64b779ebb9f2647c5160e05066c82d0fe36345030cdb5074fc9a75541 0031-ARM-dts-tegra20-glide-Add-touchkey-binding.patch
ceae739b569fcc7ce1fb88903bd5a5d2640c5a843a1904beed761f6a26eb515baa5c3f8881b76e4c16b7d264381ee9e9e390d5a524fbd0e9556b32c544703286 0032-ARM-dts-tegra20-glide-Add-keyboard-backlight-LED.patch
815fa2ad4f00f9252a7162924ebb9e21ca535697dd80b50580049549589760ab20d43263d0963877cb21a9ab0018bfed4c01f7989263d88ae5bcd67deeaaa0f3 0033-input-keyboard-mcs_touchkey-LED-support.patch
e0a33d3478fbb9a9041e435996fac6ef0e1c93c435b2dc73f80d1f329d5e0dbdcecf749888a8d4d3d164854288075d4b99f129df3caee7593ca8d2b3d9307d4b 0034-ARM-dts-tegra20-glide-Add-HALL-GPIO-binding.patch
74991393af78bc7cd495eed25ba6f3d75ef05e7ee6be7e2f0085db52eda8838d338721ef7ef7ddfc37bbc55a1462d58dbf74c0494e3fa0248643421e0f0f38cd 0035-ARM-dts-tegra20-glide-Change-keyboard-keycodes.patch
9f88dadbe76eb9694b42bb6ab5031a63e03cee1f3a046036dc255761001d49c852a617b44c14868def7d17602c2f3f7d25e5f66d65232cc9d0b80f05a9e605b4 0036-ARM-dts-tegra20-glide-Fix-UART-bindings.patch
ecf0d3d69e073d8725e31cae8c1ffc6dcd983b6f8ec9c37b40d1cbbcba3f82326cfd2ad89a4e53f272f9bea2b9f06abb1e662e987e52429ef8eb72b9cb3c79ed 0037-ARM-dts-tegra20-glide-USB-OTG-mode-and-power.patch
18d59fcd6e78410e874db04d6f4dce7e427c67cef3821b01488b0b815ad6dfc4d18e420c56385686a19e44dadb33c760824136dcb1938bc5d3a052ca2f515000 0038-ARM-dts-tegra20-glide-Remove-WiFi-host-wake-GPIO.patch
3ebb4b6b495e1b78bb591f47024158041a724004441de30272fe35f65a09703c6259759d3add1a7cd6774d46c09c976ac1607ee6e8018871dc5e4fde3caae21c 0039-ARM-dts-tegra20-glide-Add-bindings-for-microphone.patch"
sha512sums="cfe43b47430039e9b1fee49c6055050fa1f1a1dfc480f85e9fdc381ce44d7109f7fb86e5ff2d47178896da3e42f5b0dc2e44a661933ea38a934586718550611e linux-samsung-i927-5.2.1.tar.gz
1197e089dcd206b9a9a4547314ec0d726da65a3f11889fab3d0528d088aaaca8f7447e78e8704b7cdc6ae908052a043cd2ad2d399178654d6382033373435191 config-samsung-i927.armv7
e69f22d680e13a8d50e5269167e8d7f34306cebf50749b83be584af0ba8e95aee8737946e4cc04aee0f6cdbce3eac4675286a011d860d289871c1533425cd764 0001-dt-bindings-drm-panel-Add-Samsung-s6e63m0-panel-docu.patch
63d16fdc9f214a31dbacc5122c5a428f53af30cd64eb79ee3809a6108ffa76dccb6e70edb99f6ad21b73b84dc948aad6eba2314becfe3a936fc0f2d945eab0c6 0002-drm-panel-Add-driver-for-Samsung-S6E63M0-panel.patch
2f2957bff6762b3bb31291eb77bd72634d4dc77b390bf92e8b04e4f05566eaae405b5892431c2094a153bf53c4886052785eae9b6552e80d349b1547907003cb 0003-drm-tegra-Hacks-for-S6E63M0.patch
df473d00bcef434badc0cb656a03a7fecaa54cb63111024f562a02a3499b881acce051653efd0761787c5a8344b1756d948cdff3b1f0f93ac26a75d64551e035 0004-soc-tegra-fix-build-for-Tegra.patch
84fad38c64e49bf26d23ff720e67e78cc767fa6325f9cc6682b1d06ab331571787be6caf67b4e5a03756a468e490354ee81ad5faada733c9b0cee86e88e5d89f 0005-mmc-core-Add-a-quirk-for-NVIDIA-Tegra-EMMC.patch
99efab40b6ff345fcb5cb23a14b17ce084d7476ac9f0295f71ce7cbb003ad19ace1f4bd8f4775324a035524e1fd2fdfe32dc244cd482543ae7a2a121931dfb76 0006-leds-Add-led-class-support-isa1200-vibration-motor.patch
0cbd9290e508bbe5b90b9f8a26acb9298382b0e2edd947afc736dedec2e52c038ebd1fc2985ad52e6e3529edf4e2c3a60b7530cd1f5eb41e5b36c64936a1c52a 0007-ARM-dts-tegra20-glide-Samsung-SGH-I927-support.patch
fb77c76f628f42167d99c92d89b4a550346b79975e45a6bc1df32a5b2ef093a13a08d4395cdc3fff7821f29e150cce5a2807455d32d300f4b1e14a3c1ea111fd 0008-Input-stmpe-keypad-add-STMPE1801-support.patch
79adccc51552d6a88e087d7c7dd1e9baf6791790b40a2bbc02fa4cdd469fed4b47f408c2197112d59f66db882fbf9efd2939a580ed2585453d53a9dbef891dda 0009-Add-tegra_wm8994-driver.patch
e3fa16e72b22d076a7961b4eeead19e9dfcf26a75f9c3c1c34289b770ece68c0a48b47a245f548fba737a2dad2227fcaf8857debc2a8bf7c6363099ffce859a7 0010-HACK-Fix-wm8994-Kconfig.patch
76788105ae46ab2fe302509eeccd5ce2e00632d6ebca3bcdc17200839016cd3b9ca498a5a502861039e4ef9ee5d7d1d13270e5707329b6faa21388fe00d9b499 0011-ASoC-tegra_wm8994-cleanup.patch
06a1a596a4a85b6c513d03b67002b8e5a58ad2c3bf789850777e10885eb8006619c5bdba5fdd6aacec01883a0bd29fdfe14a8d591282231ad600ecffb6455ef4 0012-ARM-dts-tegra20-glide-Device-Tree-changes.patch
29c24ac202c2cef85ffca654dede5babfca03f46e4e80f32b2dd9342b51943af27b99a37ef083817d3420b96ff7a763e110574eb4d7a097f20055ef6ab3e9225 0013-ARM-dts-tegra20-glide-add-memory-node-address.patch
1928622bb065f8129caced31bd68582207ba7a162892605e9226b1f953b41ea2a546a19337d35960c5a6b077b20b850fa5058319f673e8b740d875425b9456f2 0014-ARM-dts-tegra20-glide-comment-out-MHL.patch
7b8bf94bea2f3d002f626951f4158888b987482b2f7f056bb00bb4bfc5eccbd23bb8ba324f7a2b7c68adae4a43ebe5c4e777a723b02725588098dcc4bca5211b 0015-ARM-dts-tegra20-glide-fix-duplicate-i2c-bus-address.patch
a91fd639069ef0b6905f36b6e61a690c15f050e6beaf13f60e5785c8f2587ae5589f85b247bf4d04ba741b059cffe9bb87bff1e3463aabad40aa0d948c1a720d 0016-ARM-dts-tegra20-glide-fix-USB-gadget-mode.patch
0792f60bbc18caedb79c3a776a28826a72acda524f95db41c576ccdc5e458e9b934cbd8902601cdfe5735fde086a99eca451d454fb705f9e52117cf9db41e3b9 0017-ARM-dts-tegra20-glide-change-display-timings.patch
3ada824e78ea141f344bf83c7e72c8113fa47a66ad9d1f64be6d9d1a54fc7e99e388cb0d266188c2b42bf20e1291fc4744ff5fbc81a8fa71451de29819409ef7 0018-ARM-dts-tegra20-glide-add-intrrupt-binding-for-charg.patch
650a00272e1cf711bb055ea493f025914247a2fa9e2403b03046df8f7519aa3950a2da75e603a7a334ef787d343ebc4e0df37512a7cd80584d15a9ae9b8b30c4 0019-drm-panel-s6e63m0-disable-rotation.patch
e5e1eac8b4ac0ad8b84815ae105106d5889c1f128ca87a23aabe2e620521d6e49ffaa26ccc3e0dcdd04462e45ffd419a183fdcb15ca6c38c6d23b8d9c4a66e42 0020-ARM-dts-tegra20-glide-set-panel-reset-GPIO-pin-to-ac.patch
8b2f13129caf53fb96e2814610b01519972e04dd7844cf6bf86ee0c559134228d50da8c77d2bbd8d1d80300dc9471c7ce742bdd283e154c42e47b33598d912a0 0021-power-supply-max17040-Fix-voltage-reporting.patch
d6f906779a159b6ac1f8cd170d249a967df47c3c03d5275a86ca74124d9a3453472994d21dfd78d46571a3e791550c8abf5e854a1dbd225a2007eea8baef172f 0022-power-supply-max17040-Set-initial-RCOMP-value.patch
0299d7402a12f0cf7e83a21a8670b1c38db23e64d9ffa45d223274c02367317736bd56151056d276158f43b6d4b802b5e3f6bd4262e73cd2984089e116e01105 0023-drm-panel-s6e63m0-Increase-back-porch.patch
01b240d94b0f6d5823b594437836b8fbfd7296204f01abea5ba8f36b8e047259cc6845412856396e542b5f62d9bcdf8832ccc968a8fed5889d5c76fb565d2675 0024-ARM-dts-tegra20-glide-fix-AK8975.patch
134bcb83572eef64718f188dd754c96a8b9011909c1735b84d9c6740f1fa9db7ef3554c3b9135d70aa054c92a85850846ed1092f5bf7641abe9723af359861a7 0025-Input-mcs_touchkey-Add-parse-DT-function-from-device.patch
5b8ceaae7e4305dc740dd78960d3c5279eacc9ba77d1984f9593a666b803e4a69ee8e55b59d5f2dc3adaa2f35d7ad0c4fb804f934db9e469a42b116471ba51d8 0026-input-keyboard-mcs_touchkey-Convert-to-devm_-managed.patch
e6f9650babb47dbab25cfdafb9782c0b1740755ff7d40614d26cd00aeec791c1d27a861587997db7f7664f84ac2feeca876cffa8b47748acdb52ecc95d4411b0 0027-input-keyboard-mcs_touchkey-add-sentinel-into-array-.patch
6ec724ec74c5b434343e9ea9fdb26abca83d44077a2ecc6868374260136d4bbf1a82e13b79a7245b672a58a983429c41fd6aaddd692c4689bfa310d7a8f7bba9 0028-TRATS2-dts-exynos4412-m0.dts-Add-mcs-touchkey-node.patch
115349dcb99893918cfb98be2073d9c42002d194be826c0d141ac2c2d192d787f33c85de09039d8b006a62c9e9f45238837ff844b8a4ecd9437224f028882d60 0029-ARM-dts-tegra20-glide-Add-touchkey-binding.patch
c4a5ad73e005749c21c70829e764e8614b9df8cee0959df2f9157fa5173c3f21c3e94647a84382bf712c0819ab7f662c98c724dcbbe4a991c6f735947bf4e27a 0030-ARM-dts-tegra20-glide-Add-keyboard-backlight-LED.patch
b98956c0ee84d6b4821438d58dd11b75566f5d133964ddcaada7ba12e9e91c01a88c057d0a9d8e42f43f0391b6121b445504f007791b183b21b14cef75d53470 0031-input-keyboard-mcs_touchkey-LED-support.patch
b2ed9499c04c2a2c9d34f85164ed778f072b914628d7ba79323d41fc7c0f908715eb6399768c5169c6d0eaf912361613cd63beae70e82c30b3697f2431b83690 0032-ARM-dts-tegra20-glide-Add-HALL-GPIO-binding.patch
a2a5dc18b28eace66027a5a0a504eefc98b399425899ce7e2970e6c1a701b954d2416ce71c15e547a49e272dfcd6d33770f864cf3435b5aa4f98b2a25417a2a3 0033-ARM-dts-tegra20-glide-Change-keyboard-keycodes.patch
ab057baf5679591de61061ec6b52838d4ec5d39591b3817c57d5af9c1d10eec32b2d81eb325e6423efb0e583f427fedd27a8d3c2f035e5f9057bf42cd63306f2 0034-ARM-dts-tegra20-glide-Fix-UART-bindings.patch
c44f97e0aa5709cd89e00bbe7c5bb4ca2820a1761b9da02a1aebb67d155b36d509d2f21114a8286c0c0117df4b0d49873b957980461c09615c7f2e0d2c1db856 0035-ARM-dts-tegra20-glide-USB-OTG-mode-and-power.patch
61e1a6a801b2830f2bbe2346e7618439d5dbe7deb82d3259534e3180fc3629ecf6f62409cea40b8ae9ea79113e69556a838a543f4dedc81832db69cc528e06db 0036-ARM-dts-tegra20-glide-Remove-WiFi-host-wake-GPIO.patch
ff05cc1bdd00bfb3f06fcd4696ecd95074dc521bdf36fe8e5a0f2cb70e783dfd0a343e8f6ac205ad53fe520c0a4439f464d0c02640fd809503d798afd85b975f 0037-ARM-dts-tegra20-glide-Add-bindings-for-microphone.patch
04975057b05eb6513a5c1c56cc665fd4b37d43957839de789e1ac28a679571746c4cb796795eac7b83b8512589ee2b046fce74a3d270dac78e554366c6984764 0038-extcon-Add-fsa9480-extcon-driver.patch
a2808d1a7980f2d8685ad8b2db5afe15cfa022662da4a37d78096d630e1c927be320458cb828e91e57457057ac79000878f7b04b3cfb1d248d67cc45f48f994d 0039-ARM-dts-tegra20-glide-Workaround-RTC-bugs.patch
d6a137e21fe73c43900cb4908c53197ccbf6e4847aa30e1639719454853e41971420d5ca55235b0aebfe67b0af3e5c410458033153122d2900cb517bb6e38d6d 0040-ARM-dts-tegra20-glide-Fixup-GPS-binding.patch
b83c78dc91a3262c419b1d0a895de18f876c8d32585af0aa1f789a8a76793c5e4a5835728f8f6d20d5838d857d92033e804b41bd7d92608ca940649c87139386 0041-regulator-max8893-add-regulator-driver.patch
c61090815d9c8ac068ba06fc8f8164f3b7eca7e2e7478f84002e6f16dc480f05414acec351ff96890eb6a93d5e3d0dadb82efa8ff04184fcf4406543f371d04b 0042-ARM-dts-tegra20-glide-Add-cameras-regulators.patch
98d66a74d4fd74ce98128bb4ff81ac3ff86dc9c15e999016f7c86a18f2d8c47a032b8e54a8cb8bc5a39652cbf4058a0b1256809246c956be43596a2d4d785ad9 0043-ARM-dts-tegra20-glide-Disable-BBAT-regualtor.patch
03c29a82f7c46a6d2e47c4ff9012a44aee4abdb81d3d16f52016700dd150a81eae866c38f5168280a1397363774647e6623993eaaf940cba03f6088957fedee1 0044-ARM-dts-tegra20-glide-Set-boot-on-property-to-vdd_ar.patch
3e6cfb8075e6a14b9d1b841fe535e1bc2f617692f668348e1e8017017f027c2eb842688db39b525c32305c9001436273999ac6c081a17a90c0d5911df204508f 0045-ARM-dts-tegra20-glide-Fix-STMPE-GPIO-binding.patch
e9e377606771c5e7430f90636675e7344a57129c2270da667340d7230baecf20602f9f560b73b3b400fe40c5fab4974755fbcd32dd6a758b9927917c6dbb75cd 0046-power-supply-Add-regulator-to-max8903-charger-for-VB.patch
c07078576f3de7d8b71f3bc2daaffee646bd34b3e99528fe8321c19353ba8cbbe0e047c38db6bc1651269fc87eb831cb53b37ad828e64d67013344fc2a77767b 0047-ARM-dts-tegra20-glide-Add-binding-for-charger.patch
db62d3f55e98243e5ba5271598dd0f81082f2bb95a1f260c78ebe390a3fad48a96e401155597c00f9d336ad6a3dc9f272e3607939f191900cfc42ec01ea66053 0048-ARM-dts-tegra20-glide-Add-binding-for-FSA9480.patch
d60843e183736b2cc980d0841a28aee3f7b60e808a435bea9c70fd53bd93d1e3dd85cd70f6ae4b85e55204399682106f8f83bcd9d9e0541e6e8fcddc87046e52 0049-ARM-dts-tegra20-glide-Remove-combined-power-req-prop.patch
7a65bea256f2dc9fb3ba79a83c72668a420f94634e6a32af1c96e6f8c672c889ecb786f4e757445cce244161e3377e5737e5c3349f8145e6cd727489342a27cc 0050-ARM-dts-tegra20-glide-Add-EMC-memory-timings.patch
3a466387563e1164d0a5945de8f5c58fedb8e096866e0104ffe3955b42beae2bfe193c59dc37b4e15571a0a3c2bd27932ba91f98e46fd02f6a1d14936fce0553 0051-ARM-dts-tegra20-glide-USB-OTG-bindings.patch
031c3828ec68ad9ee781debf0fbe963e01906cdc5501a0a3a8c96568d54b603be93717d4566b4a20931bd3241d8f3fd4ba11d4e79ad510208f1e34e483f0bdc3 0052-ARM-dts-tegra20-glide-Fixup-MMC-bindings.patch
00de35a696ae8157cfcf6e01969b0d4fc6baa78411de9453cfa7b5604fab7e38b8e8632afa53a9bf6d9881819be0ed68b8025b5d38a22be779a74a7db1a815af 0053-ARM-dts-tegra20-glide-Uncomment-SII9234-MHL-nodes.patch
d2d496363a99ae0f4ca035db529c94f6947888096452792b05ceb4c6062071fc662c187c3253d2d53669eb5fa5618d0d1a299feae66812e70adc31eb0b61d591 0054-ARM-dts-tegra20-glide-Fix-audio-power-binding.patch
e6afa8f6874020c35d17604a358ef3005b37062154967d99d0b01a45fb60cb1831878331388b176009c2e4dc6e427f83d5ef4e5f41153a5da12cc6c51282416c 0055-ARM-dts-tegra20-glide-Set-up-VSENSOR-regulator.patch
19eabc6df1544b96ec2fcd263bc02c1d86cde7377ec44bd825f1d542858b01fd7569d9809bdfe1c3ff141d098f5daa9181f5469539a626a9316792531cf8f465 0056-ARM-dts-tegra20-glide-Lower-GPIO-I2C-frequency.patch
5e51d492a47b8c5e9f7c61afba59b90c341a8d3c4783526b23a26d4486e6ebae180030cbfeecf6a78c724efc2fea87ef7b48cc81e28ebc0b7f7e772bde9faa93 0057-ASoC-tegra_wm8994-New-driver-based-on-WM8903.patch
15cf6ea4a27297ca24bb1c7a01abbde983b9783ce24339b59561c9aef09f3d86c36e183babeb603a20f9ca24cbf3b8274ee9d9d9467aa77450c30eeb4b3262aa 0058-ARM-dts-tegra20-glide-Bindings-for-new-audio-driver.patch
feb09eeed8df63c732d8bd0d394d3be3524f88c77d7a5168d3ba712fe703f9063f63d2f210b600e1efd5a0139d6d4eed898a5b0b07803b1a2c11bc04c96b238d 0059-drm-panel-s6e63m0-Workaround-screen-corruption-on-bo.patch"

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
pkgname=firmware-samsung-i927
pkgver=1
pkgrel=1
pkgver=2
pkgrel=0
pkgdesc="Samsung SGH-i927 Firmware"
url="https://github.com/The-Covenant"
arch="armv7"
@ -8,11 +8,11 @@ license="proprietary"
options="!check"
# Source
_fw_file="bcm4330_sta.bin"
_nvram_file="nvram_net.txt"
_commit="73d33be8ff2323eb51aa7f8c4916e946850e8bfe"
_url_fw="https://github.com/The-Covenant/proprietary_vendor_samsung/raw/$_commit/i927/proprietary/$_fw_file"
_url_nvram="https://github.com/The-Covenant/proprietary_vendor_samsung/raw/$_commit/i927/proprietary/$_nvram_file"
_fw_file="brcmfmac4330-sdio.bin"
_nvram_file="brcmfmac4330-sdio.txt"
_commit="ce33751ae5f0681818780945016fd3f139519af4"
_url_fw="https://gitlab.com/cerg2010cerg2010/i927-firmware/raw/$_commit/$_fw_file"
_url_nvram="https://gitlab.com/cerg2010cerg2010/i927-firmware/raw/$_commit/$_nvram_file"
source=""
source="$source $pkgname-$_commit-$_fw_file::$_url_fw";
@ -24,5 +24,5 @@ package() {
install -Dm644 "$srcdir/$pkgname-$_commit-$_nvram_file" \
"$pkgdir/lib/firmware/postmarketos/brcm/brcmfmac4330-sdio.txt"
}
sha512sums="3ae32e0c27a9143fa07e823c414639387aced9bdc149762806059b9dd3ebd3358675657a3cae25572db4e40e4f682d446aadd87c7d459269fc7d2ccf99a2c449 firmware-samsung-i927-73d33be8ff2323eb51aa7f8c4916e946850e8bfe-bcm4330_sta.bin
1fac44f6c1d312cefc5c5bc2b66be41c877a0be6448359b95e7a966553acbf249b193a531a1d4dbdb1d8ec58dd43215d9f3d6c869374612593eb88a70d1a6d93 firmware-samsung-i927-73d33be8ff2323eb51aa7f8c4916e946850e8bfe-nvram_net.txt"
sha512sums="08e9aa9a223f9d2465d78c7310abce9ca32aef3d656d5dd31dabdf312c4c05d4e7253234d917106e9dcec841d82d08aefafb86226f34bc97eb1990883cfa5b54 firmware-samsung-i927-ce33751ae5f0681818780945016fd3f139519af4-brcmfmac4330-sdio.bin
eecce363252930a6e928d0e458b48abb7f610bda7a8e0f05f2e6e51f688dea22888a47f3e8e5aa552cee4ec01c98449b15675364f95555a269a58c77181bd612 firmware-samsung-i927-ce33751ae5f0681818780945016fd3f139519af4-brcmfmac4330-sdio.txt"