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:
parent
40b98f4ca8
commit
5ccbcf999d
68 changed files with 3561 additions and 613 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 [
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
@ -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"
|
||||
|
|
Loading…
Reference in a new issue