xref: /openbmc/qemu/include/hw/sh4/sh.h (revision fcf5ef2ab52c621a4617ebbef36bf43b4003f4c0)
10d09e41aSPaolo Bonzini #ifndef QEMU_SH_H
20d09e41aSPaolo Bonzini #define QEMU_SH_H
30d09e41aSPaolo Bonzini /* Definitions for SH board emulation.  */
40d09e41aSPaolo Bonzini 
50d09e41aSPaolo Bonzini #include "hw/sh4/sh_intc.h"
6*fcf5ef2aSThomas Huth #include "target/sh4/cpu-qom.h"
70d09e41aSPaolo Bonzini 
80d09e41aSPaolo Bonzini #define A7ADDR(x) ((x) & 0x1fffffff)
90d09e41aSPaolo Bonzini #define P4ADDR(x) ((x) | 0xe0000000)
100d09e41aSPaolo Bonzini 
110d09e41aSPaolo Bonzini /* sh7750.c */
120d09e41aSPaolo Bonzini struct SH7750State;
130d09e41aSPaolo Bonzini struct MemoryRegion;
140d09e41aSPaolo Bonzini 
152f493feeSAndreas Färber struct SH7750State *sh7750_init(SuperHCPU *cpu, struct MemoryRegion *sysmem);
160d09e41aSPaolo Bonzini 
170d09e41aSPaolo Bonzini typedef struct {
180d09e41aSPaolo Bonzini     /* The callback will be triggered if any of the designated lines change */
190d09e41aSPaolo Bonzini     uint16_t portamask_trigger;
200d09e41aSPaolo Bonzini     uint16_t portbmask_trigger;
210d09e41aSPaolo Bonzini     /* Return 0 if no action was taken */
220d09e41aSPaolo Bonzini     int (*port_change_cb) (uint16_t porta, uint16_t portb,
230d09e41aSPaolo Bonzini 			   uint16_t * periph_pdtra,
240d09e41aSPaolo Bonzini 			   uint16_t * periph_portdira,
250d09e41aSPaolo Bonzini 			   uint16_t * periph_pdtrb,
260d09e41aSPaolo Bonzini 			   uint16_t * periph_portdirb);
270d09e41aSPaolo Bonzini } sh7750_io_device;
280d09e41aSPaolo Bonzini 
290d09e41aSPaolo Bonzini int sh7750_register_io_device(struct SH7750State *s,
300d09e41aSPaolo Bonzini 			      sh7750_io_device * device);
310d09e41aSPaolo Bonzini /* sh_timer.c */
320d09e41aSPaolo Bonzini #define TMU012_FEAT_TOCR   (1 << 0)
330d09e41aSPaolo Bonzini #define TMU012_FEAT_3CHAN  (1 << 1)
340d09e41aSPaolo Bonzini #define TMU012_FEAT_EXTCLK (1 << 2)
350d09e41aSPaolo Bonzini void tmu012_init(struct MemoryRegion *sysmem, hwaddr base,
360d09e41aSPaolo Bonzini                  int feat, uint32_t freq,
370d09e41aSPaolo Bonzini 		 qemu_irq ch0_irq, qemu_irq ch1_irq,
380d09e41aSPaolo Bonzini 		 qemu_irq ch2_irq0, qemu_irq ch2_irq1);
390d09e41aSPaolo Bonzini 
400d09e41aSPaolo Bonzini 
410d09e41aSPaolo Bonzini /* sh_serial.c */
420d09e41aSPaolo Bonzini #define SH_SERIAL_FEAT_SCIF (1 << 0)
430d09e41aSPaolo Bonzini void sh_serial_init(MemoryRegion *sysmem,
440d09e41aSPaolo Bonzini                     hwaddr base, int feat,
450d09e41aSPaolo Bonzini 		     uint32_t freq, CharDriverState *chr,
460d09e41aSPaolo Bonzini 		     qemu_irq eri_source,
470d09e41aSPaolo Bonzini 		     qemu_irq rxi_source,
480d09e41aSPaolo Bonzini 		     qemu_irq txi_source,
490d09e41aSPaolo Bonzini 		     qemu_irq tei_source,
500d09e41aSPaolo Bonzini 		     qemu_irq bri_source);
510d09e41aSPaolo Bonzini 
520d09e41aSPaolo Bonzini /* sh7750.c */
530d09e41aSPaolo Bonzini qemu_irq sh7750_irl(struct SH7750State *s);
540d09e41aSPaolo Bonzini 
550d09e41aSPaolo Bonzini /* tc58128.c */
560d09e41aSPaolo Bonzini int tc58128_init(struct SH7750State *s, const char *zone1, const char *zone2);
570d09e41aSPaolo Bonzini 
580d09e41aSPaolo Bonzini #endif
59