etrax: Don't pass CPUState to peripherals.
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
This commit is contained in:
		
							parent
							
								
									e510e05b5d
								
							
						
					
					
						commit
						ba494313d3
					
				@ -309,16 +309,16 @@ void axisdev88_init (ram_addr_t ram_size,
 | 
				
			|||||||
    nmi[0] = qdev_get_gpio_in(dev, 30);
 | 
					    nmi[0] = qdev_get_gpio_in(dev, 30);
 | 
				
			||||||
    nmi[1] = qdev_get_gpio_in(dev, 31);
 | 
					    nmi[1] = qdev_get_gpio_in(dev, 31);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    etraxfs_dmac = etraxfs_dmac_init(env, 0x30000000, 10);
 | 
					    etraxfs_dmac = etraxfs_dmac_init(0x30000000, 10);
 | 
				
			||||||
    for (i = 0; i < 10; i++) {
 | 
					    for (i = 0; i < 10; i++) {
 | 
				
			||||||
        /* On ETRAX, odd numbered channels are inputs.  */
 | 
					        /* On ETRAX, odd numbered channels are inputs.  */
 | 
				
			||||||
        etraxfs_dmac_connect(etraxfs_dmac, i, irq + 7 + i, i & 1);
 | 
					        etraxfs_dmac_connect(etraxfs_dmac, i, irq + 7 + i, i & 1);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* Add the two ethernet blocks.  */
 | 
					    /* Add the two ethernet blocks.  */
 | 
				
			||||||
    eth[0] = etraxfs_eth_init(&nd_table[0], env, 0x30034000, 1);
 | 
					    eth[0] = etraxfs_eth_init(&nd_table[0], 0x30034000, 1);
 | 
				
			||||||
    if (nb_nics > 1)
 | 
					    if (nb_nics > 1)
 | 
				
			||||||
        eth[1] = etraxfs_eth_init(&nd_table[1], env, 0x30036000, 2);
 | 
					        eth[1] = etraxfs_eth_init(&nd_table[1], 0x30036000, 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* The DMA Connector block is missing, hardwire things for now.  */
 | 
					    /* The DMA Connector block is missing, hardwire things for now.  */
 | 
				
			||||||
    etraxfs_dmac_connect_client(etraxfs_dmac, 0, eth[0]);
 | 
					    etraxfs_dmac_connect_client(etraxfs_dmac, 0, eth[0]);
 | 
				
			||||||
 | 
				
			|||||||
@ -100,16 +100,16 @@ void bareetraxfs_init (ram_addr_t ram_size,
 | 
				
			|||||||
    nmi[0] = qdev_get_gpio_in(dev, 30);
 | 
					    nmi[0] = qdev_get_gpio_in(dev, 30);
 | 
				
			||||||
    nmi[1] = qdev_get_gpio_in(dev, 31);
 | 
					    nmi[1] = qdev_get_gpio_in(dev, 31);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    etraxfs_dmac = etraxfs_dmac_init(env, 0x30000000, 10);
 | 
					    etraxfs_dmac = etraxfs_dmac_init(0x30000000, 10);
 | 
				
			||||||
    for (i = 0; i < 10; i++) {
 | 
					    for (i = 0; i < 10; i++) {
 | 
				
			||||||
        /* On ETRAX, odd numbered channels are inputs.  */
 | 
					        /* On ETRAX, odd numbered channels are inputs.  */
 | 
				
			||||||
        etraxfs_dmac_connect(etraxfs_dmac, i, irq + 7 + i, i & 1);
 | 
					        etraxfs_dmac_connect(etraxfs_dmac, i, irq + 7 + i, i & 1);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* Add the two ethernet blocks.  */
 | 
					    /* Add the two ethernet blocks.  */
 | 
				
			||||||
    eth[0] = etraxfs_eth_init(&nd_table[0], env, 0x30034000, 1);
 | 
					    eth[0] = etraxfs_eth_init(&nd_table[0], 0x30034000, 1);
 | 
				
			||||||
    if (nb_nics > 1)
 | 
					    if (nb_nics > 1)
 | 
				
			||||||
        eth[1] = etraxfs_eth_init(&nd_table[1], env, 0x30036000, 2);
 | 
					        eth[1] = etraxfs_eth_init(&nd_table[1], 0x30036000, 2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* The DMA Connector block is missing, hardwire things for now.  */
 | 
					    /* The DMA Connector block is missing, hardwire things for now.  */
 | 
				
			||||||
    etraxfs_dmac_connect_client(etraxfs_dmac, 0, eth[0]);
 | 
					    etraxfs_dmac_connect_client(etraxfs_dmac, 0, eth[0]);
 | 
				
			||||||
 | 
				
			|||||||
@ -25,5 +25,4 @@
 | 
				
			|||||||
#include "etraxfs_dma.h"
 | 
					#include "etraxfs_dma.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
qemu_irq *cris_pic_init_cpu(CPUState *env);
 | 
					qemu_irq *cris_pic_init_cpu(CPUState *env);
 | 
				
			||||||
void *etraxfs_eth_init(NICInfo *nd, CPUState *env,
 | 
					void *etraxfs_eth_init(NICInfo *nd, target_phys_addr_t base, int phyaddr);
 | 
				
			||||||
                       target_phys_addr_t base, int phyaddr);
 | 
					 | 
				
			||||||
 | 
				
			|||||||
@ -186,8 +186,6 @@ struct fs_dma_channel
 | 
				
			|||||||
struct fs_dma_ctrl
 | 
					struct fs_dma_ctrl
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	int map;
 | 
						int map;
 | 
				
			||||||
	CPUState *env;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	int nr_channels;
 | 
						int nr_channels;
 | 
				
			||||||
	struct fs_dma_channel *channels;
 | 
						struct fs_dma_channel *channels;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -741,8 +739,7 @@ static void DMA_run(void *opaque)
 | 
				
			|||||||
        qemu_bh_schedule_idle(etraxfs_dmac->bh);
 | 
					        qemu_bh_schedule_idle(etraxfs_dmac->bh);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void *etraxfs_dmac_init(CPUState *env, 
 | 
					void *etraxfs_dmac_init(target_phys_addr_t base, int nr_channels)
 | 
				
			||||||
			target_phys_addr_t base, int nr_channels)
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct fs_dma_ctrl *ctrl = NULL;
 | 
						struct fs_dma_ctrl *ctrl = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -750,7 +747,6 @@ void *etraxfs_dmac_init(CPUState *env,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        ctrl->bh = qemu_bh_new(DMA_run, ctrl);
 | 
					        ctrl->bh = qemu_bh_new(DMA_run, ctrl);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ctrl->env = env;
 | 
					 | 
				
			||||||
	ctrl->nr_channels = nr_channels;
 | 
						ctrl->nr_channels = nr_channels;
 | 
				
			||||||
	ctrl->channels = qemu_mallocz(sizeof ctrl->channels[0] * nr_channels);
 | 
						ctrl->channels = qemu_mallocz(sizeof ctrl->channels[0] * nr_channels);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -13,8 +13,7 @@ struct etraxfs_dma_client
 | 
				
			|||||||
	} client;
 | 
						} client;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void *etraxfs_dmac_init(CPUState *env, target_phys_addr_t base, 
 | 
					void *etraxfs_dmac_init(target_phys_addr_t base, int nr_channels);
 | 
				
			||||||
			int nr_channels);
 | 
					 | 
				
			||||||
void etraxfs_dmac_connect(void *opaque, int channel, qemu_irq *line,
 | 
					void etraxfs_dmac_connect(void *opaque, int channel, qemu_irq *line,
 | 
				
			||||||
			  int input);
 | 
								  int input);
 | 
				
			||||||
void etraxfs_dmac_connect_client(void *opaque, int c, 
 | 
					void etraxfs_dmac_connect_client(void *opaque, int c, 
 | 
				
			||||||
 | 
				
			|||||||
@ -319,7 +319,6 @@ static void mdio_cycle(struct qemu_mdio *bus)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
struct fs_eth
 | 
					struct fs_eth
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	CPUState *env;
 | 
					 | 
				
			||||||
	VLANClientState *vc;
 | 
						VLANClientState *vc;
 | 
				
			||||||
	int ethregs;
 | 
						int ethregs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -565,8 +564,7 @@ static void eth_cleanup(VLANClientState *vc)
 | 
				
			|||||||
        qemu_free(eth);
 | 
					        qemu_free(eth);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void *etraxfs_eth_init(NICInfo *nd, CPUState *env, 
 | 
					void *etraxfs_eth_init(NICInfo *nd, target_phys_addr_t base, int phyaddr)
 | 
				
			||||||
		       target_phys_addr_t base, int phyaddr)
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct etraxfs_dma_client *dma = NULL;	
 | 
						struct etraxfs_dma_client *dma = NULL;	
 | 
				
			||||||
	struct fs_eth *eth = NULL;
 | 
						struct fs_eth *eth = NULL;
 | 
				
			||||||
@ -574,7 +572,6 @@ void *etraxfs_eth_init(NICInfo *nd, CPUState *env,
 | 
				
			|||||||
	qemu_check_nic_model(nd, "fseth");
 | 
						qemu_check_nic_model(nd, "fseth");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	dma = qemu_mallocz(sizeof *dma * 2);
 | 
						dma = qemu_mallocz(sizeof *dma * 2);
 | 
				
			||||||
 | 
					 | 
				
			||||||
	eth = qemu_mallocz(sizeof *eth);
 | 
						eth = qemu_mallocz(sizeof *eth);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	dma[0].client.push = eth_tx_push;
 | 
						dma[0].client.push = eth_tx_push;
 | 
				
			||||||
@ -582,7 +579,6 @@ void *etraxfs_eth_init(NICInfo *nd, CPUState *env,
 | 
				
			|||||||
	dma[1].client.opaque = eth;
 | 
						dma[1].client.opaque = eth;
 | 
				
			||||||
	dma[1].client.pull = NULL;
 | 
						dma[1].client.pull = NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	eth->env = env;
 | 
					 | 
				
			||||||
	eth->dma_out = dma;
 | 
						eth->dma_out = dma;
 | 
				
			||||||
	eth->dma_in = dma + 1;
 | 
						eth->dma_in = dma + 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user