All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Markus Klotzbücher" <mk@creamnet.de>
To: "Steven Kaiser" <skaiser.uci@gmail.com>
Cc: linuxppc-embedded@ozlabs.org
Subject: Re: MPC5200b kernel module memory mapping
Date: Thu, 21 Sep 2006 20:10:17 +0200	[thread overview]
Message-ID: <87slilxf92.fsf@creamnet.de> (raw)
In-Reply-To: <000001c6dd12$417d7a50$6e4ec880@volt> (Steven Kaiser's message of "Wed, 20 Sep 2006 17:09:49 -0700")

Hi Steven,

"Steven Kaiser" <skaiser.uci@gmail.com> writes:

> In a kernel module, I am trying to iomemory map or ioport map a range of
> addresses so later I can talk directly to custom external hardware.  I have
> tried to follow the advice of Rubini chapter 8.  I think I am setting it up
> correctly, but at the precise moment I try to write anything within my
> range, the kernel crashes badly.  My board is a Lite5200b, using a 2.4.25
> kernel.
...
> 	// enable LocalBus Chip Select CS2 to hit on our address range
> 	*(volatile u32 *)MPC5xxx_MM_IPBI &= ~0x00040000;
> 	*(volatile u16 *)(MPC5xxx_MM_CS2_START + 2) = MALab_MM_START >> 16;
> 	*(volatile u16 *)(MPC5xxx_MM_CS2_STOP + 2) = MALab_MM_END >> 16;
> 	*(volatile u32 *)MPC5xxx_MM_IPBI |= 0x00040000;
>
> 	// map our physical address into kernal virtual address space
> 	// do I need this call?
> 	ioaddr = ioremap(MALab_MM_START,MALab_MM_SIZE);

Yes, you do need this call if you want to access physical addresses.

> return 0;
> }
>
> Later (in a ioctrl routine), I will try and write something to the first
> location in my address range.  I tried these three ways:
>
> 	*(volatile u16 *)MALab_MM_START = 0x5555;
> 	outw(0x5555,MALab_MM_START);
> 	outw(0x5555,ioaddr);
>
> Any and all of the these calls crash the kernel so horrendously I have to
> reboot.  Sometimes I have to delete and mknod a new /dev entry.
>
> I have tried the io memory map technique instead of the above io port map
> technique, using request_mem_region(), with the same crashing results upon
> any writew() call or direct variants.  I tried things without the ioremap()
> call--  I get a segmentation fault in these cases.
>
> The request_region() or request_mem_region() seems to work ok.  I can cat
> /proc/iomem or /proc/ioports and see my range in there.  I am pretty

This doesn't really tell you anything, it's mere housekeeping.

> sure I am setting up the LocalBus chip select registers ok.

I would guess this is not the case. What kind of device is this?

Regards

	Markus

  parent reply	other threads:[~2006-09-21 18:15 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-09-21  0:09 MPC5200b kernel module memory mapping Steven Kaiser
2006-09-21  8:47 ` sudheer
2006-09-21 18:10 ` Markus Klotzbücher [this message]
2006-09-23 20:46   ` Steven Kaiser
2006-09-23 20:55   ` Steven Kaiser

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87slilxf92.fsf@creamnet.de \
    --to=mk@creamnet.de \
    --cc=linuxppc-embedded@ozlabs.org \
    --cc=skaiser.uci@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.