/*
 * Copyright (C) 2017 MediaTek Inc.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See http://www.gnu.org/licenses/gpl-2.0.html for more details.
 */

#ifndef _DT_BINDINGS_POWER_MT2712_POWER_H
#define _DT_BINDINGS_POWER_MT2712_POWER_H

#define MT2712_POWER_DOMAIN_MM		0
#define MT2712_POWER_DOMAIN_VDEC	1
#define MT2712_POWER_DOMAIN_VENC	2
#define MT2712_POWER_DOMAIN_ISP		3
#define MT2712_POWER_DOMAIN_AUDIO	4
#define MT2712_POWER_DOMAIN_USB		5
#define MT2712_POWER_DOMAIN_USB2	6
#define MT2712_POWER_DOMAIN_MFG		7
#define MT2712_POWER_DOMAIN_MFG_SC1	8
#define MT2712_POWER_DOMAIN_MFG_SC2	9
#define MT2712_POWER_DOMAIN_MFG_SC3	10

#endif /* _DT_BINDINGS_POWER_MT2712_POWER_H */
