19be8a82cSStrahinja Jankovic /* 29be8a82cSStrahinja Jankovic * Allwinner I2C Bus Serial Interface registers definition 39be8a82cSStrahinja Jankovic * 49be8a82cSStrahinja Jankovic * Copyright (C) 2022 Strahinja Jankovic. <strahinja.p.jankovic@gmail.com> 59be8a82cSStrahinja Jankovic * 69be8a82cSStrahinja Jankovic * This file is derived from IMX I2C controller, 79be8a82cSStrahinja Jankovic * by Jean-Christophe DUBOIS . 89be8a82cSStrahinja Jankovic * 99be8a82cSStrahinja Jankovic * This program is free software; you can redistribute it and/or modify it 109be8a82cSStrahinja Jankovic * under the terms of the GNU General Public License as published by the 119be8a82cSStrahinja Jankovic * Free Software Foundation; either version 2 of the License, or 129be8a82cSStrahinja Jankovic * (at your option) any later version. 139be8a82cSStrahinja Jankovic * 149be8a82cSStrahinja Jankovic * This program is distributed in the hope that it will be useful, but WITHOUT 159be8a82cSStrahinja Jankovic * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 169be8a82cSStrahinja Jankovic * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 179be8a82cSStrahinja Jankovic * for more details. 189be8a82cSStrahinja Jankovic * 199be8a82cSStrahinja Jankovic * You should have received a copy of the GNU General Public License along 209be8a82cSStrahinja Jankovic * with this program; if not, see <http://www.gnu.org/licenses/>. 219be8a82cSStrahinja Jankovic * 229be8a82cSStrahinja Jankovic */ 239be8a82cSStrahinja Jankovic 249be8a82cSStrahinja Jankovic #ifndef ALLWINNER_I2C_H 259be8a82cSStrahinja Jankovic #define ALLWINNER_I2C_H 269be8a82cSStrahinja Jankovic 279be8a82cSStrahinja Jankovic #include "hw/sysbus.h" 289be8a82cSStrahinja Jankovic #include "qom/object.h" 299be8a82cSStrahinja Jankovic 309be8a82cSStrahinja Jankovic #define TYPE_AW_I2C "allwinner.i2c" 31*8461bfdcSqianfan Zhao 32*8461bfdcSqianfan Zhao /** Allwinner I2C sun6i family and newer (A31, H2+, H3, etc) */ 33*8461bfdcSqianfan Zhao #define TYPE_AW_I2C_SUN6I TYPE_AW_I2C "-sun6i" 34*8461bfdcSqianfan Zhao 359be8a82cSStrahinja Jankovic OBJECT_DECLARE_SIMPLE_TYPE(AWI2CState, AW_I2C) 369be8a82cSStrahinja Jankovic 379be8a82cSStrahinja Jankovic #define AW_I2C_MEM_SIZE 0x24 389be8a82cSStrahinja Jankovic 399be8a82cSStrahinja Jankovic struct AWI2CState { 409be8a82cSStrahinja Jankovic /*< private >*/ 419be8a82cSStrahinja Jankovic SysBusDevice parent_obj; 429be8a82cSStrahinja Jankovic 439be8a82cSStrahinja Jankovic /*< public >*/ 449be8a82cSStrahinja Jankovic MemoryRegion iomem; 459be8a82cSStrahinja Jankovic I2CBus *bus; 469be8a82cSStrahinja Jankovic qemu_irq irq; 479be8a82cSStrahinja Jankovic 489be8a82cSStrahinja Jankovic uint8_t addr; 499be8a82cSStrahinja Jankovic uint8_t xaddr; 509be8a82cSStrahinja Jankovic uint8_t data; 519be8a82cSStrahinja Jankovic uint8_t cntr; 529be8a82cSStrahinja Jankovic uint8_t stat; 539be8a82cSStrahinja Jankovic uint8_t ccr; 549be8a82cSStrahinja Jankovic uint8_t srst; 559be8a82cSStrahinja Jankovic uint8_t efr; 569be8a82cSStrahinja Jankovic uint8_t lcr; 57*8461bfdcSqianfan Zhao 58*8461bfdcSqianfan Zhao bool irq_clear_inverted; 599be8a82cSStrahinja Jankovic }; 609be8a82cSStrahinja Jankovic 619be8a82cSStrahinja Jankovic #endif /* ALLWINNER_I2C_H */ 62