blob: 5c3a3a71b4fc78fcf71e15262023f3adbae64662 [file] [log] [blame]
/*
* Copyright 2022 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include <asm-generic/ioctl.h>
#include <stdint.h>
#ifndef __MALI_IOCTL_H__
#define __MALI_IOCTL_H__
static const char* kGpuDevice = "/dev/mali0";
// Definitions courtesy of
// third_party/kernel/v5.10/drivers/gpu/arm/valhall/mali_kbase_ioctl.h
#define KBASE_IOCTL_TYPE 0x80
#define KBASE_IOCTL_GET_GPUPROPS \
_IOW(KBASE_IOCTL_TYPE, 3, struct kbase_ioctl_get_gpuprops)
#define KBASE_IOCTL_SET_FLAGS \
_IOW(KBASE_IOCTL_TYPE, 1, struct kbase_ioctl_set_flags)
#define KBASE_IOCTL_VERSION_CHECK \
_IOWR(KBASE_IOCTL_TYPE, 0, struct kbase_ioctl_version_check)
#define KBASE_IOCTL_HWCNT_READER_SETUP \
_IOW(KBASE_IOCTL_TYPE, 8, struct kbase_ioctl_hwcnt_reader_setup)
#define BASE_CONTEXT_SYSTEM_MONITOR_SUBMIT_DISABLED ((uint32_t)1 << 1)
struct __attribute__((packed)) kbase_ioctl_get_gpuprops {
uint64_t buffer_ptr;
uint32_t size;
uint32_t flags;
};
struct __attribute__((packed)) kbase_ioctl_set_flags {
uint32_t create_flags;
};
struct __attribute__((packed)) kbase_ioctl_version_check {
uint16_t major;
uint16_t minor;
};
struct __attribute__((packed)) kbase_ioctl_hwcnt_reader_setup {
uint32_t num_buffers;
uint32_t job_manager_mask;
uint32_t shader_mask;
uint32_t tiler_mask;
uint32_t mmu_l2_mask;
};
// Definitions courtesy of
// third_party/kernel/v5.10/drivers/gpu/arm/valhall/mali_kbase_hwcnt_reader.h
#define KBASE_HWCNT_READER 0xBE
#define KBASE_HWCNT_READER_GET_HWVER _IOR(KBASE_HWCNT_READER, 0x00, uint32_t)
#define KBASE_HWCNT_READER_GET_BUFFER_SIZE \
_IOR(KBASE_HWCNT_READER, 0x01, uint32_t)
#define KBASE_HWCNT_READER_DUMP _IOW(KBASE_HWCNT_READER, 0x10, uint32_t)
#define KBASE_HWCNT_READER_CLEAR _IOW(KBASE_HWCNT_READER, 0x11, uint32_t)
#define KBASE_HWCNT_READER_GET_BUFFER \
_IOR(KBASE_HWCNT_READER, 0x20, struct kbase_hwcnt_reader_metadata)
#define KBASE_HWCNT_READER_PUT_BUFFER \
_IOW(KBASE_HWCNT_READER, 0x21, struct kbase_hwcnt_reader_metadata)
#define KBASE_HWCNT_READER_SET_INTERVAL _IOW(KBASE_HWCNT_READER, 0x30, uint32_t)
#define KBASE_HWCNT_READER_ENABLE_EVENT _IOW(KBASE_HWCNT_READER, 0x40, uint32_t)
#define KBASE_HWCNT_READER_DISABLE_EVENT \
_IOW(KBASE_HWCNT_READER, 0x41, uint32_t)
#define KBASE_HWCNT_READER_GET_API_VERSION \
_IOW(KBASE_HWCNT_READER, 0xFF, uint32_t)
struct kbase_hwcnt_reader_metadata {
uint64_t timestamp;
uint32_t event_id;
uint32_t buffer_idx;
};
#define SUPPORTED_MAJOR_VERSION 11
#define SUPPORTED_MINOR_VERSION 11
#define SUPPORTED_API_VERSION 1
#define SUPPORTED_HW_VERSION 5
#endif // __MALI_IOCTL_H__