bq-tenshi: new device (MR 4938)
[ci:skip-build]: already built successfully in CI
This commit is contained in:
parent
d9c1035f91
commit
7aa0c329ed
14 changed files with 5247 additions and 0 deletions
|
@ -6,6 +6,7 @@ device/*/*-amlogic-s905*/ @vitali64yt
|
|||
device/*/*-arrow-db410c/ @Minecrell
|
||||
device/*/*-asus-me176c/ @Minecrell
|
||||
device/*/*-bq-paella/ @Minecrell
|
||||
device/*/*-bq-tenshi/ @fossdd
|
||||
device/*/*-google-gru/ @jenneron
|
||||
device/*/*-google-kukui/ @jenneron @binarycraft
|
||||
device/*/*-google-oak/ @jenneron @adamthiede
|
||||
|
|
31
device/testing/device-bq-tenshi/APKBUILD
Normal file
31
device/testing/device-bq-tenshi/APKBUILD
Normal file
|
@ -0,0 +1,31 @@
|
|||
# Maintainer: fossdd <fossdd@pwned.life>
|
||||
# Reference: <https://postmarketos.org/devicepkg>
|
||||
pkgname=device-bq-tenshi
|
||||
pkgdesc="BQ Aquaris U Plus"
|
||||
pkgver=1
|
||||
pkgrel=0
|
||||
url="https://postmarketos.org"
|
||||
license="MIT"
|
||||
arch="armv7"
|
||||
options="!check !archcheck"
|
||||
depends="
|
||||
linux-bq-tenshi
|
||||
mkbootimg
|
||||
postmarketos-base
|
||||
"
|
||||
makedepends="devicepkg-dev"
|
||||
source="
|
||||
deviceinfo
|
||||
"
|
||||
|
||||
build() {
|
||||
devicepkg_build $startdir $pkgname
|
||||
}
|
||||
|
||||
package() {
|
||||
devicepkg_package $startdir $pkgname
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
f6132a554b5aa0d6191ecd32e8eb61abc6473a6281b1fedb42c8f6668a9893b1cdbbc2e410cfdac9b629f70c082e6d65d1e99f11a95b35e4889d00f4fb4b1ad2 deviceinfo
|
||||
"
|
29
device/testing/device-bq-tenshi/deviceinfo
Normal file
29
device/testing/device-bq-tenshi/deviceinfo
Normal file
|
@ -0,0 +1,29 @@
|
|||
# Reference: <https://postmarketos.org/deviceinfo>
|
||||
# Please use double quotes only. You can source this file in shell
|
||||
# scripts.
|
||||
|
||||
deviceinfo_format_version="0"
|
||||
deviceinfo_name="BQ Aquaris U Plus"
|
||||
deviceinfo_manufacturer="BQ"
|
||||
deviceinfo_codename="bq-tenshi"
|
||||
deviceinfo_year="2016"
|
||||
deviceinfo_arch="armv7"
|
||||
|
||||
# Device related
|
||||
deviceinfo_chassis="handset"
|
||||
deviceinfo_keyboard="false"
|
||||
deviceinfo_external_storage="true"
|
||||
|
||||
# Bootloader related
|
||||
deviceinfo_flash_method="fastboot"
|
||||
deviceinfo_kernel_cmdline="console=ttyHSL0,115200,n8 androidboot.console=ttyHSL0 androidboot.hardware=qcom user_debug=30 msm_rtb.filter=0x237 ehci-hcd.park=3 androidboot.bootdevice=7824900.sdhci lpm_levels.sleep_disabled=1 earlycon=msm_hsl_uart,0x78B0000 buildvariant=user buildvariant=eng"
|
||||
deviceinfo_generate_bootimg="true"
|
||||
deviceinfo_bootimg_qcdt="false"
|
||||
deviceinfo_bootimg_dtb_second="false"
|
||||
deviceinfo_flash_pagesize="2048"
|
||||
deviceinfo_header_version="0"
|
||||
deviceinfo_flash_offset_base="0x80000000"
|
||||
deviceinfo_flash_offset_kernel="0x00008000"
|
||||
deviceinfo_flash_offset_ramdisk="0x01000000"
|
||||
deviceinfo_flash_offset_second="0x00f00000"
|
||||
deviceinfo_flash_offset_tags="0x00000100"
|
|
@ -0,0 +1,22 @@
|
|||
diff --git a/drivers/net/ethernet/msm/rndis_ipa_trace.h b/drivers/net/ethernet/msm/rndis_ipa_trace.h
|
||||
index c0fc573..c18046b 100644
|
||||
--- a/drivers/net/ethernet/msm/rndis_ipa_trace.h
|
||||
+++ b/drivers/net/ethernet/msm/rndis_ipa_trace.h
|
||||
@@ -77,5 +77,5 @@ TRACE_EVENT(
|
||||
|
||||
/* This part must be outside protection */
|
||||
#undef TRACE_INCLUDE_PATH
|
||||
-#define TRACE_INCLUDE_PATH .
|
||||
+#define TRACE_INCLUDE_PATH ../../drivers/net/ethernet/msm/
|
||||
#include <trace/define_trace.h>
|
||||
diff --git a/drivers/platform/msm/ipa/ipa_v2/ipa_trace.h b/drivers/platform/msm/ipa/ipa_v2/ipa_trace.h
|
||||
index d70abdf..7f7e452 100644
|
||||
--- a/drivers/platform/msm/ipa/ipa_v2/ipa_trace.h
|
||||
+++ b/drivers/platform/msm/ipa/ipa_v2/ipa_trace.h
|
||||
@@ -131,5 +131,5 @@ TRACE_EVENT(
|
||||
|
||||
/* This part must be outside protection */
|
||||
#undef TRACE_INCLUDE_PATH
|
||||
-#define TRACE_INCLUDE_PATH .
|
||||
+#define TRACE_INCLUDE_PATH ../../drivers/platform/msm/ipa/ipa_v2/
|
||||
#include <trace/define_trace.h>
|
16
device/testing/linux-bq-tenshi/01_prima_gcc6.patch
Normal file
16
device/testing/linux-bq-tenshi/01_prima_gcc6.patch
Normal file
|
@ -0,0 +1,16 @@
|
|||
diff --git a/drivers/staging/prima/CORE/VOSS/src/wlan_nv_template_builtin.c b/drivers/staging/prima/CORE/VOSS/src/wlan_nv_template_builtin.c
|
||||
index 14c6eadf524..e26b697f793 100644
|
||||
--- a/drivers/staging/prima/CORE/VOSS/src/wlan_nv_template_builtin.c
|
||||
+++ b/drivers/staging/prima/CORE/VOSS/src/wlan_nv_template_builtin.c
|
||||
@@ -587,9 +587,8 @@ _NV_TEMPLATE_TABLE NvTablesBuiltIn[/*TABLES_MAX*/][TABLE_ENTRIES_MAX] = {
|
||||
((char *)&(nvDefaults.tables.hwCalValues.calData.psSlpTimeOvrHdxLNA5G) -
|
||||
(char *)&nvDefaults.tables.hwCalValues.calData),"psSlpTimeOvrHdxLNA5G"},
|
||||
{"ed",_ID_U8,SINGULAR,0,0,0,
|
||||
- (((char *)&(nvDefaults.tables.hwCalValues.calData.psSlpTimeOvrHdxLNA5G) +
|
||||
- sizeof(uint16)) - (char *)&nvDefaults.tables.hwCalValues.calData),
|
||||
- "nv_TxBBFSel9MHz"},
|
||||
+ ((char *)&(nvDefaults.tables.hwCalValues.calData.psSlpTimeOvrHdxLNA5G) -
|
||||
+ (char *)&nvDefaults.tables.hwCalValues.calData),"nv_TxBBFSel9MHz"},
|
||||
{"ee",_ID_U8,SINGULAR,0,0,0,
|
||||
((char *)&(nvDefaults.tables.hwCalValues.calData.hwParam2) -
|
||||
(char *)&nvDefaults.tables.hwCalValues.calData),"hwParam2"},
|
|
@ -0,0 +1,11 @@
|
|||
--- a/drivers/staging/prima/CORE/MAC/src/include/utilsApi.h
|
||||
+++ b/drivers/staging/prima/CORE/MAC/src/include/utilsApi.h
|
||||
@@ -705,7 +705,7 @@ halRoundS32(tANI_S32 p)
|
||||
else
|
||||
k = p;
|
||||
|
||||
- return(k);
|
||||
+ return(k);
|
||||
}
|
||||
|
||||
// New functions for endianess conversion
|
58
device/testing/linux-bq-tenshi/03_fix_u_f_header.patch
Normal file
58
device/testing/linux-bq-tenshi/03_fix_u_f_header.patch
Normal file
|
@ -0,0 +1,58 @@
|
|||
diff --git a/drivers/usb/gadget/function/u_f.h b/drivers/usb/gadget/function/u_f.h
|
||||
new file mode 100644
|
||||
index 0000000..1d5f0eb
|
||||
--- /dev/null
|
||||
+++ b/drivers/usb/gadget/function/u_f.h
|
||||
@@ -0,0 +1,52 @@
|
||||
+/*
|
||||
+ * u_f.h
|
||||
+ *
|
||||
+ * Utility definitions for USB functions
|
||||
+ *
|
||||
+ * Copyright (c) 2013 Samsung Electronics Co., Ltd.
|
||||
+ * http://www.samsung.com
|
||||
+ *
|
||||
+ * Author: Andrzej Pietrasiewicz <andrzej.p@samsung.com>
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License version 2 as
|
||||
+ * published by the Free Software Foundation.
|
||||
+ */
|
||||
+
|
||||
+#ifndef __U_F_H__
|
||||
+#define __U_F_H__
|
||||
+
|
||||
+/* Variable Length Array Macros **********************************************/
|
||||
+#define vla_group(groupname) size_t groupname##__next = 0
|
||||
+#define vla_group_size(groupname) groupname##__next
|
||||
+
|
||||
+#define vla_item(groupname, type, name, n) \
|
||||
+ size_t groupname##_##name##__offset = ({ \
|
||||
+ size_t align_mask = __alignof__(type) - 1; \
|
||||
+ size_t offset = (groupname##__next + align_mask) & ~align_mask;\
|
||||
+ size_t size = (n) * sizeof(type); \
|
||||
+ groupname##__next = offset + size; \
|
||||
+ offset; \
|
||||
+ })
|
||||
+
|
||||
+#define vla_item_with_sz(groupname, type, name, n) \
|
||||
+ size_t groupname##_##name##__sz = (n) * sizeof(type); \
|
||||
+ size_t groupname##_##name##__offset = ({ \
|
||||
+ size_t align_mask = __alignof__(type) - 1; \
|
||||
+ size_t offset = (groupname##__next + align_mask) & ~align_mask;\
|
||||
+ size_t size = groupname##_##name##__sz; \
|
||||
+ groupname##__next = offset + size; \
|
||||
+ offset; \
|
||||
+ })
|
||||
+
|
||||
+#define vla_ptr(ptr, groupname, name) \
|
||||
+ ((void *) ((char *)ptr + groupname##_##name##__offset))
|
||||
+
|
||||
+struct usb_ep;
|
||||
+struct usb_request;
|
||||
+
|
||||
+struct usb_request *alloc_ep_req(struct usb_ep *ep, int len, int default_len);
|
||||
+
|
||||
+#endif /* __U_F_H__ */
|
||||
+
|
||||
+
|
590
device/testing/linux-bq-tenshi/04_fix_usb_gadget_function.patch
Normal file
590
device/testing/linux-bq-tenshi/04_fix_usb_gadget_function.patch
Normal file
|
@ -0,0 +1,590 @@
|
|||
diff --git a/drivers/usb/gadget/function/ci13xxx_udc.h b/drivers/usb/gadget/function/ci13xxx_udc.h
|
||||
new file mode 100644
|
||||
index 0000000..7983bfd
|
||||
--- /dev/null
|
||||
+++ b/drivers/usb/gadget/function/ci13xxx_udc.h
|
||||
@@ -0,0 +1,280 @@
|
||||
+/*
|
||||
+ * ci13xxx_udc.h - structures, registers, and macros MIPS USB IP core
|
||||
+ *
|
||||
+ * Copyright (C) 2008 Chipidea - MIPS Technologies, Inc. All rights reserved.
|
||||
+ *
|
||||
+ * Author: David Lopo
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License version 2 as
|
||||
+ * published by the Free Software Foundation.
|
||||
+ *
|
||||
+ * Description: MIPS USB IP core family device controller
|
||||
+ * Structures, registers and logging macros
|
||||
+ */
|
||||
+
|
||||
+#ifndef _CI13XXX_h_
|
||||
+#define _CI13XXX_h_
|
||||
+
|
||||
+/******************************************************************************
|
||||
+ * DEFINE
|
||||
+ *****************************************************************************/
|
||||
+#define CI13XXX_PAGE_SIZE 4096ul /* page size for TD's */
|
||||
+#define ENDPT_MAX (32)
|
||||
+#define CTRL_PAYLOAD_MAX (64)
|
||||
+#define RX (0) /* similar to USB_DIR_OUT but can be used as an index */
|
||||
+#define TX (1) /* similar to USB_DIR_IN but can be used as an index */
|
||||
+
|
||||
+/* UDC private data:
|
||||
+ * 16MSb - Vendor ID | 16 LSb Vendor private data
|
||||
+ */
|
||||
+#define CI13XX_REQ_VENDOR_ID(id) (id & 0xFFFF0000UL)
|
||||
+
|
||||
+#define MSM_ETD_TYPE BIT(1)
|
||||
+#define MSM_EP_PIPE_ID_RESET_VAL 0x1F001F
|
||||
+
|
||||
+/******************************************************************************
|
||||
+ * STRUCTURES
|
||||
+ *****************************************************************************/
|
||||
+/* DMA layout of transfer descriptors */
|
||||
+struct ci13xxx_td {
|
||||
+ /* 0 */
|
||||
+ u32 next;
|
||||
+#define TD_TERMINATE BIT(0)
|
||||
+#define TD_ADDR_MASK (0xFFFFFFEUL << 5)
|
||||
+ /* 1 */
|
||||
+ u32 token;
|
||||
+#define TD_STATUS (0x00FFUL << 0)
|
||||
+#define TD_STATUS_TR_ERR BIT(3)
|
||||
+#define TD_STATUS_DT_ERR BIT(5)
|
||||
+#define TD_STATUS_HALTED BIT(6)
|
||||
+#define TD_STATUS_ACTIVE BIT(7)
|
||||
+#define TD_MULTO (0x0003UL << 10)
|
||||
+#define TD_IOC BIT(15)
|
||||
+#define TD_TOTAL_BYTES (0x7FFFUL << 16)
|
||||
+ /* 2 */
|
||||
+ u32 page[5];
|
||||
+#define TD_CURR_OFFSET (0x0FFFUL << 0)
|
||||
+#define TD_FRAME_NUM (0x07FFUL << 0)
|
||||
+#define TD_RESERVED_MASK (0x0FFFUL << 0)
|
||||
+} __attribute__ ((packed, aligned(4)));
|
||||
+
|
||||
+/* DMA layout of queue heads */
|
||||
+struct ci13xxx_qh {
|
||||
+ /* 0 */
|
||||
+ u32 cap;
|
||||
+#define QH_IOS BIT(15)
|
||||
+#define QH_MAX_PKT (0x07FFUL << 16)
|
||||
+#define QH_ZLT BIT(29)
|
||||
+#define QH_MULT (0x0003UL << 30)
|
||||
+#define QH_MULT_SHIFT 11
|
||||
+ /* 1 */
|
||||
+ u32 curr;
|
||||
+ /* 2 - 8 */
|
||||
+ struct ci13xxx_td td;
|
||||
+ /* 9 */
|
||||
+ u32 RESERVED;
|
||||
+ struct usb_ctrlrequest setup;
|
||||
+} __attribute__ ((packed, aligned(4)));
|
||||
+
|
||||
+/* cache of larger request's original attributes */
|
||||
+struct ci13xxx_multi_req {
|
||||
+ unsigned len;
|
||||
+ unsigned actual;
|
||||
+ void *buf;
|
||||
+};
|
||||
+
|
||||
+/* Extension of usb_request */
|
||||
+struct ci13xxx_req {
|
||||
+ struct usb_request req;
|
||||
+ unsigned map;
|
||||
+ struct list_head queue;
|
||||
+ struct ci13xxx_td *ptr;
|
||||
+ dma_addr_t dma;
|
||||
+ struct ci13xxx_td *zptr;
|
||||
+ dma_addr_t zdma;
|
||||
+ struct ci13xxx_multi_req multi;
|
||||
+};
|
||||
+
|
||||
+/* Extension of usb_ep */
|
||||
+struct ci13xxx_ep {
|
||||
+ struct usb_ep ep;
|
||||
+ const struct usb_endpoint_descriptor *desc;
|
||||
+ u8 dir;
|
||||
+ u8 num;
|
||||
+ u8 type;
|
||||
+ char name[16];
|
||||
+ struct {
|
||||
+ struct list_head queue;
|
||||
+ struct ci13xxx_qh *ptr;
|
||||
+ dma_addr_t dma;
|
||||
+ } qh;
|
||||
+ struct list_head rw_queue;
|
||||
+ int wedge;
|
||||
+
|
||||
+ /* global resources */
|
||||
+ spinlock_t *lock;
|
||||
+ struct device *device;
|
||||
+ struct dma_pool *td_pool;
|
||||
+ struct ci13xxx_td *last_zptr;
|
||||
+ dma_addr_t last_zdma;
|
||||
+ unsigned long dTD_update_fail_count;
|
||||
+ unsigned long dTD_active_re_q_count;
|
||||
+ unsigned long prime_fail_count;
|
||||
+ int prime_timer_count;
|
||||
+ struct timer_list prime_timer;
|
||||
+
|
||||
+ bool multi_req;
|
||||
+};
|
||||
+
|
||||
+struct ci13xxx;
|
||||
+struct ci13xxx_udc_driver {
|
||||
+ const char *name;
|
||||
+ unsigned long flags;
|
||||
+ unsigned int nz_itc;
|
||||
+#define CI13XXX_REGS_SHARED BIT(0)
|
||||
+#define CI13XXX_REQUIRE_TRANSCEIVER BIT(1)
|
||||
+#define CI13XXX_PULLUP_ON_VBUS BIT(2)
|
||||
+#define CI13XXX_DISABLE_STREAMING BIT(3)
|
||||
+#define CI13XXX_ZERO_ITC BIT(4)
|
||||
+#define CI13XXX_ENABLE_AHB2AHB_BYPASS BIT(6)
|
||||
+
|
||||
+#define CI13XXX_CONTROLLER_RESET_EVENT 0
|
||||
+#define CI13XXX_CONTROLLER_CONNECT_EVENT 1
|
||||
+#define CI13XXX_CONTROLLER_SUSPEND_EVENT 2
|
||||
+#define CI13XXX_CONTROLLER_REMOTE_WAKEUP_EVENT 3
|
||||
+#define CI13XXX_CONTROLLER_RESUME_EVENT 4
|
||||
+#define CI13XXX_CONTROLLER_DISCONNECT_EVENT 5
|
||||
+#define CI13XXX_CONTROLLER_UDC_STARTED_EVENT 6
|
||||
+#define CI13XXX_CONTROLLER_ERROR_EVENT 7
|
||||
+
|
||||
+ void (*notify_event)(struct ci13xxx *udc, unsigned event);
|
||||
+ bool (*in_lpm)(struct ci13xxx *udc);
|
||||
+};
|
||||
+
|
||||
+/* CI13XXX UDC descriptor & global resources */
|
||||
+struct ci13xxx {
|
||||
+ spinlock_t *lock; /* ctrl register bank access */
|
||||
+ void __iomem *regs; /* registers address space */
|
||||
+
|
||||
+ struct dma_pool *qh_pool; /* DMA pool for queue heads */
|
||||
+ struct dma_pool *td_pool; /* DMA pool for transfer descs */
|
||||
+ struct usb_request *status; /* ep0 status request */
|
||||
+ void *status_buf;/* GET_STATUS buffer */
|
||||
+
|
||||
+ struct usb_gadget gadget; /* USB slave device */
|
||||
+ struct ci13xxx_ep ci13xxx_ep[ENDPT_MAX]; /* extended endpts */
|
||||
+ u32 ep0_dir; /* ep0 direction */
|
||||
+#define ep0out ci13xxx_ep[0]
|
||||
+#define ep0in ci13xxx_ep[hw_ep_max / 2]
|
||||
+ u8 suspended; /* suspended by the host */
|
||||
+ u8 configured; /* is device configured */
|
||||
+ u8 test_mode; /* the selected test mode */
|
||||
+ bool rw_pending; /* Remote wakeup pending flag */
|
||||
+ struct delayed_work rw_work; /* remote wakeup delayed work */
|
||||
+ struct usb_gadget_driver *driver; /* 3rd party gadget driver */
|
||||
+ struct ci13xxx_udc_driver *udc_driver; /* device controller driver */
|
||||
+ int vbus_active; /* is VBUS active */
|
||||
+ int softconnect; /* is pull-up enable allowed */
|
||||
+ unsigned long dTD_update_fail_count;
|
||||
+ struct usb_phy *transceiver; /* Transceiver struct */
|
||||
+ bool skip_flush; /* skip flushing remaining EP
|
||||
+ upon flush timeout for the
|
||||
+ first EP. */
|
||||
+};
|
||||
+
|
||||
+/******************************************************************************
|
||||
+ * REGISTERS
|
||||
+ *****************************************************************************/
|
||||
+/* register size */
|
||||
+#define REG_BITS (32)
|
||||
+
|
||||
+/* HCCPARAMS */
|
||||
+#define HCCPARAMS_LEN BIT(17)
|
||||
+
|
||||
+/* DCCPARAMS */
|
||||
+#define DCCPARAMS_DEN (0x1F << 0)
|
||||
+#define DCCPARAMS_DC BIT(7)
|
||||
+
|
||||
+/* TESTMODE */
|
||||
+#define TESTMODE_FORCE BIT(0)
|
||||
+
|
||||
+/* AHB_MODE */
|
||||
+#define AHB2AHB_BYPASS BIT(31)
|
||||
+
|
||||
+/* USBCMD */
|
||||
+#define USBCMD_RS BIT(0)
|
||||
+#define USBCMD_RST BIT(1)
|
||||
+#define USBCMD_SUTW BIT(13)
|
||||
+#define USBCMD_ATDTW BIT(14)
|
||||
+
|
||||
+/* USBSTS & USBINTR */
|
||||
+#define USBi_UI BIT(0)
|
||||
+#define USBi_UEI BIT(1)
|
||||
+#define USBi_PCI BIT(2)
|
||||
+#define USBi_URI BIT(6)
|
||||
+#define USBi_SLI BIT(8)
|
||||
+
|
||||
+/* DEVICEADDR */
|
||||
+#define DEVICEADDR_USBADRA BIT(24)
|
||||
+#define DEVICEADDR_USBADR (0x7FUL << 25)
|
||||
+
|
||||
+/* PORTSC */
|
||||
+#define PORTSC_FPR BIT(6)
|
||||
+#define PORTSC_SUSP BIT(7)
|
||||
+#define PORTSC_PR BIT(8)
|
||||
+#define PORTSC_HSP BIT(9)
|
||||
+#define PORTSC_PTC (0x0FUL << 16)
|
||||
+
|
||||
+/* DEVLC */
|
||||
+#define DEVLC_PSPD (0x03UL << 25)
|
||||
+#define DEVLC_PSPD_HS (0x02UL << 25)
|
||||
+
|
||||
+/* USBMODE */
|
||||
+#define USBMODE_CM (0x03UL << 0)
|
||||
+#define USBMODE_CM_IDLE (0x00UL << 0)
|
||||
+#define USBMODE_CM_DEVICE (0x02UL << 0)
|
||||
+#define USBMODE_CM_HOST (0x03UL << 0)
|
||||
+#define USBMODE_SLOM BIT(3)
|
||||
+#define USBMODE_SDIS BIT(4)
|
||||
+#define USBCMD_ITC(n) (n << 16) /* n = 0, 1, 2, 4, 8, 16, 32, 64 */
|
||||
+#define USBCMD_ITC_MASK (0xFF << 16)
|
||||
+
|
||||
+/* ENDPTCTRL */
|
||||
+#define ENDPTCTRL_RXS BIT(0)
|
||||
+#define ENDPTCTRL_RXT (0x03UL << 2)
|
||||
+#define ENDPTCTRL_RXR BIT(6) /* reserved for port 0 */
|
||||
+#define ENDPTCTRL_RXE BIT(7)
|
||||
+#define ENDPTCTRL_TXS BIT(16)
|
||||
+#define ENDPTCTRL_TXT (0x03UL << 18)
|
||||
+#define ENDPTCTRL_TXR BIT(22) /* reserved for port 0 */
|
||||
+#define ENDPTCTRL_TXE BIT(23)
|
||||
+
|
||||
+/******************************************************************************
|
||||
+ * LOGGING
|
||||
+ *****************************************************************************/
|
||||
+#define ci13xxx_printk(level, format, args...) \
|
||||
+do { \
|
||||
+ if (_udc == NULL) \
|
||||
+ printk(level "[%s] " format "\n", __func__, ## args); \
|
||||
+ else \
|
||||
+ dev_printk(level, _udc->gadget.dev.parent, \
|
||||
+ "[%s] " format "\n", __func__, ## args); \
|
||||
+} while (0)
|
||||
+
|
||||
+#ifndef err
|
||||
+#define err(format, args...) ci13xxx_printk(KERN_ERR, format, ## args)
|
||||
+#endif
|
||||
+
|
||||
+#define warn(format, args...) ci13xxx_printk(KERN_WARNING, format, ## args)
|
||||
+#define info(format, args...) ci13xxx_printk(KERN_INFO, format, ## args)
|
||||
+
|
||||
+#ifdef TRACE
|
||||
+#define trace(format, args...) ci13xxx_printk(KERN_DEBUG, format, ## args)
|
||||
+#define dbg_trace(format, args...) dev_dbg(dev, format, ##args)
|
||||
+#else
|
||||
+#define trace(format, args...) do {} while (0)
|
||||
+#define dbg_trace(format, args...) do {} while (0)
|
||||
+#endif
|
||||
+
|
||||
+#endif /* _CI13XXX_h_ */
|
||||
diff --git a/drivers/usb/gadget/function/configfs.h b/drivers/usb/gadget/function/configfs.h
|
||||
new file mode 100644
|
||||
index 0000000..36c468c
|
||||
--- /dev/null
|
||||
+++ b/drivers/usb/gadget/function/configfs.h
|
||||
@@ -0,0 +1,19 @@
|
||||
+#ifndef USB__GADGET__CONFIGFS__H
|
||||
+#define USB__GADGET__CONFIGFS__H
|
||||
+
|
||||
+#include <linux/configfs.h>
|
||||
+
|
||||
+void unregister_gadget_item(struct config_item *item);
|
||||
+
|
||||
+int usb_os_desc_prepare_interf_dir(struct config_group *parent,
|
||||
+ int n_interf,
|
||||
+ struct usb_os_desc **desc,
|
||||
+ char **names,
|
||||
+ struct module *owner);
|
||||
+
|
||||
+static inline struct usb_os_desc *to_usb_os_desc(struct config_item *item)
|
||||
+{
|
||||
+ return container_of(to_config_group(item), struct usb_os_desc, group);
|
||||
+}
|
||||
+
|
||||
+#endif /* USB__GADGET__CONFIGFS__H */
|
||||
diff --git a/drivers/usb/gadget/function/debug.h b/drivers/usb/gadget/function/debug.h
|
||||
new file mode 100644
|
||||
index 0000000..8729aca
|
||||
--- /dev/null
|
||||
+++ b/drivers/usb/gadget/function/debug.h
|
||||
@@ -0,0 +1,55 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2015-2016, The Linux Foundation. All rights reserved.
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License version 2 and
|
||||
+ * only version 2 as published by the Free Software Foundation.
|
||||
+ *
|
||||
+ * This program is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+#ifndef __DEBUG_H_
|
||||
+#define __DEBUG_H_
|
||||
+
|
||||
+#define DBG_MAX_MSG 1024UL
|
||||
+#define DBG_MSG_LEN 80UL
|
||||
+#define TIME_BUF_LEN 17
|
||||
+#define DBG_EVENT_LEN (DBG_MSG_LEN - TIME_BUF_LEN)
|
||||
+
|
||||
+extern unsigned int enable_event_log;
|
||||
+extern void put_timestamp(char *tbuf);
|
||||
+extern void add_event_to_buf(char *tbuf);
|
||||
+extern int debug_debugfs_init(void);
|
||||
+extern void debug_debugfs_exit(void);
|
||||
+
|
||||
+#define LOGLEVEL_NONE 8
|
||||
+#define LOGLEVEL_DEBUG 7
|
||||
+#define LOGLEVEL_INFO 6
|
||||
+#define LOGLEVEL_ERR 3
|
||||
+
|
||||
+#define log_event(log_level, x...) \
|
||||
+do { \
|
||||
+ char buf[DBG_MSG_LEN]; \
|
||||
+ if (log_level == LOGLEVEL_DEBUG) \
|
||||
+ pr_debug(x); \
|
||||
+ else if (log_level == LOGLEVEL_ERR) \
|
||||
+ pr_err(x); \
|
||||
+ else if (log_level == LOGLEVEL_INFO) \
|
||||
+ pr_info(x); \
|
||||
+ if (enable_event_log) { \
|
||||
+ put_timestamp(buf); \
|
||||
+ snprintf(&buf[TIME_BUF_LEN - 1], DBG_EVENT_LEN, x); \
|
||||
+ add_event_to_buf(buf); \
|
||||
+ } \
|
||||
+} while (0)
|
||||
+
|
||||
+#define log_event_none(x, ...) log_event(LOGLEVEL_NONE, x, ##__VA_ARGS__)
|
||||
+#define log_event_dbg(x, ...) log_event(LOGLEVEL_DEBUG, x, ##__VA_ARGS__)
|
||||
+#define log_event_err(x, ...) log_event(LOGLEVEL_ERR, x, ##__VA_ARGS__)
|
||||
+#define log_event_info(x, ...) log_event(LOGLEVEL_INFO, x, ##__VA_ARGS__)
|
||||
+
|
||||
+#endif /* __DEBUG_H_ */
|
||||
diff --git a/drivers/usb/gadget/function/f_ccid.h b/drivers/usb/gadget/function/f_ccid.h
|
||||
new file mode 100644
|
||||
index 0000000..d899044
|
||||
--- /dev/null
|
||||
+++ b/drivers/usb/gadget/function/f_ccid.h
|
||||
@@ -0,0 +1,83 @@
|
||||
+/*
|
||||
+ * Copyright (c) 2011, The Linux Foundation. All rights reserved.
|
||||
+
|
||||
+ * This program is free software; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License version 2 and
|
||||
+ * only version 2 as published by the Free Software Foundation.
|
||||
+
|
||||
+ * This program is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details
|
||||
+ */
|
||||
+
|
||||
+#ifndef __F_CCID_H
|
||||
+#define __F_CCID_H
|
||||
+
|
||||
+#define PROTOCOL_TO 0x01
|
||||
+#define PROTOCOL_T1 0x02
|
||||
+#define ABDATA_SIZE 512
|
||||
+
|
||||
+/* define for dwFeatures for Smart Card Device Class Descriptors */
|
||||
+/* No special characteristics */
|
||||
+#define CCID_FEATURES_NADA 0x00000000
|
||||
+/* Automatic parameter configuration based on ATR data */
|
||||
+#define CCID_FEATURES_AUTO_PCONF 0x00000002
|
||||
+/* Automatic activation of ICC on inserting */
|
||||
+#define CCID_FEATURES_AUTO_ACTIV 0x00000004
|
||||
+/* Automatic ICC voltage selection */
|
||||
+#define CCID_FEATURES_AUTO_VOLT 0x00000008
|
||||
+/* Automatic ICC clock frequency change */
|
||||
+#define CCID_FEATURES_AUTO_CLOCK 0x00000010
|
||||
+/* Automatic baud rate change */
|
||||
+#define CCID_FEATURES_AUTO_BAUD 0x00000020
|
||||
+/*Automatic parameters negotiation made by the CCID */
|
||||
+#define CCID_FEATURES_AUTO_PNEGO 0x00000040
|
||||
+/* Automatic PPS made by the CCID according to the active parameters */
|
||||
+#define CCID_FEATURES_AUTO_PPS 0x00000080
|
||||
+/* CCID can set ICC in clock stop mode */
|
||||
+#define CCID_FEATURES_ICCSTOP 0x00000100
|
||||
+/* NAD value other than 00 accepted (T=1 protocol in use) */
|
||||
+#define CCID_FEATURES_NAD 0x00000200
|
||||
+/* Automatic IFSD exchange as first exchange (T=1 protocol in use) */
|
||||
+#define CCID_FEATURES_AUTO_IFSD 0x00000400
|
||||
+/* TPDU level exchanges with CCID */
|
||||
+#define CCID_FEATURES_EXC_TPDU 0x00010000
|
||||
+/* Short APDU level exchange with CCID */
|
||||
+#define CCID_FEATURES_EXC_SAPDU 0x00020000
|
||||
+/* Short and Extended APDU level exchange with CCID */
|
||||
+#define CCID_FEATURES_EXC_APDU 0x00040000
|
||||
+/* USB Wake up signaling supported on card insertion and removal */
|
||||
+#define CCID_FEATURES_WAKEUP 0x00100000
|
||||
+
|
||||
+#define CCID_NOTIFY_CARD _IOW('C', 1, struct usb_ccid_notification)
|
||||
+#define CCID_NOTIFY_HWERROR _IOW('C', 2, struct usb_ccid_notification)
|
||||
+#define CCID_READ_DTR _IOR('C', 3, int)
|
||||
+
|
||||
+struct usb_ccid_notification {
|
||||
+ unsigned char buf[4];
|
||||
+} __packed;
|
||||
+
|
||||
+struct ccid_bulk_in_header {
|
||||
+ unsigned char bMessageType;
|
||||
+ unsigned long wLength;
|
||||
+ unsigned char bSlot;
|
||||
+ unsigned char bSeq;
|
||||
+ unsigned char bStatus;
|
||||
+ unsigned char bError;
|
||||
+ unsigned char bSpecific;
|
||||
+ unsigned char abData[ABDATA_SIZE];
|
||||
+ unsigned char bSizeToSend;
|
||||
+} __packed;
|
||||
+
|
||||
+struct ccid_bulk_out_header {
|
||||
+ unsigned char bMessageType;
|
||||
+ unsigned long wLength;
|
||||
+ unsigned char bSlot;
|
||||
+ unsigned char bSeq;
|
||||
+ unsigned char bSpecific_0;
|
||||
+ unsigned char bSpecific_1;
|
||||
+ unsigned char bSpecific_2;
|
||||
+ unsigned char APDU[ABDATA_SIZE];
|
||||
+} __packed;
|
||||
+#endif
|
||||
diff --git a/drivers/usb/gadget/function/u_os_desc.h b/drivers/usb/gadget/function/u_os_desc.h
|
||||
new file mode 100644
|
||||
index 0000000..947b7dd
|
||||
--- /dev/null
|
||||
+++ b/drivers/usb/gadget/function/u_os_desc.h
|
||||
@@ -0,0 +1,123 @@
|
||||
+/*
|
||||
+ * u_os_desc.h
|
||||
+ *
|
||||
+ * Utility definitions for "OS Descriptors" support
|
||||
+ *
|
||||
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd.
|
||||
+ * http://www.samsung.com
|
||||
+ *
|
||||
+ * Author: Andrzej Pietrasiewicz <andrzej.p@samsung.com>
|
||||
+ *
|
||||
+ * This program is free software; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License version 2 as
|
||||
+ * published by the Free Software Foundation.
|
||||
+ */
|
||||
+
|
||||
+#ifndef __U_OS_DESC_H__
|
||||
+#define __U_OS_DESC_H__
|
||||
+
|
||||
+#include <asm/unaligned.h>
|
||||
+#include <linux/nls.h>
|
||||
+
|
||||
+#define USB_EXT_PROP_DW_SIZE 0
|
||||
+#define USB_EXT_PROP_DW_PROPERTY_DATA_TYPE 4
|
||||
+#define USB_EXT_PROP_W_PROPERTY_NAME_LENGTH 8
|
||||
+#define USB_EXT_PROP_B_PROPERTY_NAME 10
|
||||
+#define USB_EXT_PROP_DW_PROPERTY_DATA_LENGTH 10
|
||||
+#define USB_EXT_PROP_B_PROPERTY_DATA 14
|
||||
+
|
||||
+#define USB_EXT_PROP_RESERVED 0
|
||||
+#define USB_EXT_PROP_UNICODE 1
|
||||
+#define USB_EXT_PROP_UNICODE_ENV 2
|
||||
+#define USB_EXT_PROP_BINARY 3
|
||||
+#define USB_EXT_PROP_LE32 4
|
||||
+#define USB_EXT_PROP_BE32 5
|
||||
+#define USB_EXT_PROP_UNICODE_LINK 6
|
||||
+#define USB_EXT_PROP_UNICODE_MULTI 7
|
||||
+
|
||||
+static inline u8 *__usb_ext_prop_ptr(u8 *buf, size_t offset)
|
||||
+{
|
||||
+ return buf + offset;
|
||||
+}
|
||||
+
|
||||
+static inline u8 *usb_ext_prop_size_ptr(u8 *buf)
|
||||
+{
|
||||
+ return __usb_ext_prop_ptr(buf, USB_EXT_PROP_DW_SIZE);
|
||||
+}
|
||||
+
|
||||
+static inline u8 *usb_ext_prop_type_ptr(u8 *buf)
|
||||
+{
|
||||
+ return __usb_ext_prop_ptr(buf, USB_EXT_PROP_DW_PROPERTY_DATA_TYPE);
|
||||
+}
|
||||
+
|
||||
+static inline u8 *usb_ext_prop_name_len_ptr(u8 *buf)
|
||||
+{
|
||||
+ return __usb_ext_prop_ptr(buf, USB_EXT_PROP_W_PROPERTY_NAME_LENGTH);
|
||||
+}
|
||||
+
|
||||
+static inline u8 *usb_ext_prop_name_ptr(u8 *buf)
|
||||
+{
|
||||
+ return __usb_ext_prop_ptr(buf, USB_EXT_PROP_B_PROPERTY_NAME);
|
||||
+}
|
||||
+
|
||||
+static inline u8 *usb_ext_prop_data_len_ptr(u8 *buf, size_t off)
|
||||
+{
|
||||
+ return __usb_ext_prop_ptr(buf,
|
||||
+ USB_EXT_PROP_DW_PROPERTY_DATA_LENGTH + off);
|
||||
+}
|
||||
+
|
||||
+static inline u8 *usb_ext_prop_data_ptr(u8 *buf, size_t off)
|
||||
+{
|
||||
+ return __usb_ext_prop_ptr(buf, USB_EXT_PROP_B_PROPERTY_DATA + off);
|
||||
+}
|
||||
+
|
||||
+static inline void usb_ext_prop_put_size(u8 *buf, int dw_size)
|
||||
+{
|
||||
+ put_unaligned_le32(dw_size, usb_ext_prop_size_ptr(buf));
|
||||
+}
|
||||
+
|
||||
+static inline void usb_ext_prop_put_type(u8 *buf, int type)
|
||||
+{
|
||||
+ put_unaligned_le32(type, usb_ext_prop_type_ptr(buf));
|
||||
+}
|
||||
+
|
||||
+static inline int usb_ext_prop_put_name(u8 *buf, const char *name, int pnl)
|
||||
+{
|
||||
+ int result;
|
||||
+
|
||||
+ put_unaligned_le16(pnl, usb_ext_prop_name_len_ptr(buf));
|
||||
+ result = utf8s_to_utf16s(name, strlen(name), UTF16_LITTLE_ENDIAN,
|
||||
+ (wchar_t *) usb_ext_prop_name_ptr(buf), pnl - 2);
|
||||
+ if (result < 0)
|
||||
+ return result;
|
||||
+
|
||||
+ put_unaligned_le16(0, &buf[USB_EXT_PROP_B_PROPERTY_NAME + pnl - 2]);
|
||||
+
|
||||
+ return pnl;
|
||||
+}
|
||||
+
|
||||
+static inline void usb_ext_prop_put_binary(u8 *buf, int pnl, const u8 *data,
|
||||
+ int data_len)
|
||||
+{
|
||||
+ put_unaligned_le32(data_len, usb_ext_prop_data_len_ptr(buf, pnl));
|
||||
+ memcpy(usb_ext_prop_data_ptr(buf, pnl), data, data_len);
|
||||
+}
|
||||
+
|
||||
+static inline int usb_ext_prop_put_unicode(u8 *buf, int pnl, const char *string,
|
||||
+ int data_len)
|
||||
+{
|
||||
+ int result;
|
||||
+ put_unaligned_le32(data_len, usb_ext_prop_data_len_ptr(buf, pnl));
|
||||
+ result = utf8s_to_utf16s(string, data_len >> 1, UTF16_LITTLE_ENDIAN,
|
||||
+ (wchar_t *) usb_ext_prop_data_ptr(buf, pnl),
|
||||
+ data_len - 2);
|
||||
+ if (result < 0)
|
||||
+ return result;
|
||||
+
|
||||
+ put_unaligned_le16(0,
|
||||
+ &buf[USB_EXT_PROP_B_PROPERTY_DATA + pnl + data_len - 2]);
|
||||
+
|
||||
+ return data_len;
|
||||
+}
|
||||
+
|
||||
+#endif /* __U_OS_DESC_H__ */
|
74
device/testing/linux-bq-tenshi/APKBUILD
Normal file
74
device/testing/linux-bq-tenshi/APKBUILD
Normal file
|
@ -0,0 +1,74 @@
|
|||
# Maintainer: fossdd <fossdd@pwned.life>
|
||||
# Reference: <https://postmarketos.org/vendorkernel>
|
||||
# Kernel config based on: arch/arm/configs/lineage_tenshi_defconfig
|
||||
pkgname=linux-bq-tenshi
|
||||
pkgver=3.18.31
|
||||
pkgrel=0
|
||||
pkgdesc="BQ Aquaris U Plus kernel fork"
|
||||
arch="armv7"
|
||||
_carch="arm"
|
||||
_flavor="bq-tenshi"
|
||||
url="https://kernel.org"
|
||||
license="GPL-2.0-only"
|
||||
options="!strip !check !tracedeps pmb:cross-native"
|
||||
makedepends="
|
||||
bash
|
||||
bc
|
||||
bison
|
||||
devicepkg-dev
|
||||
findutils
|
||||
flex
|
||||
openssl-dev
|
||||
perl
|
||||
"
|
||||
|
||||
# Source
|
||||
_repository="android_kernel_bq_msm8937"
|
||||
_commit="9fe7be06bdbbad2d9cb86d9b135d082b4d28b9ea"
|
||||
_config="config-$_flavor.$arch"
|
||||
source="
|
||||
$pkgname-$_commit.tar.gz::https://github.com/LineageOS/$_repository/archive/$_commit.tar.gz
|
||||
$_config
|
||||
00_fix_rndis_ipa_trace_header_not_found.patch
|
||||
01_prima_gcc6.patch
|
||||
02_prima_misleading_indentation.patch
|
||||
03_fix_u_f_header.patch
|
||||
04_fix_usb_gadget_function.patch
|
||||
fix-assembler-junk.patch
|
||||
gcc7-give-up-on-ilog2-const-optimizations.patch
|
||||
gcc8-fix-put-user.patch
|
||||
gcc10-extern_YYLOC_global_declaration.patch
|
||||
"
|
||||
|
||||
builddir="$srcdir/$_repository-$_commit"
|
||||
_outdir="out"
|
||||
|
||||
prepare() {
|
||||
default_prepare
|
||||
. downstreamkernel_prepare
|
||||
}
|
||||
|
||||
build() {
|
||||
unset LDFLAGS
|
||||
make O="$_outdir" ARCH="$_carch" CC="${CC:-gcc}" \
|
||||
KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-postmarketOS"
|
||||
}
|
||||
|
||||
package() {
|
||||
downstreamkernel_package "$builddir" "$pkgdir" "$_carch" \
|
||||
"$_flavor" "$_outdir"
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
c72365057ddc94d0fd051f0a40f12e6eb0ba31b8fc0ad673c352be0924bc96c643726afac5042fd63eca5d79c4366b706da0addad3aa521867c323a3eec542cd linux-bq-tenshi-9fe7be06bdbbad2d9cb86d9b135d082b4d28b9ea.tar.gz
|
||||
bbf14634f66cadfb454805fefa05ba711df0a0e951dc82a4b2097dd50f24d17bf49ea0e09463d9c06ec9a00d89abbcca0c04bca5e0e5795e1935af657bc795ad config-bq-tenshi.armv7
|
||||
9c549714f03c7a7666e8aa7508a48cfdccab7cf3e97fb59c4df8fa97f75492365926f82c4a677c50780d68d4905504dcccbdd6de6344bd8d4b88b2331933ed46 00_fix_rndis_ipa_trace_header_not_found.patch
|
||||
184875cf13a180d1c4bbe27d8ad24a8d6bd2e36ec35f9c4326809f1c8938ecebf3844c36ef71f4a0af9077e2506a82b2b4383ffd020dd1918aba1689d77b0c01 01_prima_gcc6.patch
|
||||
8cfd728ccf2bf19450dad5d9fe482ba2461dcf43d25440572a1df73b5a2599f4556ddcafd7cd594cb11c8da5767887d4c1585863c8b36335e7b371f7b735307d 02_prima_misleading_indentation.patch
|
||||
b408f157cc025d410b38f5aee9be977e670e1ac3f195f6c3a6681446fa0c3887067d62a4f729cfcd058fab42fca355b0265764dc2d21515f6e023ed025f55d41 03_fix_u_f_header.patch
|
||||
1f23466d1a864f2d2c67ae4250b0c166ecb7755779bbdad6732808a001cc2826cc1d013c2281d2ca1d5abd7d60d13783f0b9f11bb8359971f2b30b911e627220 04_fix_usb_gadget_function.patch
|
||||
341b1f6357d46b54e49afcc66b1d6052a954ec5be9b1cf5da47eed39ea3beff261d94c73d4b83532246b404f57abff1d0fa69db2f4c8cfb15b89f79aaab69bc8 fix-assembler-junk.patch
|
||||
77eba606a71eafb36c32e9c5fe5e77f5e4746caac292440d9fb720763d766074a964db1c12bc76fe583c5d1a5c864219c59941f5e53adad182dbc70bf2bc14a7 gcc7-give-up-on-ilog2-const-optimizations.patch
|
||||
197d40a214ada87fcb2dfc0ae4911704b9a93354b75179cd6b4aadbb627a37ec262cf516921c84a8b1806809b70a7b440cdc8310a4a55fca5d2c0baa988e3967 gcc8-fix-put-user.patch
|
||||
2b48f1bf0e3f70703d2cdafc47d5e615cc7c56c70bec56b2e3297d3fa4a7a1321d649a8679614553dde8fe52ff1051dae38d5990e3744c9ca986d92187dcdbeb gcc10-extern_YYLOC_global_declaration.patch
|
||||
"
|
4187
device/testing/linux-bq-tenshi/config-bq-tenshi.armv7
Normal file
4187
device/testing/linux-bq-tenshi/config-bq-tenshi.armv7
Normal file
File diff suppressed because it is too large
Load diff
60
device/testing/linux-bq-tenshi/fix-assembler-junk.patch
Normal file
60
device/testing/linux-bq-tenshi/fix-assembler-junk.patch
Normal file
|
@ -0,0 +1,60 @@
|
|||
diff -urpN a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S
|
||||
--- a/arch/arm/boot/compressed/head.S 2023-10-26 15:58:29.356796074 +0530
|
||||
+++ b/arch/arm/boot/compressed/head.S 2023-10-26 16:02:57.874378434 +0530
|
||||
@@ -114,7 +114,7 @@
|
||||
#endif
|
||||
.endm
|
||||
|
||||
- .section ".start", #alloc, #execinstr
|
||||
+ .section ".start", "ax"
|
||||
/*
|
||||
* sort out different calling conventions
|
||||
*/
|
||||
diff -urpN a/arch/arm/boot/compressed/piggy.gzip.S b/arch/arm/boot/compressed/piggy.gzip.S
|
||||
--- a/arch/arm/boot/compressed/piggy.gzip.S 2023-10-26 15:58:29.356796074 +0530
|
||||
+++ b/arch/arm/boot/compressed/piggy.gzip.S 2023-10-26 16:02:57.874378434 +0530
|
||||
@@ -1,4 +1,4 @@
|
||||
- .section .piggydata,#alloc
|
||||
+ .section .piggydata,"a"
|
||||
.globl input_data
|
||||
input_data:
|
||||
.incbin "arch/arm/boot/compressed/piggy.gzip"
|
||||
diff -urpN a/arch/arm/boot/compressed/piggy.lzma.S b/arch/arm/boot/compressed/piggy.lzma.S
|
||||
--- a/arch/arm/boot/compressed/piggy.lzma.S 2023-10-26 15:58:29.356796074 +0530
|
||||
+++ b/arch/arm/boot/compressed/piggy.lzma.S 2023-10-26 16:02:57.874378434 +0530
|
||||
@@ -1,4 +1,4 @@
|
||||
- .section .piggydata,#alloc
|
||||
+ .section .piggydata,"a"
|
||||
.globl input_data
|
||||
input_data:
|
||||
.incbin "arch/arm/boot/compressed/piggy.lzma"
|
||||
diff -urpN a/arch/arm/boot/compressed/piggy.lzo.S b/arch/arm/boot/compressed/piggy.lzo.S
|
||||
--- a/arch/arm/boot/compressed/piggy.lzo.S 2023-10-26 15:58:29.356796074 +0530
|
||||
+++ b/arch/arm/boot/compressed/piggy.lzo.S 2023-10-26 16:02:57.874378434 +0530
|
||||
@@ -1,4 +1,4 @@
|
||||
- .section .piggydata,#alloc
|
||||
+ .section .piggydata,"a"
|
||||
.globl input_data
|
||||
input_data:
|
||||
.incbin "arch/arm/boot/compressed/piggy.lzo"
|
||||
diff -urpN a/arch/arm/boot/compressed/piggy.xzkern.S b/arch/arm/boot/compressed/piggy.xzkern.S
|
||||
--- a/arch/arm/boot/compressed/piggy.xzkern.S 2023-10-26 15:58:29.356796074 +0530
|
||||
+++ b/arch/arm/boot/compressed/piggy.xzkern.S 2023-10-26 16:02:57.874378434 +0530
|
||||
@@ -1,4 +1,4 @@
|
||||
- .section .piggydata,#alloc
|
||||
+ .section .piggydata,"a"
|
||||
.globl input_data
|
||||
input_data:
|
||||
.incbin "arch/arm/boot/compressed/piggy.xzkern"
|
||||
diff -urpN a/arch/arm/mm/proc-v7.S b/arch/arm/mm/proc-v7.S
|
||||
--- a/arch/arm/mm/proc-v7.S 2023-10-26 15:58:29.540797102 +0530
|
||||
+++ b/arch/arm/mm/proc-v7.S 2023-10-26 16:02:57.874378434 +0530
|
||||
@@ -383,7 +383,7 @@ __v7_setup_stack:
|
||||
string cpu_elf_name, "v7"
|
||||
.align
|
||||
|
||||
- .section ".proc.info.init", #alloc, #execinstr
|
||||
+ .section ".proc.info.init", "ax"
|
||||
|
||||
/*
|
||||
* Standard v7 proc info content
|
|
@ -0,0 +1,39 @@
|
|||
Based on https://lkml.org/lkml/2020/4/1/1206. In original patch, YYLOC declaration was removed.
|
||||
However, using original patch, which removes yylloc declaration on 3.18.14 kernel version results in 'yylloc not declared' error.
|
||||
See part of the original description below:
|
||||
|
||||
gcc 10 will default to -fno-common, which causes this error at link
|
||||
time:
|
||||
|
||||
(.text+0x0): multiple definition of `yylloc'; dtc-lexer.lex.o (symbol from plugin):(.text+0x0): first defined here
|
||||
|
||||
This is because both dtc-lexer as well as dtc-parser define the same
|
||||
global symbol yyloc. Before with -fcommon those were merged into one
|
||||
defintion. The proper solution would be to to mark this as "extern",
|
||||
|
||||
diff --git a/scripts/dtc/dtc-lexer.l b/scripts/dtc/dtc-lexer.l
|
||||
index 3b41bfca636..9b9c29e6f31 100644
|
||||
--- a/scripts/dtc/dtc-lexer.l
|
||||
+++ b/scripts/dtc/dtc-lexer.l
|
||||
@@ -39,7 +39,7 @@ LINECOMMENT "//".*\n
|
||||
#include "srcpos.h"
|
||||
#include "dtc-parser.tab.h"
|
||||
|
||||
-YYLTYPE yylloc;
|
||||
+extern YYLTYPE yylloc;
|
||||
|
||||
/* CAUTION: this will stop working if we ever use yyless() or yyunput() */
|
||||
#define YY_USER_ACTION \
|
||||
diff --git a/scripts/dtc/dtc-lexer.lex.c_shipped b/scripts/dtc/dtc-lexer.lex.c_shipped
|
||||
index 2d30f41778b..d0eb405cb81 100644
|
||||
--- a/scripts/dtc/dtc-lexer.lex.c_shipped
|
||||
+++ b/scripts/dtc/dtc-lexer.lex.c_shipped
|
||||
@@ -637,7 +637,7 @@ char *yytext;
|
||||
#include "srcpos.h"
|
||||
#include "dtc-parser.tab.h"
|
||||
|
||||
-YYLTYPE yylloc;
|
||||
+extern YYLTYPE yylloc;
|
||||
|
||||
/* CAUTION: this will stop working if we ever use yyless() or yyunput() */
|
||||
#define YY_USER_ACTION \
|
|
@ -0,0 +1,90 @@
|
|||
From a7bfe0a2832e66f3d732e4210b5d53c81cc7a85f Mon Sep 17 00:00:00 2001
|
||||
From: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
Date: Thu, 27 Sep 2018 19:16:56 -0400
|
||||
Subject: [PATCH] give up on gcc ilog2() constant optimizations
|
||||
|
||||
commit 474c90156c8dcc2fa815e6716cc9394d7930cb9c upstream.
|
||||
|
||||
gcc-7 has an "optimization" pass that completely screws up, and
|
||||
generates the code expansion for the (impossible) case of calling
|
||||
ilog2() with a zero constant, even when the code gcc compiles does not
|
||||
actually have a zero constant.
|
||||
|
||||
And we try to generate a compile-time error for anybody doing ilog2() on
|
||||
a constant where that doesn't make sense (be it zero or negative). So
|
||||
now gcc7 will fail the build due to our sanity checking, because it
|
||||
created that constant-zero case that didn't actually exist in the source
|
||||
code.
|
||||
|
||||
There's a whole long discussion on the kernel mailing about how to work
|
||||
around this gcc bug. The gcc people themselevs have discussed their
|
||||
"feature" in
|
||||
|
||||
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72785
|
||||
|
||||
but it's all water under the bridge, because while it looked at one
|
||||
point like it would be solved by the time gcc7 was released, that was
|
||||
not to be.
|
||||
|
||||
So now we have to deal with this compiler braindamage.
|
||||
|
||||
And the only simple approach seems to be to just delete the code that
|
||||
tries to warn about bad uses of ilog2().
|
||||
|
||||
So now "ilog2()" will just return 0 not just for the value 1, but for
|
||||
any non-positive value too.
|
||||
|
||||
It's not like I can recall anybody having ever actually tried to use
|
||||
this function on any invalid value, but maybe the sanity check just
|
||||
meant that such code never made it out in public.
|
||||
|
||||
[js] no tools/include/linux/log2.h copy of that yet
|
||||
|
||||
Reported-by: Laura Abbott <labbott@redhat.com>
|
||||
Cc: John Stultz <john.stultz@linaro.org>,
|
||||
Cc: Thomas Gleixner <tglx@linutronix.de>
|
||||
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
|
||||
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
||||
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
|
||||
---
|
||||
include/linux/log2.h | 13 ++-----------
|
||||
1 file changed, 2 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/include/linux/log2.h b/include/linux/log2.h
|
||||
index fd7ff3d91..f38fae23b 100644
|
||||
--- a/include/linux/log2.h
|
||||
+++ b/include/linux/log2.h
|
||||
@@ -15,12 +15,6 @@
|
||||
#include <linux/types.h>
|
||||
#include <linux/bitops.h>
|
||||
|
||||
-/*
|
||||
- * deal with unrepresentable constant logarithms
|
||||
- */
|
||||
-extern __attribute__((const, noreturn))
|
||||
-int ____ilog2_NaN(void);
|
||||
-
|
||||
/*
|
||||
* non-constant log of base 2 calculators
|
||||
* - the arch may override these in asm/bitops.h if they can be implemented
|
||||
@@ -85,7 +79,7 @@ unsigned long __rounddown_pow_of_two(unsigned long n)
|
||||
#define ilog2(n) \
|
||||
( \
|
||||
__builtin_constant_p(n) ? ( \
|
||||
- (n) < 1 ? ____ilog2_NaN() : \
|
||||
+ (n) < 2 ? 0 : \
|
||||
(n) & (1ULL << 63) ? 63 : \
|
||||
(n) & (1ULL << 62) ? 62 : \
|
||||
(n) & (1ULL << 61) ? 61 : \
|
||||
@@ -148,10 +142,7 @@ unsigned long __rounddown_pow_of_two(unsigned long n)
|
||||
(n) & (1ULL << 4) ? 4 : \
|
||||
(n) & (1ULL << 3) ? 3 : \
|
||||
(n) & (1ULL << 2) ? 2 : \
|
||||
- (n) & (1ULL << 1) ? 1 : \
|
||||
- (n) & (1ULL << 0) ? 0 : \
|
||||
- ____ilog2_NaN() \
|
||||
- ) : \
|
||||
+ 1 ) : \
|
||||
(sizeof(n) <= 4) ? \
|
||||
__ilog2_u32(n) : \
|
||||
__ilog2_u64(n) \
|
39
device/testing/linux-bq-tenshi/gcc8-fix-put-user.patch
Normal file
39
device/testing/linux-bq-tenshi/gcc8-fix-put-user.patch
Normal file
|
@ -0,0 +1,39 @@
|
|||
From 8c8187d41b99acd4f2078d0fff6807e0eeb47407 Mon Sep 17 00:00:00 2001
|
||||
From: Arnd Bergmann <arnd@arndb.de>
|
||||
Date: Thu, 26 Jul 2018 10:13:23 +0200
|
||||
Subject: [PATCH] ARM: fix put_user() for gcc-8
|
||||
|
||||
Building kernels before linux-4.7 with gcc-8 results in many build failures
|
||||
when gcc triggers a check that was meant to catch broken compilers:
|
||||
|
||||
/tmp/ccCGMQmS.s:648: Error: .err encountered
|
||||
|
||||
According to the discussion in the gcc bugzilla, a local "register
|
||||
asm()" variable is still supposed to be the correct way to force an
|
||||
inline assembly to use a particular register, but marking it 'const'
|
||||
lets the compiler do optimizations that break that, i.e the compiler is
|
||||
free to treat the variable as either 'const' or 'register' in that case.
|
||||
|
||||
Upstream commit 9f73bd8bb445 ("ARM: uaccess: remove put_user() code
|
||||
duplication") fixed this problem in linux-4.8 as part of a larger change,
|
||||
but seems a little too big to be backported to 4.4.
|
||||
|
||||
Let's take the simplest fix and change only the one broken line in the
|
||||
same way as newer kernels.
|
||||
|
||||
Suggested-by: Bernd Edlinger <bernd.edlinger@hotmail.de>
|
||||
Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85745
|
||||
Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86673
|
||||
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
arch/arm/include/asm/uaccess.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h
|
||||
index b04850fdeb5..f8ad54b24ac 100644
|
||||
--- a/arch/arm/include/asm/uaccess.h
|
||||
+++ b/arch/arm/include/asm/uaccess.h
|
||||
@@ -162 +162 @@ extern int __put_user_8(void *, unsigned long long);
|
||||
- register const typeof(*(p)) __r2 asm("r2") = (x); \
|
||||
+ register typeof(*(p)) __r2 asm("r2") = (x); \
|
Loading…
Reference in a new issue