From patchwork Fri May 14 07:29:17 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Isaku Yamahata X-Patchwork-Id: 52595 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [199.232.76.165]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 944E2B7DC2 for ; Fri, 14 May 2010 19:02:38 +1000 (EST) Received: from localhost ([127.0.0.1]:60102 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OCqmw-0004L9-JZ for incoming@patchwork.ozlabs.org; Fri, 14 May 2010 05:02:34 -0400 Received: from [140.186.70.92] (port=59980 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OCqk7-0003wQ-KW for qemu-devel@nongnu.org; Fri, 14 May 2010 04:59:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OCqk4-0007kA-Of for qemu-devel@nongnu.org; Fri, 14 May 2010 04:59:39 -0400 Received: from mail.valinux.co.jp ([210.128.90.3]:37533) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OCpO2-0002fR-Ke for qemu-devel@nongnu.org; Fri, 14 May 2010 03:32:47 -0400 Received: from ps.local.valinux.co.jp (vagw.valinux.co.jp [210.128.90.14]) by mail.valinux.co.jp (Postfix) with SMTP id 61B87107161; Fri, 14 May 2010 16:32:39 +0900 (JST) Received: (nullmailer pid 28007 invoked by uid 1000); Fri, 14 May 2010 07:29:25 -0000 From: Isaku Yamahata To: qemu-devel@nongnu.org Date: Fri, 14 May 2010 16:29:17 +0900 Message-Id: X-Mailer: git-send-email 1.6.6.1 In-Reply-To: References: In-Reply-To: References: X-Virus-Scanned: clamav-milter 0.95.2 at va-mail.local.valinux.co.jp X-Virus-Status: Clean X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) Cc: blauwirbel@gmail.com, yamahata@valinux.co.jp, kraxel@redhat.com Subject: [Qemu-devel] [PATCH 19/26] rtc: make rtc_xxx accept/return ISADevice instead of RTCState. X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org To match rtc_xxx with qdev, make rtc_xxx accept and return ISADevice instead of RTCState. Signed-off-by: Isaku Yamahata Acked-by: Gerd Hoffmann --- hw/mc146818rtc.c | 26 +++++++++++++++----------- hw/mc146818rtc.h | 8 ++++---- hw/mips_jazz.c | 1 + hw/mips_malta.c | 3 ++- hw/mips_r4k.c | 3 ++- hw/pc.c | 11 ++++++----- hw/pc.h | 5 ++--- hw/pc_piix.c | 2 +- hw/ppc_prep.c | 1 + 9 files changed, 34 insertions(+), 26 deletions(-) diff --git a/hw/mc146818rtc.c b/hw/mc146818rtc.c index 89a423e..cd5e0d7 100644 --- a/hw/mc146818rtc.c +++ b/hw/mc146818rtc.c @@ -28,6 +28,7 @@ #include "apic.h" #include "isa.h" #include "hpet_emul.h" +#include "mc146818rtc.h" //#define DEBUG_CMOS @@ -65,7 +66,7 @@ #define REG_C_PF 0x40 #define REG_C_AF 0x20 -struct RTCState { +typedef struct RTCState { ISADevice dev; uint8_t cmos_data[128]; uint8_t cmos_index; @@ -85,7 +86,7 @@ struct RTCState { QEMUTimer *coalesced_timer; QEMUTimer *second_timer; QEMUTimer *second_timer2; -}; +} RTCState; static void rtc_irq_raise(qemu_irq irq) { @@ -492,14 +493,16 @@ static uint32_t cmos_ioport_read(void *opaque, uint32_t addr) } } -void rtc_set_memory(RTCState *s, int addr, int val) +void rtc_set_memory(ISADevice *dev, int addr, int val) { + RTCState *s = DO_UPCAST(RTCState, dev, dev); if (addr >= 0 && addr <= 127) s->cmos_data[addr] = val; } -void rtc_set_date(RTCState *s, const struct tm *tm) +void rtc_set_date(ISADevice *dev, const struct tm *tm) { + RTCState *s = DO_UPCAST(RTCState, dev, dev); s->current_tm = *tm; rtc_copy_date(s); } @@ -508,18 +511,19 @@ void rtc_set_date(RTCState *s, const struct tm *tm) #define REG_IBM_CENTURY_BYTE 0x32 #define REG_IBM_PS2_CENTURY_BYTE 0x37 -static void rtc_set_date_from_host(RTCState *s) +static void rtc_set_date_from_host(ISADevice *dev) { + RTCState *s = DO_UPCAST(RTCState, dev, dev); struct tm tm; int val; /* set the CMOS date */ qemu_get_timedate(&tm, 0); - rtc_set_date(s, &tm); + rtc_set_date(dev, &tm); val = rtc_to_bcd(s, (tm.tm_year / 100) + 19); - rtc_set_memory(s, REG_IBM_CENTURY_BYTE, val); - rtc_set_memory(s, REG_IBM_PS2_CENTURY_BYTE, val); + rtc_set_memory(dev, REG_IBM_CENTURY_BYTE, val); + rtc_set_memory(dev, REG_IBM_PS2_CENTURY_BYTE, val); } static int rtc_post_load(void *opaque, int version_id) @@ -591,7 +595,7 @@ static int rtc_initfn(ISADevice *dev) s->cmos_data[RTC_REG_C] = 0x00; s->cmos_data[RTC_REG_D] = 0x80; - rtc_set_date_from_host(s); + rtc_set_date_from_host(dev); s->periodic_timer = qemu_new_timer(rtc_clock, rtc_periodic_timer, s); #ifdef TARGET_I386 @@ -614,14 +618,14 @@ static int rtc_initfn(ISADevice *dev) return 0; } -RTCState *rtc_init(int base_year) +ISADevice *rtc_init(int base_year) { ISADevice *dev; dev = isa_create("mc146818rtc"); qdev_prop_set_int32(&dev->qdev, "base_year", base_year); qdev_init_nofail(&dev->qdev); - return DO_UPCAST(RTCState, dev, dev); + return dev; } static ISADeviceInfo mc146818rtc_info = { diff --git a/hw/mc146818rtc.h b/hw/mc146818rtc.h index 7211dae..6f46a68 100644 --- a/hw/mc146818rtc.h +++ b/hw/mc146818rtc.h @@ -1,10 +1,10 @@ #ifndef MC146818RTC_H #define MC146818RTC_H -typedef struct RTCState RTCState; +#include "isa.h" -RTCState *rtc_init(int base_year); -void rtc_set_memory(RTCState *s, int addr, int val); -void rtc_set_date(RTCState *s, const struct tm *tm); +ISADevice *rtc_init(int base_year); +void rtc_set_memory(ISADevice *dev, int addr, int val); +void rtc_set_date(ISADevice *dev, const struct tm *tm); #endif /* !MC146818RTC_H */ diff --git a/hw/mips_jazz.c b/hw/mips_jazz.c index 5609597..6e0ec8f 100644 --- a/hw/mips_jazz.c +++ b/hw/mips_jazz.c @@ -35,6 +35,7 @@ #include "esp.h" #include "mips-bios.h" #include "loader.h" +#include "mc146818rtc.h" enum jazz_model_e { diff --git a/hw/mips_malta.c b/hw/mips_malta.c index 586c1c3..792709b 100644 --- a/hw/mips_malta.c +++ b/hw/mips_malta.c @@ -44,6 +44,7 @@ #include "ide.h" #include "loader.h" #include "elf.h" +#include "mc146818rtc.h" //#define DEBUG_BOARD_INIT @@ -776,7 +777,7 @@ void mips_malta_init (ram_addr_t ram_size, PCIBus *pci_bus; ISADevice *isa_dev; CPUState *env; - RTCState *rtc_state; + ISADevice *rtc_state; FDCtrl *floppy_controller; MaltaFPGAState *malta_fpga; qemu_irq *i8259; diff --git a/hw/mips_r4k.c b/hw/mips_r4k.c index 0d5e2a6..f1fcfcd 100644 --- a/hw/mips_r4k.c +++ b/hw/mips_r4k.c @@ -21,6 +21,7 @@ #include "ide.h" #include "loader.h" #include "elf.h" +#include "mc146818rtc.h" #define MAX_IDE_BUS 2 @@ -165,7 +166,7 @@ void mips_r4k_init (ram_addr_t ram_size, int bios_size; CPUState *env; ResetData *reset_info; - RTCState *rtc_state; + ISADevice *rtc_state; int i; qemu_irq *i8259; DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS]; diff --git a/hw/pc.c b/hw/pc.c index 4f65049..20dc7fd 100644 --- a/hw/pc.c +++ b/hw/pc.c @@ -34,6 +34,7 @@ #include "loader.h" #include "elf.h" #include "multiboot.h" +#include "mc146818rtc.h" /* output Bochs bios info messages */ //#define DEBUG_BIOS @@ -192,7 +193,7 @@ static int cmos_get_fd_drive_type(int fd0) } static void cmos_init_hd(int type_ofs, int info_ofs, BlockDriverState *hd, - RTCState *s) + ISADevice *s) { int cylinders, heads, sectors; bdrv_get_geometry_hint(hd, &cylinders, &heads, §ors); @@ -225,7 +226,7 @@ static int boot_device2nibble(char boot_device) return 0; } -static int set_boot_dev(RTCState *s, const char *boot_device, int fd_bootchk) +static int set_boot_dev(ISADevice *s, const char *boot_device, int fd_bootchk) { #define PC_MAX_BOOT_DEVICES 3 int nbds, bds[3] = { 0, }; @@ -257,7 +258,7 @@ static int pc_boot_set(void *opaque, const char *boot_device) /* hd_table must contain 4 block drivers */ void pc_cmos_init(ram_addr_t ram_size, ram_addr_t above_4g_mem_size, const char *boot_device, DriveInfo **hd_table, - FDCtrl *floppy_controller, RTCState *s) + FDCtrl *floppy_controller, ISADevice *s) { int val; int fd0, fd1, nb; @@ -752,7 +753,7 @@ int cpu_is_bsp(CPUState *env) BIOS will read it and start S3 resume at POST Entry */ void pc_cmos_set_s3_resume(void *opaque, int irq, int level) { - RTCState *s = opaque; + ISADevice *s = opaque; if (level) { rtc_set_memory(s, 0xF, 0xFE); @@ -929,7 +930,7 @@ void pc_vga_init(PCIBus *pci_bus) void pc_basic_device_init(qemu_irq *isa_irq, FDCtrl **floppy_controller, - RTCState **rtc_state) + ISADevice **rtc_state) { int i; DriveInfo *fd[MAX_FD]; diff --git a/hw/pc.h b/hw/pc.h index e3cc0a5..2e2f4e2 100644 --- a/hw/pc.h +++ b/hw/pc.h @@ -5,7 +5,6 @@ #include "ioport.h" #include "isa.h" #include "fdc.h" -#include "mc146818rtc.h" /* PC-style peripherals (also used by other machines). */ @@ -95,14 +94,14 @@ qemu_irq *pc_allocate_cpu_irq(void); void pc_vga_init(PCIBus *pci_bus); void pc_basic_device_init(qemu_irq *isa_irq, FDCtrl **floppy_controller, - RTCState **rtc_state); + ISADevice **rtc_state); void pc_init_ne2k_isa(NICInfo *nd); #ifdef HAS_AUDIO void pc_audio_init (PCIBus *pci_bus, qemu_irq *pic); #endif void pc_cmos_init(ram_addr_t ram_size, ram_addr_t above_4g_mem_size, const char *boot_device, DriveInfo **hd_table, - FDCtrl *floppy_controller, RTCState *s); + FDCtrl *floppy_controller, ISADevice *s); void pc_pci_device_init(PCIBus *pci_bus); void ioport_set_a20(int enable); diff --git a/hw/pc_piix.c b/hw/pc_piix.c index 52d8591..a0ed7ad 100644 --- a/hw/pc_piix.c +++ b/hw/pc_piix.c @@ -61,7 +61,7 @@ static void pc_init1(ram_addr_t ram_size, IsaIrqState *isa_irq_state; DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS]; FDCtrl *floppy_controller; - RTCState *rtc_state; + ISADevice *rtc_state; pc_cpus_init(cpu_model); diff --git a/hw/ppc_prep.c b/hw/ppc_prep.c index a5e25b5..09a9881 100644 --- a/hw/ppc_prep.c +++ b/hw/ppc_prep.c @@ -36,6 +36,7 @@ #include "qemu-log.h" #include "ide.h" #include "loader.h" +#include "mc146818rtc.h" //#define HARD_DEBUG_PPC_IO //#define DEBUG_PPC_IO