Commit b92d99ae authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab
Browse files

media: atomisp: go one step further to drop ia_css_memory_access.c



Move the attrs handling into hmm, simplifying even further
what the ia_css_memory_access.c file does.

Yet, the returned type for ia_css_memory_access.c is an
integer, instead of a pointer.

Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent 86df6ff2
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -35,7 +35,8 @@ int hmm_init(void);
void hmm_cleanup(void);

ia_css_ptr hmm_alloc(size_t bytes, enum hmm_bo_type type,
		     int from_highmem, const void __user *userptr, bool cached);
		     int from_highmem, const void __user *userptr,
		     const uint16_t attrs);
void hmm_free(ia_css_ptr ptr);
int hmm_load(ia_css_ptr virt, void *data, unsigned int bytes);
int hmm_store(ia_css_ptr virt, const void *data, unsigned int bytes);
+2 −0
Original line number Diff line number Diff line
@@ -917,6 +917,8 @@ struct atomisp_acc_map {

#define ATOMISP_MAP_FLAG_NOFLUSH	0x0001	/* Do not flush cache */
#define ATOMISP_MAP_FLAG_CACHED		0x0002	/* Enable cache */
#define ATOMISP_MAP_FLAG_CONTIGUOUS	0x0004
#define ATOMISP_MAP_FLAG_CLEARED	0x0008

struct atomisp_acc_state {
	__u32 flags;			/* Flags, see list below */
+0 −3
Original line number Diff line number Diff line
@@ -76,9 +76,6 @@
 * within the allocation referencable from the
 * returned pointer/address.
 */
#define MMGR_ATTRIBUTE_CACHED		0x0001
#define MMGR_ATTRIBUTE_CONTIGUOUS	0x0002
#define MMGR_ATTRIBUTE_CLEARED		0x0008

#define mmgr_NULL		((hrt_vaddress)0)
#define mmgr_EXCEPTION		((hrt_vaddress)-1)
+9 −2
Original line number Diff line number Diff line
@@ -193,7 +193,7 @@ int hmm_init(void)
	 * at the beginning, to avoid hmm_alloc return 0 in the
	 * further allocation.
	 */
	dummy_ptr = hmm_alloc(1, HMM_BO_PRIVATE, 0, NULL, false);
	dummy_ptr = hmm_alloc(1, HMM_BO_PRIVATE, 0, NULL, 0);

	if (!ret) {
		ret = sysfs_create_group(&atomisp_dev->kobj,
@@ -219,12 +219,16 @@ void hmm_cleanup(void)
}

ia_css_ptr hmm_alloc(size_t bytes, enum hmm_bo_type type,
		     int from_highmem, const void __user *userptr, bool cached)
		     int from_highmem, const void __user *userptr,
		     const uint16_t attrs)
{
	unsigned int pgnr;
	struct hmm_buffer_object *bo;
	bool cached = attrs & ATOMISP_MAP_FLAG_CACHED;
	int ret;

	WARN_ON(attrs & ATOMISP_MAP_FLAG_CONTIGUOUS);

	/*
	 * Check if we are initialized. In the ideal world we wouldn't need
	 * this but we can tackle it once the driver is a lot cleaner
@@ -258,6 +262,9 @@ ia_css_ptr hmm_alloc(size_t bytes, enum hmm_bo_type type,

	hmm_mem_stat.tol_cnt += pgnr;

	if (attrs & ATOMISP_MAP_FLAG_CLEARED)
		hmm_set(bo->start, 0, bytes);

	return bo->start;

bind_err:
+1 −20
Original line number Diff line number Diff line
@@ -12,30 +12,11 @@
 * more details.
 */

#include <type_support.h>
#include <system_types.h>
#include <assert_support.h>
#include <memory_access.h>
#include <ia_css_env.h>

#include "atomisp_internal.h"

hrt_vaddress mmgr_alloc_attr(const size_t size, const uint16_t attrs)
{
	ia_css_ptr data;

	WARN_ON(attrs & MMGR_ATTRIBUTE_CONTIGUOUS);

	data = hmm_alloc(size, HMM_BO_PRIVATE, 0, NULL,
			 attrs & MMGR_ATTRIBUTE_CACHED);

	if (!data)
		return 0;

	if (attrs & MMGR_ATTRIBUTE_CLEARED)
		hmm_set(data, 0, size);

	return (ia_css_ptr)data;
	return hmm_alloc(size, HMM_BO_PRIVATE, 0, NULL, attrs);
}

void mmgr_load(const hrt_vaddress vaddr, void *data, const size_t size)
Loading