xref: /qemu/include/hw/i2c/allwinner-i2c.h (revision 8461bfdc)
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"
318461bfdcSqianfan Zhao 
328461bfdcSqianfan Zhao /** Allwinner I2C sun6i family and newer (A31, H2+, H3, etc) */
338461bfdcSqianfan Zhao #define TYPE_AW_I2C_SUN6I    TYPE_AW_I2C "-sun6i"
348461bfdcSqianfan 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;
578461bfdcSqianfan Zhao 
588461bfdcSqianfan Zhao     bool irq_clear_inverted;
599be8a82cSStrahinja Jankovic };
609be8a82cSStrahinja Jankovic 
619be8a82cSStrahinja Jankovic #endif /* ALLWINNER_I2C_H */
62