From: "Diego A. Fons" <diegofons@apexar.com>
To: Nicolas Ferre <nicolas.ferre@rfo.atmel.com>
Cc: linux-fbdev-devel@lists.sourceforge.net
Subject: Re: Problem with FB
Date: Wed, 30 May 2007 10:00:20 -0300 [thread overview]
Message-ID: <465D7564.7000809@apexar.com> (raw)
In-Reply-To: <465AF2E1.9090705@rfo.atmel.com>
Nicolas Ferre escribió:
> Diego A. Fons :
>
>> I was changing the timings values but it seems to get worse, with a
>> set of values the screen moves with every ftp command thet sftp sends!
>> Now the values are (it doesn't work either):
>>
>> #define AT91_DM9000_NWE_SETUP (8 << 0)
>> #define AT91_DM9000_NCS_WR_SETUP (4 << 8)
>> #define AT91_DM9000_NRD_SETUP (8 << 16)
>> #define AT91_DM9000_NCS_RD_SETUP (4 << 24)
>>
>> #define AT91_DM9000_NWE_PULSE (16 << 0)
>> #define AT91_DM9000_NCS_WR_PULSE (32 << 8)
>> #define AT91_DM9000_NRD_PULSE (16 << 16)
>> #define AT91_DM9000_NCS_RD_PULSE (32 << 24)
>>
>> #define AT91_DM9000_NWE_CYCLE (36 << 0)
>> #define AT91_DM9000_NRD_CYCLE (36 << 16)
>>
>> #define AT91_DM9000_TDF (1 << 16)
>>
>> I test it with lower and higher values and nothing (with 1 and 127).
>>
>> Can you tell me how is it possible that the DM9000 timings interfere
>> with the frame buffer?
>
>
> Well they both use the SDRam/EBI interface (in fact the ARM926 and the
> LCD) and they may be in conflict some time to get the internal AHB bus
> (H matrix).
> The idea is that one or the other master takes the bus for too long.
>
> What can help us is if you can also check if the fifo underflow UFLWIS
> bit (#4) rises during LDC use.
>
> So, if the LCD is interrupted during a data burst from sdram, it can
> have difficulties to resume its transfer. You can try to lower the
> configured burst length on the LCD : ATMEL_LCDC_DMA_BURST_LEN = 4 (so
> the register field must be written with 0x3) instead of 8.
>
> Another option will be to keep the burst length and increase the slot
> cycle in the Matrix interface (from 16->32 or 64). It is the preferred
> one. This is done in the AT91bootstrap but you can do it for testing
> using a jtag ice.
>
> Keep me informed, Cheers,
Good news!... kind of :(
I was working in this problem and i was able to get a solution but it is
not a good practice.
First of all i have to add a line in the at91_add_device_lcdc function
(ah! i made this tests using kernel 2.6.21):
File: arch/arm/mach-at91/at91sam9261_devices.c
Function: at91_add_device_lcdc()
Line: at91_set_A_periph(AT91_PIN_PB0, 0);
This line enables the Vertical Sync of the LCD, i don't know why it is
not set by default, so i didnt' have any vertical signal so the display
didn't work.
Second. I set the fifo underflow interrupt to see if the problem was a
buffer underflow and it's that way, the interrupt occurs so the probles
is that display run out of data. I could solve this by calling a
function that resets all de lcd driver, also i kept enable the
interruptions all the time. This is the modified function (in the driver
file, drivers/video/atmel_lcdfb.c):
static irqreturn_t atmel_lcdfb_interrupt(int irq, void *dev_id)
{
struct fb_info *info = dev_id;
struct atmel_lcdfb_info *sinfo = info->par;
u32 status;
status = lcdc_readl(sinfo, ATMEL_LCDC_ISR);
// this is the reset call
atmel_lcdfb_set_par(info);
//lcdc_writel(sinfo, ATMEL_LCDC_IDR, status);
lcdc_writel(sinfo, ATMEL_LCDC_ICR, status);
return IRQ_HANDLED;
}
And the function atmel_lcdfb_set_par was modified to keep enable the
interruptions:
static int atmel_lcdfb_set_par(struct fb_info *info)
{
...
// Added this line at the botom, the rest remains the same
lcdc_writel(sinfo, ATMEL_LCDC_IER, 0x00000010);
return 0;
}
With this modifications when the screens moves, it reset the parameters
and you see the screen go down and up.
The question is: is there an elegant way to solve this?
Third. I was trying to reconfigure the Matrix from linx but all i got
was a coredump from the kernel itself. I'm not able to configure it at
boot time because i'm using u-boot (and i'm not able to flash a new
compiled version).
Well, that's it. Sorry for the long mail.I'll be waiting an advise from you.
Best regards,
Diego A. Fons.
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
prev parent reply other threads:[~2007-05-30 13:23 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-16 16:45 [Buildroot] Problem with FB Diego A. Fons
2007-05-16 16:45 ` Diego A. Fons
2007-05-18 7:48 ` Nicolas Ferre
2007-05-18 12:56 ` Diego A. Fons
2007-05-18 13:24 ` Nicolas Ferre
2007-05-24 17:33 ` Diego A. Fons
2007-05-28 15:18 ` Nicolas Ferre
2007-05-30 13:00 ` Diego A. Fons [this message]
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=465D7564.7000809@apexar.com \
--to=diegofons@apexar.com \
--cc=linux-fbdev-devel@lists.sourceforge.net \
--cc=nicolas.ferre@rfo.atmel.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.