Verified Commit deb23368 authored by Alexander Martinz's avatar Alexander Martinz Committed by Caleb Connolly
Browse files

shift-axolotl: new device (MR 2703)



Kernel defconfig is a copy of "axolotl_userdebug_defconfig".

Config changes (which differ from the copy above):
  - ran `pmbootstrap kconfig check shift-axolotl`
  - CONFIG_QCA_CLD_WLAN - m -> y

Change-Id: Ie250ba0d4f7cabf516e4c4fef84a3832321fb069
Signed-off-by: Alexander Martinz's avatarAlexander Martinz <amartinz@shiftphones.com>

[ci:skip-build]
parent 351c2420
Pipeline #415823361 passed with stages
in 1 minute and 56 seconds
# Reference: <https://postmarketos.org/devicepkg>
# Maintainer: Alexander Martinz <amartinz@shiftphones.com>
pkgname=device-shift-axolotl
pkgdesc="SHIFT6mq"
pkgver=0.1
pkgrel=0
url="https://postmarketos.org"
license="MIT"
arch="aarch64"
options="!check !archcheck"
depends="
linux-shift-axolotl
mkbootimg
postmarketos-base
postmarketos-update-kernel
soc-qcom-sdm845
soc-qcom-sdm845-ucm
"
makedepends="devicepkg-dev"
source="deviceinfo"
build() {
devicepkg_build $startdir $pkgname
}
package() {
devicepkg_package $startdir $pkgname
}
sha512sums="
7312a14ef9c99e2452e1161bf0bca03857714eb367aa32d50de5c665ade3dd9e3e488a129b1946ca14f83c56f067f867b7c584497b62800490789982ddebe894 deviceinfo
"
# Reference: <https://postmarketos.org/deviceinfo>
# Please use double quotes only. You can source this file in shell
# scripts.
deviceinfo_format_version="0"
deviceinfo_name="SHIFT6mq"
deviceinfo_manufacturer="SHIFT"
deviceinfo_codename="shift-axolotl"
deviceinfo_year="2020"
deviceinfo_arch="aarch64"
# Device related
deviceinfo_gpu_accelerated="false"
deviceinfo_chassis="handset"
deviceinfo_keyboard="false"
deviceinfo_external_storage="true"
deviceinfo_screen_width="1080"
deviceinfo_screen_height="2160"
# Bootloader related
deviceinfo_flash_method="fastboot"
deviceinfo_kernel_cmdline="console=ttyMSM0,115200n8 earlycon=msm_geni_serial,0xA84000 androidboot.console=ttyMSM0 printk.devkmsg=on androidboot.hardware=qcom androidboot.configfs=true loop.max_part=7 msm_rtb.filter=0x237 ehci-hcd.park=3 service_locator.enable=1 androidboot.memcg=1 cgroup.memory=nokmem androidboot.usbcontroller=a600000.dwc3 swiotlb=2048 androidboot.boot_devices=soc/1d84000.ufshc firmware_class.path=/vendor/firmware_mnt/image"
deviceinfo_generate_bootimg="true"
deviceinfo_bootimg_qcdt="false"
deviceinfo_bootimg_mtk_mkimage="false"
deviceinfo_bootimg_dtb_second="false"
deviceinfo_flash_offset_base="0x00000000"
deviceinfo_flash_offset_kernel="0x00008000"
deviceinfo_flash_offset_ramdisk="0x01000000"
deviceinfo_flash_offset_second="0x00f00000"
deviceinfo_flash_offset_tags="0x00000100"
deviceinfo_flash_pagesize="4096"
deviceinfo_flash_sparse="true"
# Kernel
deviceinfo_append_dtb="false"
# Required for devices using UFS as storage (instead of e.g. eMMC)
deviceinfo_rootfs_image_sector_size="4096"
From 8326dd8f8be2f088098c9d78f83d993fa509c3d9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <michel.daenzer@amd.com>
Date: Thu, 1 Dec 2016 16:37:31 +0900
Subject: [PATCH 1/2] drm: Return -ENOTSUPP when called for KMS cap with a
non-KMS driver
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This is an attempt to make the previous fix a bit more robust going
forward.
v2:
* Only allow DRM_CAP_TIMESTAMP_MONOTONIC with UMS drivers (Daniel
Vetter, Alex Deucher)
* Different logic to keep DRM_CAP_TIMESTAMP_MONOTONIC separate from
the other caps (Daniel Vetter)
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/20161201073731.5716-1-michel@daenzer.net
---
drivers/gpu/drm/drm_ioctl.c | 24 +++++++++++++++---------
1 file changed, 15 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c
index c86f1ea85e81c..211569b2011c2 100644
--- a/drivers/gpu/drm/drm_ioctl.c
+++ b/drivers/gpu/drm/drm_ioctl.c
@@ -230,6 +230,17 @@ static int drm_getcap(struct drm_device *dev, void *data, struct drm_file *file_
struct drm_crtc *crtc;
req->value = 0;
+
+ /* Only one cap makes sense with a UMS driver: */
+ if (req->capability == DRM_CAP_TIMESTAMP_MONOTONIC) {
+ req->value = drm_timestamp_monotonic;
+ return 0;
+ }
+
+ /* Other caps only work with KMS drivers */
+ if (!drm_core_check_feature(dev, DRIVER_MODESET))
+ return -ENOTSUPP;
+
switch (req->capability) {
case DRM_CAP_DUMB_BUFFER:
if (dev->driver->dumb_create)
@@ -248,19 +259,14 @@ static int drm_getcap(struct drm_device *dev, void *data, struct drm_file *file_
req->value |= dev->driver->prime_fd_to_handle ? DRM_PRIME_CAP_IMPORT : 0;
req->value |= dev->driver->prime_handle_to_fd ? DRM_PRIME_CAP_EXPORT : 0;
break;
- case DRM_CAP_TIMESTAMP_MONOTONIC:
- req->value = drm_timestamp_monotonic;
- break;
case DRM_CAP_ASYNC_PAGE_FLIP:
req->value = dev->mode_config.async_page_flip;
break;
case DRM_CAP_PAGE_FLIP_TARGET:
- if (drm_core_check_feature(dev, DRIVER_MODESET)) {
- req->value = 1;
- drm_for_each_crtc(crtc, dev) {
- if (!crtc->funcs->page_flip_target)
- req->value = 0;
- }
+ req->value = 1;
+ drm_for_each_crtc(crtc, dev) {
+ if (!crtc->funcs->page_flip_target)
+ req->value = 0;
}
break;
case DRM_CAP_CURSOR_WIDTH:
--
2.33.1
From 2be2a0584e713bfd992c485ed6f724adfc91d211 Mon Sep 17 00:00:00 2001
From: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
Date: Tue, 4 Apr 2017 17:52:21 +0100
Subject: [PATCH 2/2] drm: Pass CRTC ID in userspace vblank events
With the atomic API, it is possible that a single commit affects
multiple crtcs. If the user requests an event with that commit, one
event will be sent for each CRTC, but it is not possible to distinguish
which crtc an event is for in user space. To solve this, the reserved
field in struct drm_vblank_event is repurposed to include the crtc_id
which the event is for.
The DRM_CAP_CRTC_IN_VBLANK_EVENT is added to allow userspace to query if
the crtc field will be set properly.
[daniels: Rebased, using Maarten's forward-port.]
Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
Signed-off-by: Daniel Stone <daniels@collabora.com>
Cc: Maarten Lankhorst <maarten.lankhorst@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20170404165221.28240-2-daniels@collabora.com
---
drivers/gpu/drm/drm_ioctl.c | 3 +++
drivers/gpu/drm/drm_irq.c | 2 ++
include/uapi/drm/drm.h | 3 ++-
3 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c
index 211569b2011c2..6005bd4fa0436 100644
--- a/drivers/gpu/drm/drm_ioctl.c
+++ b/drivers/gpu/drm/drm_ioctl.c
@@ -284,6 +284,9 @@ static int drm_getcap(struct drm_device *dev, void *data, struct drm_file *file_
case DRM_CAP_ADDFB2_MODIFIERS:
req->value = dev->mode_config.allow_fb_modifiers;
break;
+ case DRM_CAP_CRTC_IN_VBLANK_EVENT:
+ req->value = 1;
+ break;
default:
return -EINVAL;
}
diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c
index 00c815a7c414f..28536aa0a8755 100644
--- a/drivers/gpu/drm/drm_irq.c
+++ b/drivers/gpu/drm/drm_irq.c
@@ -1048,6 +1048,7 @@ void drm_crtc_arm_vblank_event(struct drm_crtc *crtc,
e->pipe = pipe;
e->event.sequence = drm_vblank_count(dev, pipe);
+ e->event.crtc_id = crtc->base.id;
list_add_tail(&e->base.link, &dev->vblank_event_list);
}
EXPORT_SYMBOL(drm_crtc_arm_vblank_event);
@@ -1078,6 +1079,7 @@ void drm_crtc_send_vblank_event(struct drm_crtc *crtc,
now = get_drm_timestamp();
}
e->pipe = pipe;
+ e->event.crtc_id = crtc->base.id;
send_vblank_event(dev, e, seq, &now);
}
EXPORT_SYMBOL(drm_crtc_send_vblank_event);
diff --git a/include/uapi/drm/drm.h b/include/uapi/drm/drm.h
index b2c52843bc702..42d9f64ce416c 100644
--- a/include/uapi/drm/drm.h
+++ b/include/uapi/drm/drm.h
@@ -647,6 +647,7 @@ struct drm_gem_open {
#define DRM_CAP_CURSOR_HEIGHT 0x9
#define DRM_CAP_ADDFB2_MODIFIERS 0x10
#define DRM_CAP_PAGE_FLIP_TARGET 0x11
+#define DRM_CAP_CRTC_IN_VBLANK_EVENT 0x12
/** DRM_IOCTL_GET_CAP ioctl argument type */
struct drm_get_cap {
@@ -851,7 +852,7 @@ struct drm_event_vblank {
__u32 tv_sec;
__u32 tv_usec;
__u32 sequence;
- __u32 reserved;
+ __u32 crtc_id; /* 0 on older kernels that do not support this */
};
/* typedef area */
--
2.33.1
# Reference: <https://postmarketos.org/vendorkernel>
# Kernel config based on: arch/arm64/configs/axolotl_userdebug_defconfig
pkgname=linux-shift-axolotl
pkgver=4.9.290
pkgrel=0
pkgdesc="SHIFT6mq kernel fork"
arch="aarch64"
_carch="arm64"
_flavor="shift-axolotl"
url="https://kernel.org"
license="GPL-2.0-only"
options="!strip !check !tracedeps pmb:cross-native"
makedepends="
bash
bc
bison
clang
devicepkg-dev
flex
openssl-dev
perl
"
# Source
_repository="android_kernel_shift_sdm845"
_commit="d781ca181693dd8d213be7bf31fc719459c32638"
_config="config-$_flavor.$arch"
source="
$pkgname-$_commit.tar.gz::https://github.com/SHIFTPHONES/$_repository/archive/$_commit.tar.gz
$_config
0001-drm-Return-ENOTSUPP-when-called-for-KMS-cap-with-a-n.patch
0002-drm-Pass-CRTC-ID-in-userspace-vblank-events.patch
"
builddir="$srcdir/$_repository-$_commit"
_outdir="out"
prepare() {
default_prepare
. downstreamkernel_prepare
}
build() {
unset LDFLAGS
make O="$_outdir" ARCH="$_carch" CC="clang" HOSTCC="clang" \
KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-postmarketOS"
}
package() {
downstreamkernel_package "$builddir" "$pkgdir" "$_carch" \
"$_flavor" "$_outdir"
}
sha512sums="
388d09ed0179c9869cd4313213b89b293348dd5ac2cd5e05e480cad14423c4a57f6077bdfc5bcfeda839701ce4939e58a13e6444e20baf9ea49a84f96a0b34d3 linux-shift-axolotl-d781ca181693dd8d213be7bf31fc719459c32638.tar.gz
e8f5f24a76270a815b1fcef3a4c5a4e29e16f1e644d9898843827fe415a992f93d07c7ee9e5e08bef5592ac549e942ce249f4dab1d62a6b1bdb348853dc11a98 config-shift-axolotl.aarch64
a9f923ab95880ee8f8b31002328d81c4beb8c48e1027b416e267ae35cd1487b244d776f97a543d2a9f7b2cb51873e8b93edb725cca664fe5eded7df48791d579 0001-drm-Return-ENOTSUPP-when-called-for-KMS-cap-with-a-n.patch
dfd96f4aea9a5b6bf4c2c414e0aa2ac3511c3b4691290d68ddc940a2ef4cf0b07e033986694124b9aa797a6742999c3ce7fcb000532d90ef5d182b7c75c4e85c 0002-drm-Pass-CRTC-ID-in-userspace-vblank-events.patch
"
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment