From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1L98m4-0006hO-Tb for qemu-devel@nongnu.org; Sat, 06 Dec 2008 20:49:32 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1L98m3-0006hC-Ea for qemu-devel@nongnu.org; Sat, 06 Dec 2008 20:49:31 -0500 Received: from [199.232.76.173] (port=50845 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1L98m3-0006h9-Ab for qemu-devel@nongnu.org; Sat, 06 Dec 2008 20:49:31 -0500 Received: from savannah.gnu.org ([199.232.41.3]:53026 helo=sv.gnu.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1L98m2-0006EB-Er for qemu-devel@nongnu.org; Sat, 06 Dec 2008 20:49:30 -0500 Received: from cvs.savannah.gnu.org ([199.232.41.69]) by sv.gnu.org with esmtp (Exim 4.63) (envelope-from ) id 1L98m1-0006Gf-Gf for qemu-devel@nongnu.org; Sun, 07 Dec 2008 01:49:29 +0000 Received: from balrog by cvs.savannah.gnu.org with local (Exim 4.63) (envelope-from ) id 1L98m1-0006GZ-4h for qemu-devel@nongnu.org; Sun, 07 Dec 2008 01:49:29 +0000 MIME-Version: 1.0 Errors-To: balrog Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From: Andrzej Zaborowski Message-Id: Date: Sun, 07 Dec 2008 01:49:29 +0000 Subject: [Qemu-devel] [5899] Don't wrap I2C registers addresses on PXA270. Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Revision: 5899 http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=5899 Author: balrog Date: 2008-12-07 01:49:28 +0000 (Sun, 07 Dec 2008) Log Message: ----------- Don't wrap I2C registers addresses on PXA270. This way the registers will only be visible at the given offset instead of every 0x100 bytes. Modified Paths: -------------- trunk/hw/pxa2xx.c Modified: trunk/hw/pxa2xx.c =================================================================== --- trunk/hw/pxa2xx.c 2008-12-07 00:14:21 UTC (rev 5898) +++ trunk/hw/pxa2xx.c 2008-12-07 01:49:28 UTC (rev 5899) @@ -1260,6 +1260,7 @@ i2c_slave slave; i2c_bus *bus; qemu_irq irq; + target_phys_addr_t offset; uint16_t control; uint16_t status; @@ -1340,7 +1341,7 @@ { struct pxa2xx_i2c_s *s = (struct pxa2xx_i2c_s *) opaque; - addr &= 0xff; + addr -= s->offset; switch (addr) { case ICR: return s->control; @@ -1369,7 +1370,7 @@ struct pxa2xx_i2c_s *s = (struct pxa2xx_i2c_s *) opaque; int ack; - addr &= 0xff; + addr -= s->offset; switch (addr) { case ICR: s->control = value & 0xfff7; @@ -1474,7 +1475,7 @@ } struct pxa2xx_i2c_s *pxa2xx_i2c_init(target_phys_addr_t base, - qemu_irq irq, uint32_t page_size) + qemu_irq irq, uint32_t region_size) { int iomemtype; /* FIXME: Should the slave device really be on a separate bus? */ @@ -1486,10 +1487,12 @@ s->slave.recv = pxa2xx_i2c_rx; s->slave.send = pxa2xx_i2c_tx; s->bus = i2c_init_bus(); + s->offset = base & region_size; iomemtype = cpu_register_io_memory(0, pxa2xx_i2c_readfn, pxa2xx_i2c_writefn, s); - cpu_register_physical_memory(base & ~page_size, page_size + 1, iomemtype); + cpu_register_physical_memory(base & ~region_size, + region_size + 1, iomemtype); register_savevm("pxa2xx_i2c", base, 1, pxa2xx_i2c_save, pxa2xx_i2c_load, s);