* [Qemu-devel] [PATCH 1/3] r2d add pflash support @ 2009-04-26 16:36 Jean-Christophe PLAGNIOL-VILLARD 2009-04-26 16:36 ` [Qemu-devel] [PATCH 2/3] sh: SCI improvements Jean-Christophe PLAGNIOL-VILLARD 0 siblings, 1 reply; 6+ messages in thread From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-04-26 16:36 UTC (permalink / raw) To: qemu-devel; +Cc: Jean-Christophe PLAGNIOL-VILLARD Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> --- Makefile.target | 2 +- hw/r2d.c | 27 +++++++++++++++++++++------ hw/sh7750_regs.h | 12 ++++++++++++ 3 files changed, 34 insertions(+), 7 deletions(-) diff --git a/Makefile.target b/Makefile.target index ee0f74b..a2e20ec 100644 --- a/Makefile.target +++ b/Makefile.target @@ -681,7 +681,7 @@ endif ifeq ($(TARGET_BASE_ARCH), sh4) OBJS+= shix.o r2d.o sh7750.o sh7750_regnames.o tc58128.o OBJS+= sh_timer.o sh_serial.o sh_intc.o sh_pci.o sm501.o serial.o -OBJS+= ide.o +OBJS+= ide.o pflash_cfi02.o endif ifeq ($(TARGET_BASE_ARCH), m68k) OBJS+= an5206.o mcf5206.o mcf_uart.o mcf_intc.o mcf5208.o mcf_fec.o diff --git a/hw/r2d.c b/hw/r2d.c index 950576c..d1a2ccf 100644 --- a/hw/r2d.c +++ b/hw/r2d.c @@ -31,9 +31,11 @@ #include "pci.h" #include "net.h" #include "sh7750_regs.h" +#include "flash.h" -#define SDRAM_BASE 0x0c000000 /* Physical location of SDRAM: Area 3 */ -#define SDRAM_SIZE 0x04000000 +#define SDRAM_BASE SH7750_A3_BASE /* Physical location of SDRAM: Area 3 */ +#define SDRAM_SIZE 0x04000000 +#define FLASH_SIZE 0x02000000 #define SM501_VRAM_SIZE 0x800000 @@ -204,6 +206,7 @@ static void r2d_init(ram_addr_t ram_size, int vga_ram_size, qemu_irq *irq; PCIBus *pci; int i; + int index; if (!cpu_model) cpu_model = "SH7751R"; @@ -219,10 +222,10 @@ static void r2d_init(ram_addr_t ram_size, int vga_ram_size, cpu_register_physical_memory(SDRAM_BASE, SDRAM_SIZE, sdram_addr); /* Register peripherals */ s = sh7750_init(env); - irq = r2d_fpga_init(0x04000000, sh7750_irl(s)); + irq = r2d_fpga_init(SH7750_A1_BASE, sh7750_irl(s)); pci = sh_pci_register_bus(r2d_pci_set_irq, r2d_pci_map_irq, irq, 0, 4); - sm501_init(0x10000000, SM501_VRAM_SIZE, irq[SM501], serial_hds[2]); + sm501_init(SH7750_A4_BASE, SM501_VRAM_SIZE, irq[SM501], serial_hds[2]); /* onboard CF (True IDE mode, Master only). */ if ((i = drive_get_index(IF_IDE, 0, 0)) != -1) @@ -233,6 +236,18 @@ static void r2d_init(ram_addr_t ram_size, int vga_ram_size, for (i = 0; i < nb_nics; i++) pci_nic_init(pci, &nd_table[i], (i==0)? 2<<3: -1, "rtl8139"); + if ((index = drive_get_index(IF_PFLASH, 0, 0)) > -1) { + uint32_t sector_len = 128 * 1024; + + if (!pflash_cfi02_register(SH7750_A0_BASE, qemu_ram_alloc(FLASH_SIZE), + drives_table[index].bdrv, sector_len, FLASH_SIZE / sector_len, + 1, 4, 0, 0, 0, 0, 0, 0)) { + fprintf(stderr, "qemu: Error registering flash memory.\n"); + } else { + env->pc = SH7750_P2_BASE; + } + } + /* Todo: register on board registers */ if (kernel_filename) { int kernel_size; @@ -244,11 +259,11 @@ static void r2d_init(ram_addr_t ram_size, int vga_ram_size, kernel_size = load_image_targphys(kernel_filename, SDRAM_BASE + LINUX_LOAD_OFFSET, SDRAM_SIZE - LINUX_LOAD_OFFSET); - env->pc = (SDRAM_BASE + LINUX_LOAD_OFFSET) | 0xa0000000; + env->pc = (SDRAM_BASE + LINUX_LOAD_OFFSET) | SH7750_P2_BASE; pstrcpy_targphys(SDRAM_BASE + 0x10100, 256, kernel_cmdline); } else { kernel_size = load_image_targphys(kernel_filename, SDRAM_BASE, SDRAM_SIZE); - env->pc = SDRAM_BASE | 0xa0000000; /* Start from P2 area */ + env->pc = SDRAM_BASE | SH7750_P2_BASE; /* Start from P2 area */ } if (kernel_size < 0) { diff --git a/hw/sh7750_regs.h b/hw/sh7750_regs.h index 5a23a2c..1280fec 100644 --- a/hw/sh7750_regs.h +++ b/hw/sh7750_regs.h @@ -23,6 +23,7 @@ * All register has 2 addresses: in 0xff000000 - 0xffffffff (P4 address) and * in 0x1f000000 - 0x1fffffff (area 7 address) */ +#define SH7750_P2_BASE 0xa0000000 #define SH7750_P4_BASE 0xff000000 /* Accessable only in priveleged mode */ #define SH7750_A7_BASE 0x1f000000 /* Accessable only using TLB */ @@ -31,6 +32,17 @@ #define SH7750_A7_REG32(ofs) (SH7750_A7_BASE + (ofs)) /* + * External Memory Space + */ +#define SH7750_A0_BASE 0x00000000 +#define SH7750_A1_BASE 0x04000000 +#define SH7750_A2_BASE 0x08000000 +#define SH7750_A3_BASE 0x0C000000 +#define SH7750_A4_BASE 0x10000000 +#define SH7750_A5_BASE 0x14000000 +#define SH7750_A6_BASE 0x18000000 + +/* * MMU Registers */ -- 1.6.2.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH 2/3] sh: SCI improvements 2009-04-26 16:36 [Qemu-devel] [PATCH 1/3] r2d add pflash support Jean-Christophe PLAGNIOL-VILLARD @ 2009-04-26 16:36 ` Jean-Christophe PLAGNIOL-VILLARD 2009-04-26 16:36 ` [Qemu-devel] [PATCH 3/3] sh/serial: allow cpu regs definition Jean-Christophe PLAGNIOL-VILLARD 2009-04-30 2:10 ` [Qemu-devel] Re: [PATCH 2/3] sh: SCI improvements Shin-ichiro KAWASAKI 0 siblings, 2 replies; 6+ messages in thread From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-04-26 16:36 UTC (permalink / raw) To: qemu-devel; +Cc: Shin-ichiro KAWASAKI From: Shin-ichiro KAWASAKI <kawasaki@juno.dti.ne.jp> SE7750 uses SCI := Serial Communication Interface for one of consoles. This patch completes the SCI implementation, and makes SCI available for a console. # Tabs and spaces are mixed in "hw/sh_serial.c" so much. # Some clean up might be useful. Signed-off-by: Shin-ichiro KAWASAKI <kawasaki@juno.dti.ne.jp> --- hw/sh_serial.c | 92 ++++++++++++++++++++++++++++++++----------------------- 1 files changed, 53 insertions(+), 39 deletions(-) diff --git a/hw/sh_serial.c b/hw/sh_serial.c index 4957c41..c3eb146 100644 --- a/hw/sh_serial.c +++ b/hw/sh_serial.c @@ -96,7 +96,7 @@ static void sh_serial_ioport_write(void *opaque, uint32_t offs, uint32_t val) s->scr = val & ((s->feat & SH_SERIAL_FEAT_SCIF) ? 0xfa : 0xff); if (!(val & (1 << 5))) s->flags |= SH_SERIAL_FLAG_TEND; - if ((s->feat & SH_SERIAL_FEAT_SCIF) && s->txi) { + if (s->txi) { qemu_set_irq(s->txi, val & (1 << 7)); } if (!(val & (1 << 6))) { @@ -109,13 +109,15 @@ static void sh_serial_ioport_write(void *opaque, uint32_t offs, uint32_t val) qemu_chr_write(s->chr, &ch, 1); } s->dr = val; - s->flags &= ~SH_SERIAL_FLAG_TDE; + if (s->feat & SH_SERIAL_FEAT_SCIF) + s->flags &= ~SH_SERIAL_FLAG_TDE; + else + s->flags |= SH_SERIAL_FLAG_TDE; return; -#if 0 case 0x14: /* FRDR / RDR */ - ret = 0; + /* do nothing */ + return; break; -#endif } if (s->feat & SH_SERIAL_FEAT_SCIF) { switch(offs) { @@ -165,17 +167,33 @@ static void sh_serial_ioport_write(void *opaque, uint32_t offs, uint32_t val) case 0x24: /* LSR */ return; } - } - else { + } else { /* SCI */ switch(offs) { -#if 0 - case 0x0c: - ret = s->dr; - break; - case 0x10: - ret = 0; - break; -#endif + case 0x0c: /* TDR */ + if (s->chr) { + ch = val; + qemu_chr_write(s->chr, &ch, 1); + } + s->dr = val; + s->flags |= SH_SERIAL_FLAG_TDE | SH_SERIAL_FLAG_TEND; + if (s->scr & (1 << 7) && s->txi) { + qemu_set_irq(s->txi, 1); + } + return; + case 0x10: /* SSR */ + /* + * Ignore TDRE (1 << 7) bit because TDR is always + * writable in this SCI emulation. + */ + if (!(val & (1 << 6))) { + s->flags &= ~SH_SERIAL_FLAG_RDF; + } + if (!(val & (1 << 6))) { + if (s->rxi) { + qemu_set_irq(s->rxi, 0); + } + } + return; case 0x1c: s->sptr = val & 0x8f; return; @@ -191,30 +209,19 @@ static uint32_t sh_serial_ioport_read(void *opaque, uint32_t offs) sh_serial_state *s = opaque; uint32_t ret = ~0; -#if 0 switch(offs) { - case 0x00: + case 0x00: /* SMR */ ret = s->smr; break; - case 0x04: + case 0x04: /* BRR */ ret = s->brr; break; - case 0x08: + case 0x08: /* SCR */ ret = s->scr; break; - case 0x14: - ret = 0; - break; } -#endif if (s->feat & SH_SERIAL_FEAT_SCIF) { switch(offs) { - case 0x00: /* SMR */ - ret = s->smr; - break; - case 0x08: /* SCR */ - ret = s->scr; - break; case 0x10: /* FSR */ ret = 0; if (s->flags & SH_SERIAL_FLAG_TEND) @@ -242,11 +249,9 @@ static uint32_t sh_serial_ioport_read(void *opaque, uint32_t offs) s->flags &= ~SH_SERIAL_FLAG_RDF; } break; -#if 0 case 0x18: ret = s->fcr; break; -#endif case 0x1c: ret = s->rx_cnt; break; @@ -257,21 +262,26 @@ static uint32_t sh_serial_ioport_read(void *opaque, uint32_t offs) ret = 0; break; } - } - else { + } else { switch(offs) { -#if 0 - case 0x0c: + case 0x0c: /* TDR */ ret = s->dr; break; - case 0x10: + case 0x10: /* SSR */ ret = 0; + if (s->flags & SH_SERIAL_FLAG_TDE) + ret |= (1 << 7); + if (s->flags & SH_SERIAL_FLAG_RDF) + ret |= (1 << 6); + if (s->flags & SH_SERIAL_FLAG_TEND) + ret |= (1 << 2); + /* TODO : handle bit MPBT */ break; - case 0x14: + case 0x14: /* RDR */ ret = s->rx_fifo[0]; + s->flags &= ~SH_SERIAL_FLAG_RDF; break; -#endif - case 0x1c: + case 0x1c: /* SPTR */ ret = s->sptr; break; } @@ -311,6 +321,10 @@ static void sh_serial_receive_byte(sh_serial_state *s, int ch) } } else { s->rx_fifo[0] = ch; + s->flags |= SH_SERIAL_FLAG_RDF; + if (s->scr & (1 << 6) && s->rxi) { + qemu_set_irq(s->rxi, 1); + } } } -- 1.6.2.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH 3/3] sh/serial: allow cpu regs definition 2009-04-26 16:36 ` [Qemu-devel] [PATCH 2/3] sh: SCI improvements Jean-Christophe PLAGNIOL-VILLARD @ 2009-04-26 16:36 ` Jean-Christophe PLAGNIOL-VILLARD 2009-04-26 21:10 ` [Qemu-devel] [PATCH 1/1] r2dplus: add cfi flash support and enable it Jean-Christophe PLAGNIOL-VILLARD 2009-04-26 21:48 ` [Qemu-devel] [PATCH] sh/r2d: add default pflash file support Jean-Christophe PLAGNIOL-VILLARD 2009-04-30 2:10 ` [Qemu-devel] Re: [PATCH 2/3] sh: SCI improvements Shin-ichiro KAWASAKI 1 sibling, 2 replies; 6+ messages in thread From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-04-26 16:36 UTC (permalink / raw) To: qemu-devel; +Cc: Jean-Christophe PLAGNIOL-VILLARD sh_serial_regs will allow to define the SCI/SCIF cpu regs need to add SH cpu other than sh7750 Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> --- hw/sh.h | 2 + hw/sh7750.c | 30 +++++++++++++++++++- hw/sh_serial.c | 86 ++++++++++++++++++++++++++----------------------------- hw/sh_serial.h | 42 +++++++++++++++++++++++++++ 4 files changed, 114 insertions(+), 46 deletions(-) create mode 100644 hw/sh_serial.h diff --git a/hw/sh.h b/hw/sh.h index 5e3c22b..c92fa8c 100644 --- a/hw/sh.h +++ b/hw/sh.h @@ -3,6 +3,7 @@ /* Definitions for SH board emulation. */ #include "sh_intc.h" +#include "sh_serial.h" #define A7ADDR(x) ((x) & 0x1fffffff) #define P4ADDR(x) ((x) | 0xe0000000) @@ -38,6 +39,7 @@ void tmu012_init(target_phys_addr_t base, int feat, uint32_t freq, /* sh_serial.c */ #define SH_SERIAL_FEAT_SCIF (1 << 0) void sh_serial_init (target_phys_addr_t base, int feat, + sh_serial_regs *regs, uint32_t freq, CharDriverState *chr, qemu_irq eri_source, qemu_irq rxi_source, diff --git a/hw/sh7750.c b/hw/sh7750.c index 423c43f..a43551d 100644 --- a/hw/sh7750.c +++ b/hw/sh7750.c @@ -30,6 +30,7 @@ #include "sh7750_regs.h" #include "sh7750_regnames.h" #include "sh_intc.h" +#include "sh_serial.h" #include "exec-all.h" #include "cpu.h" @@ -701,6 +702,31 @@ static CPUWriteMemoryFunc *sh7750_mmct_write[] = { sh7750_mmct_writel }; +sh_serial_regs sh7750_sci = { + .scsmr = 0x0, + .scbrr = 0x4, + .scscr = 0x8, + .scftdr = 0xc, /* AS TDR for SCI */ + .scfsr = 0x10, /* AS SSR for SCI */ + .scfrdr = 0x14, /* AS RDR for SCI */ + .scscmr = 0x18, + .scsptr = 0x1c, +}; + +sh_serial_regs sh7750_scif = { + .scsmr = 0x0, + .scbrr = 0x4, + .scscr = 0x8, + .scftdr = 0xc, + .scfsr = 0x10, + .scfrdr = 0x14, + .scfcr = 0x18, + .scfdr = 0x1c, + .scsptr = 0x20, + .sclsr = 0x24, +}; + + SH7750State *sh7750_init(CPUSH4State * cpu) { SH7750State *s; @@ -742,13 +768,15 @@ SH7750State *sh7750_init(CPUSH4State * cpu) cpu->intc_handle = &s->intc; - sh_serial_init(0x1fe00000, 0, s->periph_freq, serial_hds[0], + sh_serial_init(0x1fe00000, 0, &sh7750_sci, + s->periph_freq, serial_hds[0], s->intc.irqs[SCI1_ERI], s->intc.irqs[SCI1_RXI], s->intc.irqs[SCI1_TXI], s->intc.irqs[SCI1_TEI], NULL); sh_serial_init(0x1fe80000, SH_SERIAL_FEAT_SCIF, + &sh7750_scif, s->periph_freq, serial_hds[1], s->intc.irqs[SCIF_ERI], s->intc.irqs[SCIF_RXI], diff --git a/hw/sh_serial.c b/hw/sh_serial.c index c3eb146..7abbc49 100644 --- a/hw/sh_serial.c +++ b/hw/sh_serial.c @@ -26,6 +26,7 @@ */ #include "hw.h" #include "sh.h" +#include "sh_serial.h" #include "qemu-char.h" #include <assert.h> @@ -65,6 +66,8 @@ typedef struct { qemu_irq txi; qemu_irq tei; qemu_irq bri; + + sh_serial_regs *regs; } sh_serial_state; static void sh_serial_clear_fifo(sh_serial_state * s) @@ -78,20 +81,22 @@ static void sh_serial_clear_fifo(sh_serial_state * s) static void sh_serial_ioport_write(void *opaque, uint32_t offs, uint32_t val) { sh_serial_state *s = opaque; + sh_serial_regs *regs = s->regs; unsigned char ch; #ifdef DEBUG_SERIAL printf("sh_serial: write offs=0x%02x val=0x%02x\n", offs, val); #endif - switch(offs) { - case 0x00: /* SMR */ + if (offs == regs->scsmr) { /* SMR */ s->smr = val & ((s->feat & SH_SERIAL_FEAT_SCIF) ? 0x7b : 0xff); return; - case 0x04: /* BRR */ + } + if (offs == regs->scbrr) { /* BRR */ s->brr = val; return; - case 0x08: /* SCR */ + } + if (offs == regs->scscr) { /* SCR */ /* TODO : For SH7751, SCIF mask should be 0xfb. */ s->scr = val & ((s->feat & SH_SERIAL_FEAT_SCIF) ? 0xfa : 0xff); if (!(val & (1 << 5))) @@ -103,7 +108,8 @@ static void sh_serial_ioport_write(void *opaque, uint32_t offs, uint32_t val) qemu_set_irq(s->rxi, 0); } return; - case 0x0c: /* FTDR / TDR */ + } + if (offs == regs->scftdr) { /* FTDR / TDR */ if (s->chr) { ch = val; qemu_chr_write(s->chr, &ch, 1); @@ -114,14 +120,13 @@ static void sh_serial_ioport_write(void *opaque, uint32_t offs, uint32_t val) else s->flags |= SH_SERIAL_FLAG_TDE; return; - case 0x14: /* FRDR / RDR */ + } + if (offs == regs->scfrdr) { /* FRDR / RDR */ /* do nothing */ return; - break; } if (s->feat & SH_SERIAL_FEAT_SCIF) { - switch(offs) { - case 0x10: /* FSR */ + if (offs == regs->scfsr) { /* FSR */ if (!(val & (1 << 6))) s->flags &= ~SH_SERIAL_FLAG_TEND; if (!(val & (1 << 5))) @@ -139,7 +144,8 @@ static void sh_serial_ioport_write(void *opaque, uint32_t offs, uint32_t val) } } return; - case 0x18: /* FCR */ + } + if (offs == regs->scfcr) { /* FCR */ s->fcr = val; switch ((val >> 6) & 3) { case 0: @@ -161,15 +167,16 @@ static void sh_serial_ioport_write(void *opaque, uint32_t offs, uint32_t val) } return; - case 0x20: /* SPTR */ + } + if (offs == regs->scsptr) { /* SPTR */ s->sptr = val & 0xf3; return; - case 0x24: /* LSR */ + } + if (offs == regs->sclsr) { /* LSR */ return; } } else { /* SCI */ - switch(offs) { - case 0x0c: /* TDR */ + if (offs == regs->scftdr) { /* TDR */ if (s->chr) { ch = val; qemu_chr_write(s->chr, &ch, 1); @@ -180,7 +187,8 @@ static void sh_serial_ioport_write(void *opaque, uint32_t offs, uint32_t val) qemu_set_irq(s->txi, 1); } return; - case 0x10: /* SSR */ + } + if (offs == regs->scfsr) { /* SSR */ /* * Ignore TDRE (1 << 7) bit because TDR is always * writable in this SCI emulation. @@ -194,7 +202,8 @@ static void sh_serial_ioport_write(void *opaque, uint32_t offs, uint32_t val) } } return; - case 0x1c: + } + if (offs == regs->scsptr) { s->sptr = val & 0x8f; return; } @@ -207,22 +216,18 @@ static void sh_serial_ioport_write(void *opaque, uint32_t offs, uint32_t val) static uint32_t sh_serial_ioport_read(void *opaque, uint32_t offs) { sh_serial_state *s = opaque; + sh_serial_regs *regs = s->regs; uint32_t ret = ~0; - switch(offs) { - case 0x00: /* SMR */ + if (offs == regs->scsmr) { /* SMR */ ret = s->smr; - break; - case 0x04: /* BRR */ + } else if (offs == regs->scbrr) { /* BRR */ ret = s->brr; - break; - case 0x08: /* SCR */ + } else if (offs == regs->scscr) { /* SCR */ ret = s->scr; - break; } if (s->feat & SH_SERIAL_FEAT_SCIF) { - switch(offs) { - case 0x10: /* FSR */ + if (offs == regs->scfsr) { /* FSR */ ret = 0; if (s->flags & SH_SERIAL_FLAG_TEND) ret |= (1 << 6); @@ -238,8 +243,7 @@ static uint32_t sh_serial_ioport_read(void *opaque, uint32_t offs) if (s->scr & (1 << 5)) s->flags |= SH_SERIAL_FLAG_TDE | SH_SERIAL_FLAG_TEND; - break; - case 0x14: + } else if (offs == regs->scfrdr) { if (s->rx_cnt > 0) { ret = s->rx_fifo[s->rx_tail++]; s->rx_cnt--; @@ -248,26 +252,19 @@ static uint32_t sh_serial_ioport_read(void *opaque, uint32_t offs) if (s->rx_cnt < s->rtrg) s->flags &= ~SH_SERIAL_FLAG_RDF; } - break; - case 0x18: + } else if (offs == regs->scfcr) { ret = s->fcr; - break; - case 0x1c: + } else if (offs == regs->scfdr) { ret = s->rx_cnt; - break; - case 0x20: + } else if (offs == regs->scsptr) { ret = s->sptr; - break; - case 0x24: + } else if (offs == regs->sclsr) { ret = 0; - break; } } else { - switch(offs) { - case 0x0c: /* TDR */ + if (offs == regs->scftdr) { /* TDR */ ret = s->dr; - break; - case 0x10: /* SSR */ + } else if (offs == regs->scfsr) { /* SSR */ ret = 0; if (s->flags & SH_SERIAL_FLAG_TDE) ret |= (1 << 7); @@ -276,14 +273,11 @@ static uint32_t sh_serial_ioport_read(void *opaque, uint32_t offs) if (s->flags & SH_SERIAL_FLAG_TEND) ret |= (1 << 2); /* TODO : handle bit MPBT */ - break; - case 0x14: /* RDR */ + } else if (offs == regs->scfrdr) { /* RDR */ ret = s->rx_fifo[0]; s->flags &= ~SH_SERIAL_FLAG_RDF; - break; - case 0x1c: /* SPTR */ + } else if (offs == regs->scsptr) { /* PTR */ ret = s->sptr; - break; } } #ifdef DEBUG_SERIAL @@ -379,6 +373,7 @@ static CPUWriteMemoryFunc *sh_serial_writefn[] = { }; void sh_serial_init (target_phys_addr_t base, int feat, + sh_serial_regs *regs, uint32_t freq, CharDriverState *chr, qemu_irq eri_source, qemu_irq rxi_source, @@ -392,6 +387,7 @@ void sh_serial_init (target_phys_addr_t base, int feat, s = qemu_mallocz(sizeof(sh_serial_state)); s->feat = feat; + s->regs = regs; s->flags = SH_SERIAL_FLAG_TEND | SH_SERIAL_FLAG_TDE; s->rtrg = 1; diff --git a/hw/sh_serial.h b/hw/sh_serial.h new file mode 100644 index 0000000..dc27ce9 --- /dev/null +++ b/hw/sh_serial.h @@ -0,0 +1,42 @@ +/* + * QEMU SH serial port emulation + * + * Copyright (c) 2009 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef __SH_SERIAL_H__ +#define __SH_SERIAL_H__ + +typedef struct sh_serial_regs { + uint16_t scsmr; + uint16_t scbrr; + uint16_t scscr; + uint16_t scftdr; /* AS TDR for SCI */ + uint16_t scfsr; /* AS SSR for SCI */ + uint16_t scfrdr; /* AS RDR for SCI */ + uint16_t scfcr; /* SCIF only */ + uint16_t scfdr; /* SCIF only */ + uint16_t scsptr; + uint16_t scscmr; /* SCI only */ + uint16_t sclsr; /* SCIF only */ +} sh_serial_regs; + +#endif /* __SH_SERIAL_H__ */ -- 1.6.2.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH 1/1] r2dplus: add cfi flash support and enable it 2009-04-26 16:36 ` [Qemu-devel] [PATCH 3/3] sh/serial: allow cpu regs definition Jean-Christophe PLAGNIOL-VILLARD @ 2009-04-26 21:10 ` Jean-Christophe PLAGNIOL-VILLARD 2009-04-26 21:48 ` [Qemu-devel] [PATCH] sh/r2d: add default pflash file support Jean-Christophe PLAGNIOL-VILLARD 1 sibling, 0 replies; 6+ messages in thread From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-04-26 21:10 UTC (permalink / raw) To: qemu-devel; +Cc: Jean-Christophe PLAGNIOL-VILLARD Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> --- arch/sh/boards/mach-r2d/setup.c | 49 ++++++++++++++++ arch/sh/configs/rts7751r2dplus_defconfig | 91 +++++++++++++++++++++++++++++- 2 files changed, 137 insertions(+), 3 deletions(-) diff --git a/arch/sh/boards/mach-r2d/setup.c b/arch/sh/boards/mach-r2d/setup.c index c585be0..1582d4e 100644 --- a/arch/sh/boards/mach-r2d/setup.c +++ b/arch/sh/boards/mach-r2d/setup.c @@ -10,6 +10,10 @@ */ #include <linux/init.h> #include <linux/platform_device.h> +#include <linux/mtd/mtd.h> +#include <linux/mtd/partitions.h> +#include <linux/mtd/physmap.h> +#include <linux/mtd/map.h> #include <linux/ata_platform.h> #include <linux/sm501.h> #include <linux/sm501-regs.h> @@ -181,10 +185,55 @@ static struct platform_device sm501_device = { .resource = sm501_resources, }; +static struct mtd_partition r2d_partitions[] = { + { + .name = "U-Boot", + .offset = 0x00000000, + .size = 0x00040000, + .mask_flags = MTD_WRITEABLE, + }, { + .name = "Environment", + .offset = MTDPART_OFS_NXTBLK, + .size = 0x00040000, + .mask_flags = MTD_WRITEABLE, + }, { + .name = "Kernel", + .offset = MTDPART_OFS_NXTBLK, + .size = 0x001c0000, + }, { + .name = "Flash_FS", + .offset = MTDPART_OFS_NXTBLK, + .size = MTDPART_SIZ_FULL, + } +}; + +static struct physmap_flash_data flash_data = { + .width = 2, + .nr_parts = ARRAY_SIZE(r2d_partitions), + .parts = r2d_partitions, +}; + +static struct resource flash_resource = { + .start = 0x00000000, + .end = 0x02000000, + .flags = IORESOURCE_MEM, +}; + +static struct platform_device flash_device = { + .name = "physmap-flash", + .id = -1, + .resource = &flash_resource, + .num_resources = 1, + .dev = { + .platform_data = &flash_data, + }, +}; + static struct platform_device *rts7751r2d_devices[] __initdata = { &sm501_device, &heartbeat_device, &spi_sh_sci_device, + &flash_device, }; /* diff --git a/arch/sh/configs/rts7751r2dplus_defconfig b/arch/sh/configs/rts7751r2dplus_defconfig index 8feef62..4f7fa32 100644 --- a/arch/sh/configs/rts7751r2dplus_defconfig +++ b/arch/sh/configs/rts7751r2dplus_defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.29 -# Thu Apr 2 18:34:12 2009 +# Linux kernel version: 2.6.30-rc3 +# Sun Apr 26 17:56:14 2009 # CONFIG_SUPERH=y CONFIG_SUPERH32=y @@ -424,7 +424,92 @@ CONFIG_FIRMWARE_IN_KERNEL=y CONFIG_EXTRA_FIRMWARE="" # CONFIG_SYS_HYPERVISOR is not set # CONFIG_CONNECTOR is not set -# CONFIG_MTD is not set +CONFIG_MTD=y +# CONFIG_MTD_DEBUG is not set +CONFIG_MTD_CONCAT=y +CONFIG_MTD_PARTITIONS=y +# CONFIG_MTD_TESTS is not set +# CONFIG_MTD_REDBOOT_PARTS is not set +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_AR7_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=y +# CONFIG_MTD_BLKDEVS is not set +# CONFIG_MTD_BLOCK is not set +# CONFIG_MTD_BLOCK_RO is not set +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_MTD_OOPS is not set + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=y +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_GEN_PROBE=y +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +# CONFIG_MTD_CFI_INTELEXT is not set +CONFIG_MTD_CFI_AMDSTD=y +# CONFIG_MTD_CFI_STAA is not set +CONFIG_MTD_CFI_UTIL=y +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +CONFIG_MTD_PHYSMAP=y +# CONFIG_MTD_PHYSMAP_COMPAT is not set +# CONFIG_MTD_INTEL_VR_NOR is not set +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_DATAFLASH is not set +# CONFIG_MTD_M25P80 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOC2001PLUS is not set +# CONFIG_MTD_NAND is not set +# CONFIG_MTD_ONENAND is not set + +# +# LPDDR flash memory drivers +# +# CONFIG_MTD_LPDDR is not set + +# +# UBI - Unsorted block images +# +# CONFIG_MTD_UBI is not set # CONFIG_PARPORT is not set CONFIG_BLK_DEV=y # CONFIG_BLK_CPQ_CISS_DA is not set -- 1.6.1.3 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] [PATCH] sh/r2d: add default pflash file support 2009-04-26 16:36 ` [Qemu-devel] [PATCH 3/3] sh/serial: allow cpu regs definition Jean-Christophe PLAGNIOL-VILLARD 2009-04-26 21:10 ` [Qemu-devel] [PATCH 1/1] r2dplus: add cfi flash support and enable it Jean-Christophe PLAGNIOL-VILLARD @ 2009-04-26 21:48 ` Jean-Christophe PLAGNIOL-VILLARD 1 sibling, 0 replies; 6+ messages in thread From: Jean-Christophe PLAGNIOL-VILLARD @ 2009-04-26 21:48 UTC (permalink / raw) To: qemu-devel; +Cc: Jean-Christophe PLAGNIOL-VILLARD the default flash file containt the last U-Boot release : 2009.03 it's store compressed (gzip) as it's a dump of a 32MB CFI Flash and will be uncompressed at the install Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> --- Makefile | 13 +++++++++++++ configure | 14 ++++++++++++++ hw/r2d.c | 26 +++++++++++++++++--------- pc-bios/r2d-flash.bin.gz | Bin 0 -> 106561 bytes sysemu.h | 7 +++++++ vl.c | 7 ------- 6 files changed, 51 insertions(+), 16 deletions(-) create mode 100644 pc-bios/r2d-flash.bin.gz diff --git a/Makefile b/Makefile index 0f40cda..d9b81e6 100644 --- a/Makefile +++ b/Makefile @@ -259,6 +259,12 @@ else BLOBS= endif +ifdef INSTALL_COMPRESSED_PFLASHS +PFLASHS=r2d-flash.bin.gz +else +PFLASHS= +endif + install-doc: $(DOCS) $(INSTALL_DIR) "$(DESTDIR)$(docdir)" $(INSTALL_DATA) qemu-doc.html qemu-tech.html "$(DESTDIR)$(docdir)" @@ -280,6 +286,13 @@ ifneq ($(BLOBS),) $(INSTALL_DATA) $(SRC_PATH)/pc-bios/$$x "$(DESTDIR)$(datadir)"; \ done endif +ifneq ($(PFLASHS),) + $(INSTALL_DIR) "$(DESTDIR)$(datadir)" + set -e; for x in $(PFLASHS); do \ + $(INSTALL_DATA) $(SRC_PATH)/pc-bios/$$x "$(DESTDIR)$(datadir)"; \ + $(GUNZIP) "$(DESTDIR)$(datadir)/$$x"; \ + done +endif ifndef CONFIG_WIN32 $(INSTALL_DIR) "$(DESTDIR)$(datadir)/keymaps" set -e; for x in $(KEYMAPS); do \ diff --git a/configure b/configure index 2f4ccfb..8468083 100755 --- a/configure +++ b/configure @@ -33,6 +33,7 @@ host_cc="gcc" ar="ar" make="make" install="install" +gunzip="gunzip" strip="strip" # parse CC options first @@ -191,6 +192,7 @@ kvm="yes" kerneldir="" aix="no" blobs="yes" +flashs="yes" fdt="yes" sdl_x11="no" xen="yes" @@ -380,6 +382,8 @@ for opt do ;; --install=*) install="$optarg" ;; + --gunzip=*) gunzip="$optarg" + ;; --extra-cflags=*) CFLAGS="$optarg" ;; --extra-ldflags=*) LDFLAGS="$optarg" @@ -489,6 +493,8 @@ for opt do ;; --disable-blobs) blobs="no" ;; + --disable-flashs) flashs="no" + ;; --kerneldir=*) kerneldir="$optarg" ;; --with-pkgversion=*) pkgversion=" ($optarg)" @@ -581,6 +587,7 @@ echo " --extra-cflags=CFLAGS add C compiler flags CFLAGS" echo " --extra-ldflags=LDFLAGS add linker flags LDFLAGS" echo " --make=MAKE use specified make [$make]" echo " --install=INSTALL use specified install [$install]" +echo " --gunzip=GUNZIP use specified gunzip [$gunzip]" echo " --static enable static build [$static]" echo " --enable-debug-tcg enable TCG debugging" echo " --disable-debug-tcg disable TCG debugging (default)" @@ -621,6 +628,7 @@ echo " --disable-pthread disable pthread support" echo " --disable-aio disable AIO support" echo " --enable-io-thread enable IO thread" echo " --disable-blobs disable installing provided firmware blobs" +echo " --disable-pflafhs disable installing provided firmware flashs" echo " --kerneldir=PATH look for kernel includes in PATH" echo "" echo "NOTE: The object files are built at the place where configure is launched" @@ -1293,6 +1301,7 @@ echo "Host C compiler $host_cc" echo "ARCH_CFLAGS $ARCH_CFLAGS" echo "make $make" echo "install $install" +echo "gunzip $gunzip" echo "host CPU $cpu" echo "host big endian $bigendian" echo "target list $target_list" @@ -1339,6 +1348,7 @@ echo "vde support $vde" echo "AIO support $aio" echo "IO thread $io_thread" echo "Install blobs $blobs" +echo "Install flashs $flashs" echo "KVM support $kvm" echo "fdt support $fdt" echo "preadv support $preadv" @@ -1377,6 +1387,7 @@ echo "INSTALL=$install" >> $config_mak echo "INSTALL_DIR=$install -d -m0755 -p" >> $config_mak echo "INSTALL_DATA=$install -m0644 -p" >> $config_mak echo "INSTALL_PROG=$install -m0755 -p" >> $config_mak +echo "GUNZIP=$gunzip" >> $config_mak echo "CC=$cc" >> $config_mak echo "HOST_CC=$host_cc" >> $config_mak echo "AR=$ar" >> $config_mak @@ -1662,6 +1673,9 @@ fi if test "$blobs" = "yes" ; then echo "INSTALL_BLOBS=yes" >> $config_mak fi +if test "$flashs" = "yes" ; then + echo "INSTALL_COMPRESSED_PFLASHS=yes" >> $config_mak +fi if test "$iovec" = "yes" ; then echo "#define HAVE_IOVEC 1" >> $config_h fi diff --git a/hw/r2d.c b/hw/r2d.c index d1a2ccf..ba2b68f 100644 --- a/hw/r2d.c +++ b/hw/r2d.c @@ -33,6 +33,8 @@ #include "sh7750_regs.h" #include "flash.h" +#define DEFAULT_PFLASH "r2d-flash.bin" + #define SDRAM_BASE SH7750_A3_BASE /* Physical location of SDRAM: Area 3 */ #define SDRAM_SIZE 0x04000000 #define FLASH_SIZE 0x02000000 @@ -207,6 +209,7 @@ static void r2d_init(ram_addr_t ram_size, int vga_ram_size, PCIBus *pci; int i; int index; + uint32_t sector_len = 128 * 1024; if (!cpu_model) cpu_model = "SH7751R"; @@ -236,16 +239,21 @@ static void r2d_init(ram_addr_t ram_size, int vga_ram_size, for (i = 0; i < nb_nics; i++) pci_nic_init(pci, &nd_table[i], (i==0)? 2<<3: -1, "rtl8139"); - if ((index = drive_get_index(IF_PFLASH, 0, 0)) > -1) { - uint32_t sector_len = 128 * 1024; + if ((index = drive_get_index(IF_PFLASH, 0, 0)) < 0) { + char buf[1024]; - if (!pflash_cfi02_register(SH7750_A0_BASE, qemu_ram_alloc(FLASH_SIZE), - drives_table[index].bdrv, sector_len, FLASH_SIZE / sector_len, - 1, 4, 0, 0, 0, 0, 0, 0)) { - fprintf(stderr, "qemu: Error registering flash memory.\n"); - } else { - env->pc = SH7750_P2_BASE; - } + snprintf(buf, sizeof(buf), "%s/%s", bios_dir, DEFAULT_PFLASH); + fprintf(stderr, "use default pflash : '%s'\n", buf); + index = drive_add(buf, PFLASH_ALIAS); + drive_init(&drives_opt[index], 0, &r2d_machine); + index = drive_get_index(IF_PFLASH, 0, 0); + } + if (index > -1 && !pflash_cfi02_register(SH7750_A0_BASE, qemu_ram_alloc(FLASH_SIZE), + drives_table[index].bdrv, sector_len, FLASH_SIZE / sector_len, + 1, 4, 0, 0, 0, 0, 0, 0)) { + fprintf(stderr, "qemu: Error registering flash memory.\n"); + } else { + env->pc = SH7750_P2_BASE; } /* Todo: register on board registers */ diff --git a/pc-bios/r2d-flash.bin.gz b/pc-bios/r2d-flash.bin.gz new file mode 100644 index 0000000000000000000000000000000000000000..3021e3c116deec1f8424db077d47e29332e8b0f7 GIT binary patch literal 106561 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≈L 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 J`8TNt{|~hrxR3w< literal 0 HcmV?d00001 diff --git a/sysemu.h b/sysemu.h index 50438a6..c76aeef 100644 --- a/sysemu.h +++ b/sysemu.h @@ -131,6 +131,13 @@ extern unsigned int nb_prom_envs; #define BIOS_SIZE (4 * 1024 * 1024) #endif +#define HD_ALIAS "index=%d,media=disk" +#define CDROM_ALIAS "index=2,media=cdrom" +#define FD_ALIAS "index=%d,if=floppy" +#define PFLASH_ALIAS "if=pflash" +#define MTD_ALIAS "if=mtd" +#define SD_ALIAS "index=0,if=sd" + typedef enum { IF_IDE, IF_SCSI, IF_FLOPPY, IF_PFLASH, IF_MTD, IF_SD, IF_VIRTIO, IF_XEN } BlockInterfaceType; diff --git a/vl.c b/vl.c index e4d2887..f1cab0c 100644 --- a/vl.c +++ b/vl.c @@ -2085,13 +2085,6 @@ static int bt_parse(const char *opt) /***********************************************************/ /* QEMU Block devices */ -#define HD_ALIAS "index=%d,media=disk" -#define CDROM_ALIAS "index=2,media=cdrom" -#define FD_ALIAS "index=%d,if=floppy" -#define PFLASH_ALIAS "if=pflash" -#define MTD_ALIAS "if=mtd" -#define SD_ALIAS "index=0,if=sd" - static int drive_opt_get_free_idx(void) { int index; -- 1.6.1.3 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] Re: [PATCH 2/3] sh: SCI improvements 2009-04-26 16:36 ` [Qemu-devel] [PATCH 2/3] sh: SCI improvements Jean-Christophe PLAGNIOL-VILLARD 2009-04-26 16:36 ` [Qemu-devel] [PATCH 3/3] sh/serial: allow cpu regs definition Jean-Christophe PLAGNIOL-VILLARD @ 2009-04-30 2:10 ` Shin-ichiro KAWASAKI 1 sibling, 0 replies; 6+ messages in thread From: Shin-ichiro KAWASAKI @ 2009-04-30 2:10 UTC (permalink / raw) To: Jean-Christophe PLAGNIOL-VILLARD, qemu-devel Hi, Jean. I guess this patch conflicts with Vladimir's patch, which is almost ready for merge. http://lists.gnu.org/archive/html/qemu-devel/2009-04/msg01110.html Revise and repost are necessary. I suggest you not to expect whole this patch to be applied. How about making it smaller? I think the following part will be enough for the purpose to run u-boot on qemu-sh. Could you try it? > @@ -242,11 +249,9 @@ static uint32_t sh_serial_ioport_read(void *opaque, uint32_t offs) > s->flags &= ~SH_SERIAL_FLAG_RDF; > } > break; > -#if 0 > case 0x18: > ret = s->fcr; > break; > -#endif > case 0x1c: > ret = s->rx_cnt; > break; Regards, Shin-ichiro KAWASAKI Jean-Christophe PLAGNIOL-VILLARD wrote: > From: Shin-ichiro KAWASAKI <kawasaki@juno.dti.ne.jp> > > SE7750 uses SCI := Serial Communication Interface for one of consoles. > This patch completes the SCI implementation, and makes SCI available > for a console. > > # Tabs and spaces are mixed in "hw/sh_serial.c" so much. > # Some clean up might be useful. > > Signed-off-by: Shin-ichiro KAWASAKI <kawasaki@juno.dti.ne.jp> > --- > hw/sh_serial.c | 92 ++++++++++++++++++++++++++++++++----------------------- > 1 files changed, 53 insertions(+), 39 deletions(-) > > diff --git a/hw/sh_serial.c b/hw/sh_serial.c > index 4957c41..c3eb146 100644 > --- a/hw/sh_serial.c > +++ b/hw/sh_serial.c > @@ -96,7 +96,7 @@ static void sh_serial_ioport_write(void *opaque, uint32_t offs, uint32_t val) > s->scr = val & ((s->feat & SH_SERIAL_FEAT_SCIF) ? 0xfa : 0xff); > if (!(val & (1 << 5))) > s->flags |= SH_SERIAL_FLAG_TEND; > - if ((s->feat & SH_SERIAL_FEAT_SCIF) && s->txi) { > + if (s->txi) { > qemu_set_irq(s->txi, val & (1 << 7)); > } > if (!(val & (1 << 6))) { > @@ -109,13 +109,15 @@ static void sh_serial_ioport_write(void *opaque, uint32_t offs, uint32_t val) > qemu_chr_write(s->chr, &ch, 1); > } > s->dr = val; > - s->flags &= ~SH_SERIAL_FLAG_TDE; > + if (s->feat & SH_SERIAL_FEAT_SCIF) > + s->flags &= ~SH_SERIAL_FLAG_TDE; > + else > + s->flags |= SH_SERIAL_FLAG_TDE; > return; > -#if 0 > case 0x14: /* FRDR / RDR */ > - ret = 0; > + /* do nothing */ > + return; > break; > -#endif > } > if (s->feat & SH_SERIAL_FEAT_SCIF) { > switch(offs) { > @@ -165,17 +167,33 @@ static void sh_serial_ioport_write(void *opaque, uint32_t offs, uint32_t val) > case 0x24: /* LSR */ > return; > } > - } > - else { > + } else { /* SCI */ > switch(offs) { > -#if 0 > - case 0x0c: > - ret = s->dr; > - break; > - case 0x10: > - ret = 0; > - break; > -#endif > + case 0x0c: /* TDR */ > + if (s->chr) { > + ch = val; > + qemu_chr_write(s->chr, &ch, 1); > + } > + s->dr = val; > + s->flags |= SH_SERIAL_FLAG_TDE | SH_SERIAL_FLAG_TEND; > + if (s->scr & (1 << 7) && s->txi) { > + qemu_set_irq(s->txi, 1); > + } > + return; > + case 0x10: /* SSR */ > + /* > + * Ignore TDRE (1 << 7) bit because TDR is always > + * writable in this SCI emulation. > + */ > + if (!(val & (1 << 6))) { > + s->flags &= ~SH_SERIAL_FLAG_RDF; > + } > + if (!(val & (1 << 6))) { > + if (s->rxi) { > + qemu_set_irq(s->rxi, 0); > + } > + } > + return; > case 0x1c: > s->sptr = val & 0x8f; > return; > @@ -191,30 +209,19 @@ static uint32_t sh_serial_ioport_read(void *opaque, uint32_t offs) > sh_serial_state *s = opaque; > uint32_t ret = ~0; > > -#if 0 > switch(offs) { > - case 0x00: > + case 0x00: /* SMR */ > ret = s->smr; > break; > - case 0x04: > + case 0x04: /* BRR */ > ret = s->brr; > break; > - case 0x08: > + case 0x08: /* SCR */ > ret = s->scr; > break; > - case 0x14: > - ret = 0; > - break; > } > -#endif > if (s->feat & SH_SERIAL_FEAT_SCIF) { > switch(offs) { > - case 0x00: /* SMR */ > - ret = s->smr; > - break; > - case 0x08: /* SCR */ > - ret = s->scr; > - break; > case 0x10: /* FSR */ > ret = 0; > if (s->flags & SH_SERIAL_FLAG_TEND) > @@ -242,11 +249,9 @@ static uint32_t sh_serial_ioport_read(void *opaque, uint32_t offs) > s->flags &= ~SH_SERIAL_FLAG_RDF; > } > break; > -#if 0 > case 0x18: > ret = s->fcr; > break; > -#endif > case 0x1c: > ret = s->rx_cnt; > break; > @@ -257,21 +262,26 @@ static uint32_t sh_serial_ioport_read(void *opaque, uint32_t offs) > ret = 0; > break; > } > - } > - else { > + } else { > switch(offs) { > -#if 0 > - case 0x0c: > + case 0x0c: /* TDR */ > ret = s->dr; > break; > - case 0x10: > + case 0x10: /* SSR */ > ret = 0; > + if (s->flags & SH_SERIAL_FLAG_TDE) > + ret |= (1 << 7); > + if (s->flags & SH_SERIAL_FLAG_RDF) > + ret |= (1 << 6); > + if (s->flags & SH_SERIAL_FLAG_TEND) > + ret |= (1 << 2); > + /* TODO : handle bit MPBT */ > break; > - case 0x14: > + case 0x14: /* RDR */ > ret = s->rx_fifo[0]; > + s->flags &= ~SH_SERIAL_FLAG_RDF; > break; > -#endif > - case 0x1c: > + case 0x1c: /* SPTR */ > ret = s->sptr; > break; > } > @@ -311,6 +321,10 @@ static void sh_serial_receive_byte(sh_serial_state *s, int ch) > } > } else { > s->rx_fifo[0] = ch; > + s->flags |= SH_SERIAL_FLAG_RDF; > + if (s->scr & (1 << 6) && s->rxi) { > + qemu_set_irq(s->rxi, 1); > + } > } > } > ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2009-04-30 2:12 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-04-26 16:36 [Qemu-devel] [PATCH 1/3] r2d add pflash support Jean-Christophe PLAGNIOL-VILLARD 2009-04-26 16:36 ` [Qemu-devel] [PATCH 2/3] sh: SCI improvements Jean-Christophe PLAGNIOL-VILLARD 2009-04-26 16:36 ` [Qemu-devel] [PATCH 3/3] sh/serial: allow cpu regs definition Jean-Christophe PLAGNIOL-VILLARD 2009-04-26 21:10 ` [Qemu-devel] [PATCH 1/1] r2dplus: add cfi flash support and enable it Jean-Christophe PLAGNIOL-VILLARD 2009-04-26 21:48 ` [Qemu-devel] [PATCH] sh/r2d: add default pflash file support Jean-Christophe PLAGNIOL-VILLARD 2009-04-30 2:10 ` [Qemu-devel] Re: [PATCH 2/3] sh: SCI improvements Shin-ichiro KAWASAKI
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).