From 64e41c96c4fc0a91f602bd77db0f22eefd9119e8 Mon Sep 17 00:00:00 2001 From: Seung-Woo Kim Date: Fri, 20 Jan 2023 13:41:37 +0900 Subject: [PATCH 01/16] Partially Revert "brcmfmac: p2p: Deal with set but unused variables" This partially reverts commit 2de64ca7c9fadd32b261530592db4a6adbfcb53f. The commit 61325dc073e2 ("Revert "brcmfmac: move configuration of probe request IEs"") requires vif set with p2p interface, but commit 2de64ca7c9fa removes setting. Partially revert the commit to support p2p usage with p2p interface. Change-Id: Iaa3a6c57bb9e14c80ef9f4714eea0cfc447d6adc Reported-by: Jiung Yu Signed-off-by: Seung-Woo Kim Signed-off-by: Jaehoon Chung --- drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c index 7376f9f..99ee0e6 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c @@ -912,6 +912,8 @@ int brcmf_p2p_scan_prep(struct wiphy *wiphy, if (err) return err; + vif = p2p->bss_idx[P2PAPI_BSSCFG_DEVICE].vif; + /* override .run_escan() callback. */ cfg->escan_info.run = brcmf_p2p_run_escan; } -- 2.7.4 From 1fd25f5f88e058ef2a184e8bae3b82b749b6c67a Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C5=81ukasz=20Stelmach?= Date: Mon, 21 Dec 2020 12:40:27 +0100 Subject: [PATCH 02/16] kdbus: Revert "fs: unexport poll_schedule_timeout" MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This reverts commit 8f546ae1fc5ce8396827d4868c7eee1f1cc6947a. Change-Id: Ic603b089a2e7a3d65c86fbb41309c105c9a1e2fa Signed-off-by: Łukasz Stelmach Signed-off-by: Seung-Woo Kim --- fs/select.c | 3 ++- include/linux/poll.h | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/fs/select.c b/fs/select.c index 0ee55af..c66cc7a 100644 --- a/fs/select.c +++ b/fs/select.c @@ -234,7 +234,7 @@ static void __pollwait(struct file *filp, wait_queue_head_t *wait_address, add_wait_queue(wait_address, &entry->wait); } -static int poll_schedule_timeout(struct poll_wqueues *pwq, int state, +int poll_schedule_timeout(struct poll_wqueues *pwq, int state, ktime_t *expires, unsigned long slack) { int rc = -EINTR; @@ -259,6 +259,7 @@ static int poll_schedule_timeout(struct poll_wqueues *pwq, int state, return rc; } +EXPORT_SYMBOL(poll_schedule_timeout); /** * poll_select_set_timeout - helper function to setup the timeout value diff --git a/include/linux/poll.h b/include/linux/poll.h index a9e0e1c..3b8e699 100644 --- a/include/linux/poll.h +++ b/include/linux/poll.h @@ -110,6 +110,8 @@ struct poll_wqueues { extern void poll_initwait(struct poll_wqueues *pwq); extern void poll_freewait(struct poll_wqueues *pwq); +extern int poll_schedule_timeout(struct poll_wqueues *pwq, int state, + ktime_t *expires, unsigned long slack); extern u64 select_estimate_accuracy(struct timespec64 *tv); #define MAX_INT64_SECONDS (((s64)(~((u64)0)>>1)/HZ)-1) -- 2.7.4 From 0cb791f04e9446644326ad09f22b9701ea11796d Mon Sep 17 00:00:00 2001 From: Seung-Woo Kim Date: Tue, 27 Feb 2024 18:18:07 +0900 Subject: [PATCH 03/16] kdbus: Revert "cgroup: remove unused task_cgroup_path()" This reverts commit d16b3af46679a1eb21652c37711a60d3d4e6b8c0. kdbus of linux-tizen-modules-source has still usage of task_cgroup_path(). To support linux-tizen-modules-source, as workaround, revert back. Change-Id: I0c943932d07ff0aa602f4a238bfa5839d74735d4 Signed-off-by: Seung-Woo Kim --- include/linux/cgroup.h | 1 + kernel/cgroup/cgroup.c | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h index b307013..567c547 100644 --- a/include/linux/cgroup.h +++ b/include/linux/cgroup.h @@ -118,6 +118,7 @@ int cgroup_rm_cftypes(struct cftype *cfts); void cgroup_file_notify(struct cgroup_file *cfile); void cgroup_file_show(struct cgroup_file *cfile, bool show); +int task_cgroup_path(struct task_struct *task, char *buf, size_t buflen); int cgroupstats_build(struct cgroupstats *stats, struct dentry *dentry); int proc_cgroup_show(struct seq_file *m, struct pid_namespace *ns, struct pid *pid, struct task_struct *tsk); diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c index 5165f5c..49e602a 100644 --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c @@ -2355,6 +2355,45 @@ int cgroup_path_ns(struct cgroup *cgrp, char *buf, size_t buflen, EXPORT_SYMBOL_GPL(cgroup_path_ns); /** + * task_cgroup_path - cgroup path of a task in the first cgroup hierarchy + * @task: target task + * @buf: the buffer to write the path into + * @buflen: the length of the buffer + * + * Determine @task's cgroup on the first (the one with the lowest non-zero + * hierarchy_id) cgroup hierarchy and copy its path into @buf. This + * function grabs cgroup_mutex and shouldn't be used inside locks used by + * cgroup controller callbacks. + * + * Return value is the same as kernfs_path(). + */ +int task_cgroup_path(struct task_struct *task, char *buf, size_t buflen) +{ + struct cgroup_root *root; + struct cgroup *cgrp; + int hierarchy_id = 1; + int ret; + + cgroup_lock(); + spin_lock_irq(&css_set_lock); + + root = idr_get_next(&cgroup_hierarchy_idr, &hierarchy_id); + + if (root) { + cgrp = task_cgroup_from_root(task, root); + ret = cgroup_path_ns_locked(cgrp, buf, buflen, &init_cgroup_ns); + } else { + /* if no hierarchy exists, everyone is in "/" */ + ret = strscpy(buf, "/", buflen); + } + + spin_unlock_irq(&css_set_lock); + cgroup_unlock(); + return ret; +} +EXPORT_SYMBOL_GPL(task_cgroup_path); + +/** * cgroup_attach_lock - Lock for ->attach() * @lock_threadgroup: whether to down_write cgroup_threadgroup_rwsem * -- 2.7.4 From 57b752e611d5bd3b40df8c8397de322ceb65c8e0 Mon Sep 17 00:00:00 2001 From: Mateusz Majewski Date: Thu, 25 Nov 2021 14:32:07 +0100 Subject: [PATCH 04/16] kdbus: export needed symbols for out-of-tree support We have been asked to move kdbus out-of-tree. It uses a couple unexported symbols, so we need to (grudgingly) export them. Change-Id: Ide04c46bbc71f8fffbdefca68959e1048af1c905 Signed-off-by: Mateusz Majewski Signed-off-by: Marek Szyprowski --- fs/namespace.c | 3 +++ mm/memfd.c | 1 + 2 files changed, 4 insertions(+) diff --git a/fs/namespace.c b/fs/namespace.c index bfc5cff0..2323bd5 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -2045,6 +2045,7 @@ struct vfsmount *collect_mounts(const struct path *path) return ERR_CAST(tree); return &tree->mnt; } +EXPORT_SYMBOL_GPL(collect_mounts); static void free_mnt_ns(struct mnt_namespace *); static struct mnt_namespace *alloc_mnt_ns(struct user_namespace *, bool); @@ -2075,6 +2076,7 @@ void drop_collected_mounts(struct vfsmount *mnt) unlock_mount_hash(); namespace_unlock(); } +EXPORT_SYMBOL_GPL(drop_collected_mounts); static bool has_locked_children(struct mount *mnt, struct dentry *dentry) { @@ -2146,6 +2148,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg, } return 0; } +EXPORT_SYMBOL_GPL(iterate_mounts); static void lock_mnt_tree(struct mount *mnt) { diff --git a/mm/memfd.c b/mm/memfd.c index 2dba2cb..d6b882b 100644 --- a/mm/memfd.c +++ b/mm/memfd.c @@ -261,6 +261,7 @@ long memfd_fcntl(struct file *file, unsigned int cmd, unsigned int arg) return error; } +EXPORT_SYMBOL_GPL(memfd_fcntl); #define MFD_NAME_PREFIX "memfd:" #define MFD_NAME_PREFIX_LEN (sizeof(MFD_NAME_PREFIX) - 1) -- 2.7.4 From b41b3fbde09786012a4ecfc0784ccfcfb6e32bbd Mon Sep 17 00:00:00 2001 From: Dongwoo Lee Date: Fri, 26 Oct 2018 10:41:41 +0900 Subject: [PATCH 05/16] usb: gadget: f_fs: Prevent panic due to failure of huge size buffer allocation The f_fs daemons usually use large size buffer for increasing transfer performance, but it can cause memory allocation failure in case of that buddy space is fragmented. Since this, instead of just returning error in this case, give the chance to retry to allocate memory with a half length in order to prevent daemon crash due to failure of buffer allocation. Signed-off-by: Dongwoo Lee [hoegeun.kwon: rebased and resolved conflicts] Signed-off-by: Hoegeun Kwon Signed-off-by: Marek Szyprowski Change-Id: Ief5f8256b37b38de14bb333e53c4c4688867d4f6 --- drivers/usb/gadget/function/f_fs.c | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/drivers/usb/gadget/function/f_fs.c b/drivers/usb/gadget/function/f_fs.c index 6e9ef35..b32b66d 100644 --- a/drivers/usb/gadget/function/f_fs.c +++ b/drivers/usb/gadget/function/f_fs.c @@ -799,7 +799,7 @@ static inline void *ffs_alloc_buffer(struct ffs_io_data *io_data, if (io_data->use_sg) return ffs_build_sg_list(&io_data->sgt, data_len); - return kmalloc(data_len, GFP_KERNEL); + return kmalloc(data_len, GFP_KERNEL | __GFP_NOWARN); } static inline void ffs_free_buffer(struct ffs_io_data *io_data) @@ -1010,10 +1010,35 @@ static ssize_t ffs_epfile_io(struct file *file, struct ffs_io_data *io_data) io_data->use_sg = gadget->sg_supported && data_len > PAGE_SIZE; spin_unlock_irq(&epfile->ffs->eps_lock); +retry_malloc: data = ffs_alloc_buffer(io_data, data_len); if (!data) { - ret = -ENOMEM; - goto error_mutex; + /* If usb gadget device using physically contiguous + * buffer f_fs daemons usually use large size buffer for + * performance. However, this can cause failure of + * kmalloc() due to buddy fragmentation, even if there + * is available memory and thus it can be compacted by + * kswapd. Therefore, instead of just returning error + * to daemon in the case of failure of kmalloc(), give + * the second chance to allocate buffer with a half size + * until it really fails due to memory shortage. + * Otherwise, return error when scatter-gather list. + */ + if (data_len <= PAGE_SIZE || io_data->use_sg) { + ret = -ENOMEM; + goto error_mutex; + } + + data_len = data_len >> 1; + + if (io_data->read) { + spin_lock_irq(&epfile->ffs->eps_lock); + data_len = usb_ep_align_maybe(gadget, + ep->ep, data_len); + spin_unlock_irq(&epfile->ffs->eps_lock); + } + + goto retry_malloc; } if (!io_data->read && !copy_from_iter_full(data, data_len, &io_data->data)) { -- 2.7.4 From c4a234c3b4f7becec70936000623c62898e2092b Mon Sep 17 00:00:00 2001 From: Dongwoo Lee Date: Mon, 3 Aug 2020 14:44:43 +0900 Subject: [PATCH 06/16] mm: memcontrol: Add force_reclaim to reclaim tasks' memory in memcg These days, platforms tend to manage memory on low memory state like andloid's lowmemory killer. These platforms might want to reclaim memory from background tasks as well as kill victims to guarantee free memory at use space level. This patch provides an interface to reclaim a given memcg. After platform's low memory handler moves tasks that the platform wants to reclaim to a memcg and decides how many pages should be reclaimed, it can reclaim the pages from the tasks by writing the number of pages at memory.force_reclaim. Signed-off-by: Hyunhee Kim Signed-off-by: Kyungmin Park [dwoo08.lee: ported from mailing list https://www.spinics.net/lists/cgroups/msg07874.html] Signed-off-by: Dongwoo Lee [mszyprow: adapted for the changes from e55b9f96860f ("mm: memcontrol: drop dead CONFIG_MEMCG_SWAP config symbol") in Linux v6.1] Signed-off-by: Marek Szyprowski Change-Id: I928bf48e9715ed64135030dea44102d54d5f16f4 --- mm/memcontrol.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 8a881ab..52ddfe8 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -3643,6 +3643,36 @@ static ssize_t mem_cgroup_force_empty_write(struct kernfs_open_file *of, return mem_cgroup_force_empty(memcg) ?: nbytes; } +#if defined(CONFIG_MEMCG) && defined(CONFIG_SWAP) +static int mem_cgroup_force_reclaim(struct cgroup_subsys_state *css, + struct cftype *cft, u64 val) +{ + struct mem_cgroup *memcg = mem_cgroup_from_css(css); + unsigned long nr_to_reclaim = val; + unsigned long total = 0; + int loop; + + for (loop = 0; loop < MEM_CGROUP_MAX_RECLAIM_LOOPS; loop++) { + total += try_to_free_mem_cgroup_pages(memcg, nr_to_reclaim, + GFP_KERNEL, true); + + /* + * If nothing was reclaimed after two attempts, there + * may be no reclaimable pages in this hierarchy. + * If more than nr_to_reclaim pages were already reclaimed, + * finish force reclaim. + */ + if (loop && (!total || total > nr_to_reclaim)) + break; + } + + pr_info("%s: [Mem_reclaim] Loop: %d - Total_reclaimed: %lu - nr_to_reclaim: %lu\n", + __func__, loop, total, nr_to_reclaim); + + return total; +} +#endif + static u64 mem_cgroup_hierarchy_read(struct cgroup_subsys_state *css, struct cftype *cft) { @@ -7752,6 +7782,12 @@ static struct cftype memsw_files[] = { .write = mem_cgroup_reset, .read_u64 = mem_cgroup_read_u64, }, +#if defined(CONFIG_MEMCG) && defined(CONFIG_SWAP) + { + .name = "force_reclaim", + .write_u64 = mem_cgroup_force_reclaim, + }, +#endif { }, /* terminate */ }; -- 2.7.4 From 97ca9b298bda49234d03ad560b1d0009c438364f Mon Sep 17 00:00:00 2001 From: Marek Szyprowski Date: Tue, 5 Mar 2024 15:25:57 +0100 Subject: [PATCH 07/16] tizen_bcm2711_defconfig: enable drivers for RPi5 board Signed-off-by: Marek Szyprowski Change-Id: Ie9a0abcd3e1f077e1cee4c9bf45a0d22d406bf41 --- arch/arm64/configs/tizen_bcm2711_defconfig | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/arch/arm64/configs/tizen_bcm2711_defconfig b/arch/arm64/configs/tizen_bcm2711_defconfig index 3dc6599..d19855d 100644 --- a/arch/arm64/configs/tizen_bcm2711_defconfig +++ b/arch/arm64/configs/tizen_bcm2711_defconfig @@ -30,6 +30,7 @@ CONFIG_EXPERT=y CONFIG_PROFILING=y CONFIG_ARCH_BCM=y CONFIG_ARCH_BCM2835=y +CONFIG_ARCH_BRCMSTB=y # CONFIG_CAVIUM_ERRATUM_22375 is not set # CONFIG_CAVIUM_ERRATUM_23154 is not set # CONFIG_CAVIUM_ERRATUM_27456 is not set @@ -221,6 +222,8 @@ CONFIG_WIREGUARD=y CONFIG_TUN=y CONFIG_VETH=y CONFIG_BCMGENET=y +CONFIG_MACB=y +CONFIG_MACB_PCI=y CONFIG_PPP=y CONFIG_PPP_BSDCOMP=y CONFIG_PPP_DEFLATE=y @@ -285,11 +288,18 @@ CONFIG_I2C_STUB=m CONFIG_SPI=y CONFIG_SPI_BCM2835=y CONFIG_SPI_BCM2835AUX=m +CONFIG_SPI_DESIGNWARE=y +CONFIG_SPI_DW_DMA=y +CONFIG_SPI_DW_MMIO=y CONFIG_SPI_SPIDEV=y +CONFIG_PINCTRL_RP1=y +CONFIG_PINCTRL_BCM2712=y CONFIG_GPIO_SYSFS=y CONFIG_GPIO_BCM_VIRT=y CONFIG_GPIO_STMPE=y CONFIG_POWER_RESET_GPIO=y +CONFIG_SENSORS_PWM_FAN=y +CONFIG_SENSORS_RP1_ADC=y CONFIG_THERMAL=y CONFIG_BCM2711_THERMAL=y CONFIG_BCM2835_THERMAL=y @@ -300,6 +310,7 @@ CONFIG_MFD_STMPE=y CONFIG_STMPE_SPI=y CONFIG_MFD_SYSCON=y CONFIG_MFD_WL1273_CORE=m +CONFIG_MFD_RP1=y CONFIG_REGULATOR=y CONFIG_REGULATOR_FIXED_VOLTAGE=y CONFIG_REGULATOR_GPIO=y @@ -324,6 +335,7 @@ CONFIG_USB_VIDEO_CLASS=y CONFIG_V4L_PLATFORM_DRIVERS=y CONFIG_VIDEO_MUX=y CONFIG_VIDEO_BCM2835_UNICAM=y +CONFIG_VIDEO_RP1_CFE=y CONFIG_VIDEO_IMX219=y CONFIG_VIDEO_IMX708=y CONFIG_VIDEO_OV5647=y @@ -337,6 +349,9 @@ CONFIG_DRM_TOSHIBA_TC358762=y CONFIG_DRM_V3D=y CONFIG_DRM_VC4=y CONFIG_DRM_VC4_HDMI_CEC=y +CONFIG_DRM_RP1_DSI=y +CONFIG_DRM_RP1_DPI=y +CONFIG_DRM_RP1_VEC=y CONFIG_FB=y CONFIG_FB_SIMPLE=y CONFIG_BACKLIGHT_CLASS_DEVICE=y @@ -363,6 +378,7 @@ CONFIG_USB_ACM=m CONFIG_USB_PRINTER=y CONFIG_USB_STORAGE=y CONFIG_USB_UAS=y +CONFIG_USB_DWC3=y CONFIG_USB_DWC2=y CONFIG_USB_SERIAL=m CONFIG_USB_SERIAL_GENERIC=y @@ -384,6 +400,7 @@ CONFIG_MMC_BCM2835_DMA=y CONFIG_MMC_BCM2835_SDHOST=y CONFIG_MMC_SDHCI=y CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_MMC_SDHCI_OF_DWCMSHC=y CONFIG_MMC_SDHCI_IPROC=y CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS=y @@ -402,6 +419,7 @@ CONFIG_RTC_CLASS=y # CONFIG_RTC_HCTOSYS is not set CONFIG_DMADEVICES=y CONFIG_DMA_BCM2835=y +CONFIG_DW_AXI_DMAC=y CONFIG_DMA_BCM2708=y CONFIG_SW_SYNC=y CONFIG_STAGING=y @@ -410,14 +428,18 @@ CONFIG_SND_BCM2835=y CONFIG_VIDEO_BCM2835=y CONFIG_VIDEO_CODEC_BCM2835=y CONFIG_VIDEO_ISP_BCM2835=y +CONFIG_COMMON_CLK_RP1=y +CONFIG_COMMON_CLK_RP1_SDIO=y CONFIG_CLK_RASPBERRYPI=y CONFIG_MAILBOX=y CONFIG_BCM2835_MBOX=y -# CONFIG_IOMMU_SUPPORT is not set +CONFIG_BCM2712_IOMMU=y CONFIG_RASPBERRYPI_POWER=y CONFIG_PWM=y CONFIG_PWM_BCM2835=y -CONFIG_GENERIC_PHY=y +CONFIG_PWM_BRCMSTB=y +CONFIG_PWM_RP1=y +CONFIG_BCM2712_MIP=y CONFIG_ANDROID_BINDER_IPC=y CONFIG_ANDROID_BINDERFS=y CONFIG_EXT4_FS=y -- 2.7.4 From c87ad85c55ccd40bcf6d5551231405271e424063 Mon Sep 17 00:00:00 2001 From: Marek Szyprowski Date: Tue, 5 Mar 2024 16:03:01 +0100 Subject: [PATCH 08/16] rpi4: boot: add support for RPi5 Add RPi5 related section in config.txt and enable vc4-kms-v3d-rpi5 overlay for DRM/HDMI display support. Move kernel and dwc2-tizen overlay to common section. Signed-off-by: Marek Szyprowski Change-Id: I24b377d69610cb4bd050cacf2714b2e45644988e --- rpi4/boot/config_64bit.txt | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/rpi4/boot/config_64bit.txt b/rpi4/boot/config_64bit.txt index 20654249..23b4cbf 100644 --- a/rpi4/boot/config_64bit.txt +++ b/rpi4/boot/config_64bit.txt @@ -63,10 +63,10 @@ max_framebuffers=2 # Disable ID_SC and ID_SD pins to use UART2 force_eeprom_read=0 -# Enable dwc2 driver -dtoverlay=dwc2-tizen,dr_mode=peripheral - -kernel=u-boot.bin +[pi5] +# Enable DRM VC4 V3D driver +dtoverlay=vc4-kms-v3d-pi5 +max_framebuffers=2 [all] # Enable serial @@ -76,6 +76,11 @@ uart_2ndstage=1 # Set as 64-bit mode arm_64bit=1 +kernel=u-boot.bin + +# Enable dwc2 driver +dtoverlay=dwc2-tizen,dr_mode=peripheral + # Enable the camera module camera_auto_detect=1 dtoverlay=camera -- 2.7.4 From c3ae9afad1fcac220955ba5a6fdb80b56dfa1972 Mon Sep 17 00:00:00 2001 From: Marek Szyprowski Date: Mon, 18 Mar 2024 14:00:38 +0100 Subject: [PATCH 09/16] tizen_bcm2711_defconfig: enable rpivid driver for h265 video decoder Signed-off-by: Marek Szyprowski Change-Id: I7e8bfa1d197b96a2547ee0e53eec5c18d2520f63 --- arch/arm64/configs/tizen_bcm2711_defconfig | 1 + arch/arm64/configs/tizen_bcm2711_rt_defconfig | 1 + 2 files changed, 2 insertions(+) diff --git a/arch/arm64/configs/tizen_bcm2711_defconfig b/arch/arm64/configs/tizen_bcm2711_defconfig index d19855d..8b96bd7 100644 --- a/arch/arm64/configs/tizen_bcm2711_defconfig +++ b/arch/arm64/configs/tizen_bcm2711_defconfig @@ -424,6 +424,7 @@ CONFIG_DMA_BCM2708=y CONFIG_SW_SYNC=y CONFIG_STAGING=y CONFIG_STAGING_MEDIA=y +CONFIG_VIDEO_RPIVID=y CONFIG_SND_BCM2835=y CONFIG_VIDEO_BCM2835=y CONFIG_VIDEO_CODEC_BCM2835=y diff --git a/arch/arm64/configs/tizen_bcm2711_rt_defconfig b/arch/arm64/configs/tizen_bcm2711_rt_defconfig index 793d32d..086de96 100644 --- a/arch/arm64/configs/tizen_bcm2711_rt_defconfig +++ b/arch/arm64/configs/tizen_bcm2711_rt_defconfig @@ -400,6 +400,7 @@ CONFIG_DMA_BCM2708=y CONFIG_SW_SYNC=y CONFIG_STAGING=y CONFIG_STAGING_MEDIA=y +CONFIG_VIDEO_RPIVID=y CONFIG_SND_BCM2835=y CONFIG_VIDEO_BCM2835=y CONFIG_VIDEO_CODEC_BCM2835=y -- 2.7.4 From 2a8ca85bb0630feea0e6bdd99a7a92f322026ee8 Mon Sep 17 00:00:00 2001 From: Seung-Woo Kim Date: Fri, 22 Mar 2024 10:51:44 +0900 Subject: [PATCH 10/16] rpi4: boot: remove deprecated camera dtoverlay The config.txt command 'camera_auto_detect=1' will select a connected camera sensor dt overlay. and 'dtoverlay=camera' is not used. Remove the deprecated camera dt overlay setting. This will removes below firmware warning during booting: Failed to load overlay 'camera' brfs: File read: /mfs/sd/overlays/camera.dtbo Change-Id: I5521343efb46b16fb73caee48e415214e64d33c0 Ref: https://www.raspberrypi.com/documentation/computers/camera_software.html Signed-off-by: Seung-Woo Kim --- rpi4/boot/config.txt | 1 - rpi4/boot/config_64bit.txt | 1 - 2 files changed, 2 deletions(-) diff --git a/rpi4/boot/config.txt b/rpi4/boot/config.txt index 515ffc8..9817aea 100644 --- a/rpi4/boot/config.txt +++ b/rpi4/boot/config.txt @@ -75,7 +75,6 @@ uart_2ndstage=1 # Enable the camera module camera_auto_detect=1 -dtoverlay=camera # Turn off the red camera LED when recording video or taking a still picture disable_camera_led=1 diff --git a/rpi4/boot/config_64bit.txt b/rpi4/boot/config_64bit.txt index 23b4cbf..285043b 100644 --- a/rpi4/boot/config_64bit.txt +++ b/rpi4/boot/config_64bit.txt @@ -83,7 +83,6 @@ dtoverlay=dwc2-tizen,dr_mode=peripheral # Enable the camera module camera_auto_detect=1 -dtoverlay=camera # Turn off the red camera LED when recording video or taking a still picture disable_camera_led=1 -- 2.7.4 From a05a10522b0be8aa0e178a69d15539e93221c021 Mon Sep 17 00:00:00 2001 From: Seung-Woo Kim Date: Tue, 9 Jun 2020 19:34:27 +0900 Subject: [PATCH 11/16] usb: dwc2: gadget: do not reset during core phy init After the commit 1e868545f2bb ("usb: dwc2: gadget: Move gadget phy init into core phy init"), dwc2 gadget mode with f_fs enumeration is blocked from recent host kernel. It is because, the commit adds more usb reset for gadget case, so do not reset during core phy init for gadget. Signed-off-by: Seung-Woo Kim (cherry picked from commit a8cc687cf40f5c3781b23b08b3dd1ef978895449) Signed-off-by: Jaehoon Chung Change-Id: I6c4850983a4f397ebc7b10191bf293e1c4eeebba --- drivers/usb/dwc2/core.c | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/drivers/usb/dwc2/core.c b/drivers/usb/dwc2/core.c index 5635e4d..81f6843 100644 --- a/drivers/usb/dwc2/core.c +++ b/drivers/usb/dwc2/core.c @@ -992,13 +992,16 @@ static int dwc2_fs_phy_init(struct dwc2_hsotg *hsotg, bool select_phy) usbcfg |= GUSBCFG_PHYSEL; dwc2_writel(hsotg, usbcfg, GUSBCFG); - /* Reset after a PHY select */ - retval = dwc2_core_reset(hsotg, false); - - if (retval) { - dev_err(hsotg->dev, - "%s: Reset failed, aborting", __func__); - return retval; + if (dwc2_is_host_mode(hsotg)) { + /* Reset after a PHY select */ + retval = dwc2_core_reset(hsotg, false); + + if (retval) { + dev_err(hsotg->dev, + "%s: Reset failed, aborting", + __func__); + return retval; + } } } @@ -1090,12 +1093,14 @@ static int dwc2_hs_phy_init(struct dwc2_hsotg *hsotg, bool select_phy) if (usbcfg != usbcfg_old) { dwc2_writel(hsotg, usbcfg, GUSBCFG); - /* Reset after setting the PHY parameters */ - retval = dwc2_core_reset(hsotg, false); - if (retval) { - dev_err(hsotg->dev, - "%s: Reset failed, aborting", __func__); - return retval; + if (dwc2_is_host_mode(hsotg)) { + /* Reset after setting the PHY parameters */ + retval = dwc2_core_reset(hsotg, false); + if (retval) { + dev_err(hsotg->dev, + "%s: Reset failed, aborting", __func__); + return retval; + } } } -- 2.7.4 From 4b74cd8fdf66d4cb128d9249d9b2ada34dc98921 Mon Sep 17 00:00:00 2001 From: Dongwoo Lee Date: Fri, 6 Mar 2020 14:04:13 +0900 Subject: [PATCH 12/16] usb: dwc2: gadget: Expand buffer size of control endpoint We found the case that buffer of control endpoint, which was allocated with 8 bytes previously, is corrupted when the host races for setting up interfaces. Even worse, it overwrites memory for other structure such as usb_request for control endpoint and it causes kernel panic. Especially in Tizen, it often happens when the target is configured as multi-functional device: sdb + mtp. In our emprical examination the buffer can be corrupted upto size of 456 bytes. With this result, the size of buffer will be enlarged to 512 bytes to prevent kernel panic even if it happens. Signed-off-by: Seung-Woo Kim Signed-off-by: Dongwoo Lee (cherry picked from commit 4039de56979d2fb4d1cd7acf99e3b0215337a08d) Signed-off-by: Jaehoon Chung Change-Id: I8e9b04a9f290523147cc93686cc9de95ceeb4c00 --- drivers/usb/dwc2/core.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/dwc2/core.h b/drivers/usb/dwc2/core.h index faf40c1..10f41ba 100644 --- a/drivers/usb/dwc2/core.h +++ b/drivers/usb/dwc2/core.h @@ -659,7 +659,7 @@ struct dwc2_hw_params { }; /* Size of control and EP0 buffers */ -#define DWC2_CTRL_BUFF_SIZE 8 +#define DWC2_CTRL_BUFF_SIZE 512 /** * struct dwc2_gregs_backup - Holds global registers state before -- 2.7.4 From 84c3c2a03ff89766f95f9ee6d37e885f715ad888 Mon Sep 17 00:00:00 2001 From: Dongwoo Lee Date: Wed, 26 Feb 2020 19:39:04 +0900 Subject: [PATCH 13/16] usb: dwc2: Defer forcing peripheral mode dwc2 forces the mode as following dr_mode when it is finally determined. In the case of peripheral mode, however, this causes the notification to host without any preparation about gadget driver. In host, hcd requests device descriptor for enumeration, but it does never get response. See log below: usb 2-2: new high-speed USB device number 6 using xhci_hcd usb 2-2: device descriptor read/64, error -110 usb 2-2: device descriptor read/64, error -110 usb 2-2: new high-speed USB device number 7 using xhci_hcd usb 2-2: device descriptor read/64, error -110 usb 2-2: device descriptor read/64, error -110 usb usb2-port2: attempt power cycle usb 2-2: new high-speed USB device number 8 using xhci_hcd xhci_hcd 0000:00:14.0: Timeout while waiting for setup device command xhci_hcd 0000:00:14.0: Timeout while waiting for setup device command usb 2-2: device not accepting address 8, error -62 usb 2-2: new high-speed USB device number 9 using xhci_hcd xhci_hcd 0000:00:14.0: Timeout while waiting for setup device command xhci_hcd 0000:00:14.0: Timeout while waiting for setup device command usb 2-2: device not accepting address 9, error -62 usb usb2-port2: unable to enumerate USB device Even worse, all ports on host can get disabled at least xhci case in this situation. To prevent this, forcing peripheral mode will be defered until the gadget driver is prepared. Signed-off-by: Dongwoo Lee (cherry picked from commit 9507385cb797a12f278e73b9cb298ba73f120fd5) Signed-off-by: Jaehoon Chung Change-Id: Ic24f1a36c9ccfd9b571cd4d6eff5cbc3da9082b1 --- drivers/usb/dwc2/core.c | 7 ++++++- drivers/usb/dwc2/gadget.c | 1 + drivers/usb/dwc2/params.c | 3 ++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/drivers/usb/dwc2/core.c b/drivers/usb/dwc2/core.c index 81f6843..f755d73 100644 --- a/drivers/usb/dwc2/core.c +++ b/drivers/usb/dwc2/core.c @@ -581,7 +581,12 @@ void dwc2_force_dr_mode(struct dwc2_hsotg *hsotg) break; case USB_DR_MODE_PERIPHERAL: - dwc2_force_mode(hsotg, false); + /* + * To prevent early notification to host without any + * preparation about device descriptor, forcing mode + * is defered until gadget driver is ready. + */ + /* dwc2_force_mode(hsotg, false); */ break; case USB_DR_MODE_OTG: dwc2_clear_force_mode(hsotg); diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c index 68292c2..dc999fd 100644 --- a/drivers/usb/dwc2/gadget.c +++ b/drivers/usb/dwc2/gadget.c @@ -4550,6 +4550,7 @@ static int dwc2_hsotg_udc_start(struct usb_gadget *gadget, hsotg->gadget.speed = USB_SPEED_UNKNOWN; if (hsotg->dr_mode == USB_DR_MODE_PERIPHERAL) { + dwc2_force_mode(hsotg, false); ret = dwc2_lowlevel_hw_enable(hsotg); if (ret) goto err; diff --git a/drivers/usb/dwc2/params.c b/drivers/usb/dwc2/params.c index d0508a0..5e0f85c 100644 --- a/drivers/usb/dwc2/params.c +++ b/drivers/usb/dwc2/params.c @@ -864,7 +864,8 @@ static void dwc2_get_dev_hwparams(struct dwc2_hsotg *hsotg) if (hsotg->dr_mode == USB_DR_MODE_HOST) return; - dwc2_force_mode(hsotg, false); + if (hsotg->dr_mode != USB_DR_MODE_PERIPHERAL) + dwc2_force_mode(hsotg, false); gnptxfsiz = dwc2_readl(hsotg, GNPTXFSIZ); -- 2.7.4 From 661b0cac861aa7c6d49130f8a243f80e9ff00dfe Mon Sep 17 00:00:00 2001 From: Jaehoon Chung Date: Mon, 22 Oct 2018 13:44:11 +0900 Subject: [PATCH 14/16] usb: dwc2: gadget: set the quirk_ep_out_alinged_size as true Set the quirk_ep_out_aligned_size as true. This patch is fixed about occurring kernel panic after failed memory allocation. Signed-off-by: Jaehoon Chung [dwoo08.lee: bring commit from linux-artik7 of public tizen repository] Signed-off-by: Dongwoo Lee (cherry picked from commit 377d8707f528fe5e318debd4e282db6ae8713244) Change-Id: Ia058acdaac0b9d39554e9eb1a69be57255961186 --- drivers/usb/dwc2/gadget.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c index dc999fd..cb89afc 100644 --- a/drivers/usb/dwc2/gadget.c +++ b/drivers/usb/dwc2/gadget.c @@ -5060,6 +5060,7 @@ int dwc2_gadget_init(struct dwc2_hsotg *hsotg) epnum, 0); } + hsotg->gadget.quirk_ep_out_aligned_size = true; dwc2_hsotg_dump(hsotg); #if IS_ENABLED(CONFIG_EXTCON) -- 2.7.4 From ff2eecaa68140cb58507fd8eebc15099ccebebf8 Mon Sep 17 00:00:00 2001 From: Jaehoon Chung Date: Fri, 27 Mar 2020 18:07:28 +0900 Subject: [PATCH 15/16] brcmfamc: add the feature-disable property Add the feature-disable property. It will be parsed when brcmfmac is probed. If someone want to disable some features by default, it's possible to use this property. Signed-off-by: Jaehoon Chung (cherry picked from commit 4a12cde7ed3e962f146676cb51fb3a6bc6380bd1) Change-Id: Ie06f2e896d37dd75657779dedb68f7c683cb6d53 --- drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c index e406e11..89c5f0a 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c @@ -125,6 +125,11 @@ void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type, if (bus_type != BRCMF_BUSTYPE_SDIO) return; + if (of_property_read_u32(np, "brcm,feature-disable", &val) == 0) { + settings->feature_disable |= val; + brcmf_info("Disabled feature 0x%x\n", settings->feature_disable); + } + if (of_property_read_u32(np, "brcm,drive-strength", &val) == 0) sdio->drive_strength = val; -- 2.7.4 From bbbe8f5741a6ba313abbce8c6053cc8dde57266d Mon Sep 17 00:00:00 2001 From: Jaehoon Chung Date: Mon, 25 Mar 2024 20:53:30 +0900 Subject: [PATCH 16/16] ARM: dts: bcm2711-rpi-4-b: add a brcmf wifi node Add brcmf wifi node to use a below property. - brcm,featuer-disable "0x2000" is a bit to disable "sup_wpa" feature. Tizen doesn't need to use this feature. So disable it by default. Signed-off-by: Jaehoon Chung Signed-off-by: Hoegeun Kwon (cherry-picked from commit 23eaf8308aa4cc22a4002ae67dd5736f183e0b7d) Change-Id: Ifc39b6ce7d71caca0efe48a9659d41e6da5081f5 --- arch/arm/boot/dts/broadcom/bcm2711-rpi-4-b.dts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/arch/arm/boot/dts/broadcom/bcm2711-rpi-4-b.dts b/arch/arm/boot/dts/broadcom/bcm2711-rpi-4-b.dts index d3a3a1e..5555f56 100644 --- a/arch/arm/boot/dts/broadcom/bcm2711-rpi-4-b.dts +++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi-4-b.dts @@ -273,10 +273,17 @@ }; &mmcnr { + #address-cells = <1>; + #size-cells = <0>; pinctrl-names = "default"; pinctrl-0 = <&sdio_pins>; bus-width = <4>; status = "okay"; + brcmf: wifi@1 { + reg = <1>; + compatible = "brcm,bcm4329-fmac"; + brcm,feature-disable = <0x2000>; /* BIT[13] : sup-wpa */ + }; }; &uart0 { -- 2.7.4