From 8299d1f057439f94c6a4412e2e5c5082b82a30c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Sat, 21 Aug 2021 10:54:34 +0200 Subject: bcm27xx: add kernel 5.10 support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rebased RPi foundation patches on linux 5.10.59, removed applied and reverted patches, wireless patches and defconfig patches. bcm2708: boot tested on RPi B+ v1.2 bcm2709: boot tested on RPi 4B v1.1 4G bcm2711: boot tested on RPi 4B v1.1 4G Signed-off-by: Álvaro Fernández Rojas --- ...FC-media-Add-media_request_-pin-unpin-API.patch | 94 ++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 target/linux/bcm27xx/patches-5.10/950-0613-RFC-media-Add-media_request_-pin-unpin-API.patch (limited to 'target/linux/bcm27xx/patches-5.10/950-0613-RFC-media-Add-media_request_-pin-unpin-API.patch') diff --git a/target/linux/bcm27xx/patches-5.10/950-0613-RFC-media-Add-media_request_-pin-unpin-API.patch b/target/linux/bcm27xx/patches-5.10/950-0613-RFC-media-Add-media_request_-pin-unpin-API.patch new file mode 100644 index 0000000000..250d25dca8 --- /dev/null +++ b/target/linux/bcm27xx/patches-5.10/950-0613-RFC-media-Add-media_request_-pin-unpin-API.patch @@ -0,0 +1,94 @@ +From 739b9c6a80058d1aaeb66fdfe2910662f7f411ad Mon Sep 17 00:00:00 2001 +From: Ezequiel Garcia +Date: Sun, 21 Mar 2021 16:38:54 -0300 +Subject: [PATCH] RFC: media: Add media_request_{pin,unpin} API + +This is probably not the API we will want to add, but it +should show what semantics are needed by drivers. + +The goal is to allow the OUTPUT (aka source) buffer and the +controls associated to a request to be released from the request, +and in particular return the OUTPUT buffer back to userspace, +without signalling the media request fd. + +This is useful for devices that are able to pre-process +the OUTPUT buffer, therefore able to release it before +the decoding is finished. These drivers should signal +the media request fd only after the CAPTURE buffer is done. + +Tested-by: John Cox +Signed-off-by: Ezequiel Garcia +--- + drivers/media/mc/mc-request.c | 35 +++++++++++++++++++++++++++++++++++ + include/media/media-request.h | 12 ++++++++++++ + 2 files changed, 47 insertions(+) + +--- a/drivers/media/mc/mc-request.c ++++ b/drivers/media/mc/mc-request.c +@@ -504,3 +504,38 @@ unlock: + media_request_put(req); + } + EXPORT_SYMBOL_GPL(media_request_object_complete); ++ ++void media_request_pin(struct media_request *req) ++{ ++ unsigned long flags; ++ ++ spin_lock_irqsave(&req->lock, flags); ++ if (WARN_ON(req->state != MEDIA_REQUEST_STATE_QUEUED)) ++ goto unlock; ++ req->num_incomplete_objects++; ++unlock: ++ spin_unlock_irqrestore(&req->lock, flags); ++} ++EXPORT_SYMBOL_GPL(media_request_pin); ++ ++void media_request_unpin(struct media_request *req) ++{ ++ unsigned long flags; ++ bool completed = false; ++ ++ spin_lock_irqsave(&req->lock, flags); ++ if (WARN_ON(!req->num_incomplete_objects) || ++ WARN_ON(req->state != MEDIA_REQUEST_STATE_QUEUED)) ++ goto unlock; ++ ++ if (!--req->num_incomplete_objects) { ++ req->state = MEDIA_REQUEST_STATE_COMPLETE; ++ wake_up_interruptible_all(&req->poll_wait); ++ completed = true; ++ } ++unlock: ++ spin_unlock_irqrestore(&req->lock, flags); ++ if (completed) ++ media_request_put(req); ++} ++EXPORT_SYMBOL_GPL(media_request_unpin); +--- a/include/media/media-request.h ++++ b/include/media/media-request.h +@@ -189,6 +189,10 @@ static inline void media_request_get(str + */ + void media_request_put(struct media_request *req); + ++void media_request_pin(struct media_request *req); ++ ++void media_request_unpin(struct media_request *req); ++ + /** + * media_request_get_by_fd - Get a media request by fd + * +@@ -228,6 +232,14 @@ static inline void media_request_put(str + { + } + ++static inline void media_request_pin(struct media_request *req) ++{ ++} ++ ++static inline void media_request_unpin(struct media_request *req) ++{ ++} ++ + static inline struct media_request * + media_request_get_by_fd(struct media_device *mdev, int request_fd) + { -- cgit v1.2.3