/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_AHCI_REMAP_H
#define _LINUX_AHCI_REMAP_H

#include <linux/sizes.h>

#define AHCI_VSCAP		0xa4
#define AHCI_REMAP_CAP		0x800

/* device class code */
#define AHCI_REMAP_N_DCC	0x880

/* remap-device base relative to ahci-bar */
#define AHCI_REMAP_N_OFFSET	SZ_16K
#define AHCI_REMAP_N_SIZE	SZ_16K

#define AHCI_MAX_REMAP		3

static inline unsigned int ahci_remap_dcc(int i)
{
	return AHCI_REMAP_N_DCC + i * 0x80;
}

static inline unsigned int ahci_remap_base(int i)
{
	return AHCI_REMAP_N_OFFSET + i * AHCI_REMAP_N_SIZE;
}

#endif /* _LINUX_AHCI_REMAP_H */