root/drivers/gpu/drm/xe/xe_sysctrl_types.h
/* SPDX-License-Identifier: MIT */
/*
 * Copyright © 2026 Intel Corporation
 */

#ifndef _XE_SYSCTRL_TYPES_H_
#define _XE_SYSCTRL_TYPES_H_

#include <linux/mutex.h>
#include <linux/types.h>
#include <linux/workqueue_types.h>

struct xe_mmio;

/**
 * struct xe_sysctrl - System Controller driver context
 *
 * This structure maintains the runtime state for System Controller
 * communication. All fields are initialized during xe_sysctrl_init()
 * and protected appropriately for concurrent access.
 */
struct xe_sysctrl {
        /** @mmio: MMIO region for system control registers */
        struct xe_mmio *mmio;

        /** @cmd_lock: Mutex protecting mailbox command operations */
        struct mutex cmd_lock;

        /** @phase_bit: Message boundary phase toggle bit (0 or 1) */
        bool phase_bit;

        /** @work: Pending events worker */
        struct work_struct work;

        /** @event_lock: Mutex protecting pending events */
        struct mutex event_lock;
};

#endif