virtex 4 linux driver bus error
Grant Likely
grant.likely at secretlab.ca
Thu Oct 23 15:17:13 EST 2008
On Wed, Oct 22, 2008 at 02:10:12PM +0200, Mirsad Vejseli wrote:
> hello at all,
>
> at the moment I use development board ML410 with montavistalinux.
>
> I have a problem, please help me!
>
> I try to write a linux-driver for writing or reading registers.
> I have a ace-file, which contents Linux and EDK-project with a component (IP-wizard) which is added on a PLB-bus.
> I also have a driver-construct which I can register (insmod driver.ko) into the linux-Kernel only if i do not use functions to write or read the bus (XIO_out32() or XIO_in32 () ). If I use this function after registering the driver I got an error.
> If I try to insert the modul with Insmod driver.ko I get a bus error!
>
> my driver is similar to http://ozlabs.org/pipermail/linuxppc-embedded/2006-January/021578.html
>
>
> her the two importent functions of the driver:
>
Try something like this:
#define REG_BASE (u32) XPAR_komponente_0_BASEADDR // defined in xparameters_ml41x.h
#define REG_HIGH (u32) XPAR_komponente_0_HIGHADDR // defined in xparameters_ml41x.h
#define reg0_upper (u32) komponente_SLV_REG0_OFFSET // 32-bit register / defined in komponente.h
#define reg1_upper (u32) komponente_SLV_REG1_OFFSET // 32-bit register / defined in komponente.h
#define reg2_upper (u32) komponente_SLV_REG2_OFFSET // 32-bit register / defined in komponente.h
static int __init meintreiber_init(void)
{
int rtn, upper;
reg_remapped_address = (u32) ioremap(REG_BASE, REG_HIGH - REG_BASE + 1);
if (!reg_remapped_address) {
printk("error mapping registers\n");
return -ENOMEM;
}
upper = in_be32(reg_mapped_address + reg1_upper);
printk("Data in: %.8X\n", upper);
return 0;
}
g.
More information about the Linuxppc-embedded
mailing list