mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 10:00:17 +00:00
staging: vc04_services: Drop vchiq_connected.[ch] files
The vchiq_connected.[ch] just implements two function: - vchiq_add_connected_callback() - vchiq_call_connected_callbacks() for the deferred vchiq callbacks. Those can easily live in vchiq_arm.[ch], hence move them. This allows making the vchiq_call_connected_callbacks() function static. The move doesn't copy over MAX_CALLBACKS because it is the same as VCHIQ_DRV_MAX_CALLBACKS. Hence, it now being used in vchiq_add_connected_callback(). No functional changes intended in this patch. Suggested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Umang Jain <umang.jain@ideasonboard.com> Link: https://lore.kernel.org/r/20240412075743.60712-6-umang.jain@ideasonboard.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
e1c0af4f3c
commit
f875976ecf
@@ -6,7 +6,6 @@ vchiq-objs := \
|
|||||||
interface/vchiq_arm/vchiq_arm.o \
|
interface/vchiq_arm/vchiq_arm.o \
|
||||||
interface/vchiq_arm/vchiq_bus.o \
|
interface/vchiq_arm/vchiq_bus.o \
|
||||||
interface/vchiq_arm/vchiq_debugfs.o \
|
interface/vchiq_arm/vchiq_debugfs.o \
|
||||||
interface/vchiq_arm/vchiq_connected.o \
|
|
||||||
|
|
||||||
ifdef CONFIG_VCHIQ_CDEV
|
ifdef CONFIG_VCHIQ_CDEV
|
||||||
vchiq-objs += interface/vchiq_arm/vchiq_dev.o
|
vchiq-objs += interface/vchiq_arm/vchiq_dev.o
|
||||||
|
|||||||
@@ -36,7 +36,6 @@
|
|||||||
#include "vchiq_arm.h"
|
#include "vchiq_arm.h"
|
||||||
#include "vchiq_bus.h"
|
#include "vchiq_bus.h"
|
||||||
#include "vchiq_debugfs.h"
|
#include "vchiq_debugfs.h"
|
||||||
#include "vchiq_connected.h"
|
|
||||||
#include "vchiq_pagelist.h"
|
#include "vchiq_pagelist.h"
|
||||||
|
|
||||||
#define DEVICE_NAME "vchiq"
|
#define DEVICE_NAME "vchiq"
|
||||||
@@ -189,6 +188,56 @@ is_adjacent_block(u32 *addrs, u32 addr, unsigned int k)
|
|||||||
return tmp == (addr & PAGE_MASK);
|
return tmp == (addr & PAGE_MASK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This function is called by the vchiq stack once it has been connected to
|
||||||
|
* the videocore and clients can start to use the stack.
|
||||||
|
*/
|
||||||
|
static void vchiq_call_connected_callbacks(struct vchiq_drv_mgmt *drv_mgmt)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (mutex_lock_killable(&drv_mgmt->connected_mutex))
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (i = 0; i < drv_mgmt->num_deferred_callbacks; i++)
|
||||||
|
drv_mgmt->deferred_callback[i]();
|
||||||
|
|
||||||
|
drv_mgmt->num_deferred_callbacks = 0;
|
||||||
|
drv_mgmt->connected = true;
|
||||||
|
mutex_unlock(&drv_mgmt->connected_mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This function is used to defer initialization until the vchiq stack is
|
||||||
|
* initialized. If the stack is already initialized, then the callback will
|
||||||
|
* be made immediately, otherwise it will be deferred until
|
||||||
|
* vchiq_call_connected_callbacks is called.
|
||||||
|
*/
|
||||||
|
void vchiq_add_connected_callback(struct vchiq_device *device, void (*callback)(void))
|
||||||
|
{
|
||||||
|
struct vchiq_drv_mgmt *drv_mgmt = device->drv_mgmt;
|
||||||
|
|
||||||
|
if (mutex_lock_killable(&drv_mgmt->connected_mutex))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (drv_mgmt->connected) {
|
||||||
|
/* We're already connected. Call the callback immediately. */
|
||||||
|
callback();
|
||||||
|
} else {
|
||||||
|
if (drv_mgmt->num_deferred_callbacks >= VCHIQ_DRV_MAX_CALLBACKS) {
|
||||||
|
dev_err(&device->dev,
|
||||||
|
"core: deferred callbacks(%d) exceeded the maximum limit(%d)\n",
|
||||||
|
drv_mgmt->num_deferred_callbacks, VCHIQ_DRV_MAX_CALLBACKS);
|
||||||
|
} else {
|
||||||
|
drv_mgmt->deferred_callback[drv_mgmt->num_deferred_callbacks] =
|
||||||
|
callback;
|
||||||
|
drv_mgmt->num_deferred_callbacks++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mutex_unlock(&drv_mgmt->connected_mutex);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(vchiq_add_connected_callback);
|
||||||
|
|
||||||
/* There is a potential problem with partial cache lines (pages?)
|
/* There is a potential problem with partial cache lines (pages?)
|
||||||
* at the ends of the block when reading. If the CPU accessed anything in
|
* at the ends of the block when reading. If the CPU accessed anything in
|
||||||
* the same line (page?) then it may have pulled old data into the cache,
|
* the same line (page?) then it may have pulled old data into the cache,
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
#define VCHIQ_DRV_MAX_CALLBACKS 10
|
#define VCHIQ_DRV_MAX_CALLBACKS 10
|
||||||
|
|
||||||
struct rpi_firmware;
|
struct rpi_firmware;
|
||||||
|
struct vchiq_device;
|
||||||
|
|
||||||
enum USE_TYPE_E {
|
enum USE_TYPE_E {
|
||||||
USE_TYPE_SERVICE,
|
USE_TYPE_SERVICE,
|
||||||
@@ -132,6 +133,10 @@ vchiq_instance_get_trace(struct vchiq_instance *instance);
|
|||||||
extern void
|
extern void
|
||||||
vchiq_instance_set_trace(struct vchiq_instance *instance, int trace);
|
vchiq_instance_set_trace(struct vchiq_instance *instance, int trace);
|
||||||
|
|
||||||
|
extern void
|
||||||
|
vchiq_add_connected_callback(struct vchiq_device *device,
|
||||||
|
void (*callback)(void));
|
||||||
|
|
||||||
#if IS_ENABLED(CONFIG_VCHIQ_CDEV)
|
#if IS_ENABLED(CONFIG_VCHIQ_CDEV)
|
||||||
|
|
||||||
extern void
|
extern void
|
||||||
|
|||||||
@@ -1,60 +0,0 @@
|
|||||||
// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
|
|
||||||
/* Copyright (c) 2010-2012 Broadcom. All rights reserved. */
|
|
||||||
|
|
||||||
#include "vchiq_arm.h"
|
|
||||||
#include "vchiq_connected.h"
|
|
||||||
#include "vchiq_core.h"
|
|
||||||
#include <linux/module.h>
|
|
||||||
#include <linux/mutex.h>
|
|
||||||
|
|
||||||
#define MAX_CALLBACKS 10
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This function is used to defer initialization until the vchiq stack is
|
|
||||||
* initialized. If the stack is already initialized, then the callback will
|
|
||||||
* be made immediately, otherwise it will be deferred until
|
|
||||||
* vchiq_call_connected_callbacks is called.
|
|
||||||
*/
|
|
||||||
void vchiq_add_connected_callback(struct vchiq_device *device, void (*callback)(void))
|
|
||||||
{
|
|
||||||
struct vchiq_drv_mgmt *drv_mgmt = device->drv_mgmt;
|
|
||||||
|
|
||||||
if (mutex_lock_killable(&drv_mgmt->connected_mutex))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (drv_mgmt->connected) {
|
|
||||||
/* We're already connected. Call the callback immediately. */
|
|
||||||
callback();
|
|
||||||
} else {
|
|
||||||
if (drv_mgmt->num_deferred_callbacks >= MAX_CALLBACKS) {
|
|
||||||
dev_err(&device->dev,
|
|
||||||
"core: There already %d callback registered - please increase MAX_CALLBACKS\n",
|
|
||||||
drv_mgmt->num_deferred_callbacks);
|
|
||||||
} else {
|
|
||||||
drv_mgmt->deferred_callback[drv_mgmt->num_deferred_callbacks] =
|
|
||||||
callback;
|
|
||||||
drv_mgmt->num_deferred_callbacks++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
mutex_unlock(&drv_mgmt->connected_mutex);
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(vchiq_add_connected_callback);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This function is called by the vchiq stack once it has been connected to
|
|
||||||
* the videocore and clients can start to use the stack.
|
|
||||||
*/
|
|
||||||
void vchiq_call_connected_callbacks(struct vchiq_drv_mgmt *drv_mgmt)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (mutex_lock_killable(&drv_mgmt->connected_mutex))
|
|
||||||
return;
|
|
||||||
|
|
||||||
for (i = 0; i < drv_mgmt->num_deferred_callbacks; i++)
|
|
||||||
drv_mgmt->deferred_callback[i]();
|
|
||||||
|
|
||||||
drv_mgmt->num_deferred_callbacks = 0;
|
|
||||||
drv_mgmt->connected = true;
|
|
||||||
mutex_unlock(&drv_mgmt->connected_mutex);
|
|
||||||
}
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
|
|
||||||
/* Copyright (c) 2010-2012 Broadcom. All rights reserved. */
|
|
||||||
|
|
||||||
#include "vchiq_bus.h"
|
|
||||||
|
|
||||||
#ifndef VCHIQ_CONNECTED_H
|
|
||||||
#define VCHIQ_CONNECTED_H
|
|
||||||
|
|
||||||
struct vchiq_drv_mgmt;
|
|
||||||
|
|
||||||
void vchiq_add_connected_callback(struct vchiq_device *device, void (*callback)(void));
|
|
||||||
void vchiq_call_connected_callbacks(struct vchiq_drv_mgmt *mgmt);
|
|
||||||
|
|
||||||
#endif /* VCHIQ_CONNECTED_H */
|
|
||||||
Reference in New Issue
Block a user