lkml.org 
[lkml]   [2008]   [Jan]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [rfc] exposing MMR's of on-chip peripherals for debugging purposes
Mike Frysinger wrote:
> On Jan 28, 2008 5:40 AM, Bryan Wu <bryan.wu@analog.com> wrote:
>> On Mon, 2008-01-28 at 05:16 -0500, Mike Frysinger wrote:
>>> the trouble is that this file currently weighs in at ~1.8 megs. this
>>> is because it contains all the information for all Blackfin processors
>>> we support (which currently, is about ~23 variants). it's only going
>>> to get bigger as we support more. Bryan cringes at the thought of
>>> submitting it to LKML :). so i'm fishing around for alternatives ...
>>> the code was originally developed against 2.6.21, so UIO was not a
>>> possibility. i'm still not sure if it is ... i'd have to research it
>>> a bit more and play with things.
>> The main reason I am not willing to submit this to mainline is the file
>> size. It's almost the biggest file in the kernel source. And it will be
>> bigger and bigger when more and more new Blackfin processors supported
>> by Linux kernel.
>
> a quick check of current git shows it is significantly larger than any other ;)
>
>> My suggestion is:
>> Or more deeper thought:
>> - we don't need all the MMR setup at the same time for debugging. for example, maybe for some developer, he/she only needs one driver MMR for debugging such as watchdog/usb/spi/i2c ....
>
> splitting things up doesnt really address the original issue: there's
> a lot of info here to be kept in the kernel
>
>> - How about split the debug MMR table to each drivers or processors?
>> - watchdog driver implements a debug FS interface for debugging watchdog MMR and other drivers implement their own things.
>
> this had been mentioned before as a possibility but shot down. you do
> not want to tie the creation of these debug files to anything as the
> prevents independent development of any other drivers/application that
> use the same peripheral.
> -mike

Hi Mike,
there is a lot of duplication in your file, but you could slim it down a
bit if thats the only objection.

for instance all the COUNTER element addresses have the same offsets
from CNT_CONFIG

CNT_IMASK = CNT_CONFIG + 4
CNT_STATUS = CNT_CONFIG + 8
CNT_COMMAND = CNT_CONFIG + 12
CNT_DEBOUNCE = CNT_CONFIG + 16
CNT_COUNTER = CNT_CONFIG + 20
CNT_MAX = CNT_CONFIG + 24
CNT_MIN = CNT_CONFIG + 28

so you could have a simple function to create all the COUNTER elements
from a given base address, then each variant only needs call that saving
you lots of LOC.

something like :-

make_counter_dir(top, base ) {
parent = debugfs_create_dir("Counter", top);
debugfs_create_x16("CNT_COMMAND", 0600, parent, base+12);
debugfs_create_x16("CNT_CONFIG", 0600, parent, base);
...
}

Hopefully all the other sections have similar levels of duplication, but
I haven't checked.

Cheers
Richard


\
 
 \ /
  Last update: 2008-01-28 14:07    [W:0.046 / U:0.760 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site