irclog2html for blob on 2001.07.27

00:10:26Sammy_hello ....!!
08:05:29erikmgood mornin
16:47:38rmkthere isn't any defined interface at the moment ;(
16:48:01rmkhmm.
16:48:06Russ|werkI know, I would think that they would belong there
16:48:20Russ|werkinstead of that sa1100_frontlight diff that nico has
16:48:23BZFlagrmk: your phone shipped usps gem. 3-4 days is the quote they gave me.
16:49:24Russ|werkI don't think the ioctl's should be arm specific though, as a lot of arches use backlit lcd's with a framebuffer driver
16:49:49Russ|werkand added ioctl's is a lot cleaner than adding a new major or minor for the backlight
16:50:48Russ|werkmaybe a backlight on/off ioctl, backlight status ioctl (on or off)
16:50:56rmkwell, bear in mind that ioctls are currently the most hated thing atm.
16:51:15Russ|werkset intensity ioctl, read intensity ioctl (0 to 0xff)
16:51:20rmkif you're going to add any ioctls, use the _IOC* macros in asm/ioctl.h
16:51:21Russ|werkrmk: wasn't aware of that
16:51:41rmkit came up at the kernel 2.5 conference.
16:51:42Russ|werkrmk: maybe a /proc interface then, which would be seperate from the fb driver
16:51:56Russ|werkor, /proc is getting too crowded as well
16:52:01rmkyep ;(
16:52:16rmkI think you should probably ask the FB people
16:52:31Russ|werkthen where should it be added?
16:52:43erikmI wonder what will happen in 2.5: no new ioctls, /proc too crowded...
16:52:52Russ|werknew majors/minors certainly aren't popular
16:52:57rmksee what the FB people say
16:53:21Russ|werkerikm: communicate with the kernel using your mind
16:53:33rmkRuss: applications don't have minds tho
16:53:47erikmboggles
16:53:55erikm+++ blob-graphicsclient/src/start-ld-script     Wed Jul 25 15:04:03 2001
16:53:55erikm@@ -15,7 +15,7 @@
16:53:55erikm ENTRY(_start)
16:53:55erikm SECTIONS
16:53:56erikm {
16:53:56erikm-       . = 0x00000000;
16:53:58erikm+       . = 0x08000000;
16:54:17erikmhe moved the first stage loader to the second static bank
16:54:36erikmthere *must* be something at 0x00000000 or otherwise his board won't boot at all
16:54:51Russ|werkhe probably wants to do chain booting
16:55:16Russ|werklike he has a CE loader, and he's putting blob on a flash card or something
16:56:38erikmBZFlag: you have experience with CE loaders. is it possible that it indeed works like that?
16:57:25erikmmails jim gettys for iPaq hardware information so he can use JTAG to reburn the flash if something goes wrong
16:57:37erikmwants to port blob to iPaq (of course :)
16:58:08BZFlagerikm: I do have experience with the ipaq ce loader, it jumps to a fixed offset in flash that is the ce entry point.
16:58:42BZFlagso perhaps you could put blob there. it might even be 0x08000000 ... though I was thinking 0x04000000
16:59:06BZFlagerikm will need to sign a compaq nda.
16:59:11erikmBZFlag: 0x08000000 is the second static bank (according to the SA1110 memory map)
16:59:29erikmBZFlag: I expect so, yes. but that's no problem for me
16:59:34BZFlagright. I'm just trying to recall the ce jump point.
17:00:02BZFlagI can send you a copy. I got it and decided not to sign it, so I don't have jtag on my ipaqs
17:00:05Russ|werkerikm: speaking of flash relocations
17:00:33erikmBZFlag: I did that earlier just to be able to see iPaq when I visited CRL. lasted only two weeks because after that they released the iPaq
17:00:45Russ|werkerikm: for a "super" shannon, that would support more than 48M of ram, is would likely be neccessary to not use the onboard bank
17:00:47BZFlagdoesn't the graphics client have 2 flash banks?
17:01:03Russ|werkerikm: so that usable ram would start at 0xd0000000
17:01:15BZFlagmore that 40M you mean?
17:01:18erikmBZFlag: do you have a grpahicsclient to test blob with?
17:01:21BZFlagyes
17:01:54erikmBZFlag: ok, I'll add the sane parts of the graphicsclient patch
17:01:57BZFlaga couple different boxes, just different sized active screen.s
17:02:02Russ|werkBZFlag: more than 40M, yes
17:02:31BZFlagI also have an HP calypso that I've been meaning to get running with the new code.
17:02:32erikmRuss|werk: shouldn't be a real problem with blob, but more with the kernel
17:03:26BZFlagyou want the messy source for that? they merged netboot, messed up automake and autoconf, hacked and slashed, but it does do tftp over CF ne2k cards.
17:03:50Russ|werkerikm: just letting you know, that a different rambase may be a desired feature in the future
17:03:51erikmBZFlag: sounds like a cool holidays project
17:04:08BZFlagholidays? what are those?
17:04:25erikmBZFlag: that's when I don't get paid to hack :)
17:05:15BZFlagoh, I know about those alright. ;-)
17:05:15erikmRuss|werk: I understand, but I don't think we want it right now
17:06:01erikmBZFlag: but yes, I am interested in the HP stuff.
17:06:26BZFlaghmm... could the MMU just map the offboard to c000 ? or will the kernel try to "fix" that?
17:06:54BZFlagerikm: got an incoming directory someplace? Perhaps I should just scp it to the SF blob dir?
17:07:01erikmBZFlag: you are supposed to start the kernel with the MMY off
17:07:08erikmBZFlag: email is no problem with me
17:07:14erikms/MMY/MMU/
17:08:50BZFlaghmm.. that leaves a chicken and egg issue, cause if the onboard needs to be off, where will the kernel be? ;-)
17:11:14rmkbz: in memory, same place it always is
17:11:31rmkwhat's the chicken and egg issue?
17:14:26erikmrmk: would it be possible to make pass the BOOT_MEM information via an ATAG_ node, or would *that* make a chicken and egg issue?
17:14:59rmkmost definitely
17:15:32rmkhowever, I suppose we could scan for it...
17:15:53Russ|werkerikm: I think is the shannon had a 64M RAM card, there would need to be a kernel configure option that would look for paramater, etc at 0xd000100
17:16:02Russ|werks/is/if
17:16:03BZFlagthe kernel is normally in the onboard mem on exec no?
17:16:03rmkit would make booting without the tags impossible
17:16:51erikmrmk: configure option :)
17:16:54rmkbz: what's the difference between "onboard" mem and normal mem?
17:16:57BZFlagnow how to handle booting same image with and without the 64M sodimm....
17:17:25BZFlagrmk: c000 always is the first bank no?
17:17:47erikmRuss|werk: where does that 64M memory live? second DRAM bank or so?
17:18:01Russ|werkrmk: the shannon has an sodimm slot, but I think if we used  64M sodim, we would have to change the row/column addressing, which would mean not using the two onboard 4M banks
17:18:17BZFlagnods
17:18:20erikmRuss|werk: ah, like that.
17:18:44erikmRuss|werk: hmm, are there 64MB EDO sodimms?
17:18:49BZFlagon board is bank 0 and 1, sodimm is 2 and 3 I expect. but 64M would need to be all four, right?
17:18:55erikmBZFlag: yes, c000 is the first one
17:19:12erikmBZFlag: each bank can take 128MB
17:19:56BZFlagoh. I was thinking that the mapping was restricted to 16M. hmm.
17:20:26erikmBZFlag: no, I currently have a LART with 32MB in the first bank, and 64MB in the second
17:20:48BZFlaghow's that mapping setup?
17:21:20erikmBZFlag: eh, what do you mean?
17:25:03Russ|werkhow many pins is the SODIMM supposed to have?
17:27:20BZFlagphy? 72 pins on these. 144 on modern sodimms
17:27:28Russ|werkah
17:27:52Russ|werkall the 64M EDO SODIMMs I'm finding have 144 pins, the point may be moot
17:28:04BZFlagjust wondering if there is a mapping config that will allow the onboard 8M and the 64M sodimm.
17:28:51BZFlaghttp://www.crucial.com/store/partspecs.asp?imodule=CT8M32E4T6
17:28:54Russ|werkI would have to see the schematics for teh tuxscreen, and info on the dimm
17:29:05erikmRuss|werk: I can't tell you without taking my laptop appart
17:29:41erikmBZFlag: I think it's more a hardware problem then a software problem
17:30:03BZFlaghttp://www.crucial.com/store/partspecs.asp?imodule=CT16M32E8T6 <- 64M
17:31:07erikmBZFlag: put the links on the wiki
17:31:33erikmBZFlag: it might worth trying out with the 32MB one first
17:32:19Russ|werkhttp://tuxscreen.net/wiki/view/Users/CarlWorth
17:33:43BZFlagyes, since the 32M is known to work with Inferno, it's just sw.
17:33:50BZFlagunknown for the 64M
17:34:16BZFlaghttp://TuxScreen.net/wiki/view/Main/SODIMM
17:37:41erikmBZFlag: the 64MB one could indeed have different row/column layout
17:37:51Russ|werkrmk: what is the status of the sa1100 ir driver?
17:38:12rmkworks for SIR, FIR not sure.
17:38:34Russ|werkit hangs on boot for me...I'll add some printk's
17:38:52erikmRuss|werk: IIRC some of the #ipaq guys also got it working with consumer IR
17:39:03Russ|werkrmk: the shannon has a infrared keyboard I'd like to eventually use for console
17:39:08erikmRuss|werk: so you can control your TV with your iPaq
17:39:43Russ|werkerikm: thats what an hp48 is for
18:27:38erikmcool, jim gettys doesn't have problems with the jtag spec
18:27:54erikm"FYI: we're currently testing an iPAQ with 128 meg of memory: so I hope
18:27:55erikmyou've got better sizing routines that we had...
18:27:55erikm"
18:29:03Russ|werkby far
18:29:33Russ|werknow just add auto row detection/memory timings
18:31:30erikmI think that's very hard to do
18:31:39Russ|werkI know
18:41:39Russ|werkit was meant to be slightly funny
18:42:24erikmok
18:43:15BZFlagerikm: he'll get you jtag without nda? or using what you have already signed?
18:43:31erikmI don't know
18:43:33BZFlagIf he's giving it away, I'd like to know too. ;-)
18:43:50erikmhe left it to jamey hicks, we'll see what he will come up with
18:56:50erikmhehe, I answered jg that I think we have better memory sizing routines. I mean: if you can do it on LART, you can do it on everything
18:56:51erikm;)
19:12:49BZFlagis jamey considering moving to blob? that would be a Good Thing.
19:13:04BZFlagget them to contribute as well, and reduce the duplication.
19:13:09Russ|werkhopefully it would been less chance of an iPAQ becoming a doorstop
19:13:24BZFlagblob, on it's way to world domination.
19:15:55erikmBZFlag: I haven't heard from jamey yet
19:16:36erikmRuss|werk: that's exactly why I want the ipaq jtag specs. cause I *will* brick it when I'm developing blob for ipaq
19:18:56Russ|werkjust open the thing up see if you can see any labeled test pads
19:22:13erikmRuss|werk: IIRC it doesn't
19:22:59Russ|werkis it BGA?
19:23:33erikmyes, sa1110
19:26:07Russ|werkI was thinking, maybe the params block should use tags like the kernel tags
19:29:05erikmthat was exactly what I was thinking
19:30:32Russ|werkany reason blob should need to write the parms block?
19:30:59erikmstoring the command line would be handy
19:31:05erikmor the ethernet address
19:31:22erikmor settings like autoboot timeout
19:31:39Russ|werkbut stuff like partition tables, bootfs, ramdisk, etc
19:31:54Russ|werkone might need to change those while in blob to be able to boot
19:32:25Russ|werkahh....no it doesn't
19:32:33Russ|werk"download parms"
19:33:06erikmand then "flash parms"?
19:33:10Russ|werkyah
19:33:13erikmhmm
19:33:15Russ|werkhow about this
19:33:24Russ|werkadd a tag/key to each param
19:33:39Russ|werkthe default key is TAG_ALL or something
19:34:02erikmI think 'set cmdline="root=/dev/hda1 read-only console=ttySA0,9600"' would be handy to do
19:34:16Russ|werkbut then there could be others, that are normally dormant, unless that user selects an alternate key/config
19:34:34Russ|werkerikm: I think bot <cmdline> is sufficent there
19:34:49erikmI personally change the amount of goodies connected to a LART quite often, an just using a set command would be quite handy
19:34:59Russ|werkright right right
19:35:15erikmno, because then you have to use "boot bla" for each and every boot
19:35:19Russ|werkI guess the config tags would be numbered
19:35:47Russ|werkfor every default tag, that you want loaded all the time, you put 0 as the tag
19:37:15Russ|werkfor a tag that you want to specify, like if you wanted key 1 to be boot from hd
19:37:43Russ|werkyou'd have tags in your tag list with the '1' key that would say no ramdisk, and another one that would give the cmdline
19:37:56Russ|werkmaybe key 2 would be ramdisk
19:38:33Russ|werkso there would be a tag somewhere with key2 that would enable teh ramdisk, and cmdline tag with key 2 that would have the proper command line
19:38:51erikmso you want multiple setting namespaces and a way to select between those?
19:39:08Russ|werkright
19:39:14erikmhmm
19:39:17Russ|werkso you could say, blob> config 1
19:39:33Russ|werkmaybe have a config name tag that would associate a name with a key
19:39:47Russ|werkso you could say config boot_from_hd
19:40:09rmkRuss: boot profiles
19:40:26erikmrmk: yes
19:40:34erikmrmk: you think it is sane?
19:40:58Russ|werkwhich would make it *very* easy to use a gpio to set which key/config to use
19:41:04rmkI know other people wanting to do that, but they have more complex setups
19:41:09rmkeg, tftp booting etc.
19:41:27erikmrmk: don't worry, we will put bootp/tftp into blob
19:41:43rmkin which case, I'll say add profiles before you do.
19:42:30rmkwhat you could do (which I haven't seen anywhere else) is to create a linked list of profiles...
19:42:58rmkthe idea would be is you try to boot your preferred profile.  if that is, say tftp, and it fails, you move on to the next one (which could be load out of flash)
19:43:09erikmrmk: oooh, cool!
19:43:26Russ|werkrmk: the kernel tag struct with an extra value, config
19:43:43rmkRuss: don't go mad over the tag structs
19:43:53Russ|werkok
19:43:58rmkthe command line is quite a powerful way to specify stuff.
19:44:11Russ|werkI mean tag structs for blob, not the kernel
19:44:12rmkthink about the command line as "things someone would want to type in and change easily"
19:44:19rmkah,
19:44:39erikmrmk: the tag structs look like a good idea to use in blob
19:44:41Russ|werkthey would be just like kernel tag structs, but would have a config/key value
19:44:45rmkerikm: the idea is you have blob setup to do tftp, then microdrive, then flash (say)
19:45:14rmkif you connect it to the lan, you get tftp.  if not, then you get a kernel loaded off your microdrive.  or whatever.
19:45:29erikmI like the idea
19:45:45Russ|werkand some userspace util to convert a config file to a parms block
19:45:51BZFlagalso a default flash, with a gpio that does tftp/udrive will be common
19:46:40Russ|werkBZFlag: could make a tag that has gpio to check, and if its set/cleared, which config to use first
19:46:42rmkbz: whatever - you could configure it to do it anyway you want
19:47:11rmkRuss: that becomes a script ;)
19:47:28Russ|werkcourse, you could go overboard and put memory timings, etc in there too
19:48:18erikmlet's make it openprom compliant
19:48:20erikm;)
19:48:26Russ|werkrmk: do you know if nico is going to release another patch soon?
19:48:36Russ|werkerikm: I'm aparently too young
19:48:57Russ|werkbecause I have no clue what an openprom is
19:49:03erikmRuss|werk: openprom is what Suns and Macs have.
19:49:22erikmRuss|werk: nico is at OLS right now, don't expect anything before saturday
19:49:46Russ|werkerikm: are we going to scrap bootldr and redboot partition tables and use tags instead?
19:50:20erikmRuss|werk: openprom is IEEE 1275. it's actually Forth based. quite sane. PCI should have used it
19:50:30Russ|werkooh ooh ooh, mtd partitioning passed in kernel tags
19:51:05erikmRuss|werk: I think we don't need that. some kind of partition table in flash isn't too bad
19:51:26rmkRuss: the partition table has to be stored somewhere non-volatile _anyway_
19:51:32Russ|werkright, but maybe you want to select your partition table at boot (probably not though)
19:51:41erikmRuss|werk: MTD partitioning is something the kernel can work out itself. no need to pass that through the bootloader
19:51:56Russ|werkbootldr patitions it is
19:53:00erikmI think I want bootldr partitioning compatibility first. in that way people can use it as a drop-in replacement for bootldr
19:53:01rmkRuss: Linus has a great distaste for things that use integers to pass stuff around.  He'd rather all boot loaders used command lines.  This is the reason I'm saying don't go mad - I don't want the kernel tag stuff to sprawl all over the kernel and then have Linus refuse to accept any more.
19:53:56rmkLinus' argument is along the lines of "strings are easily extendable.  Fixed length integers aren't".
19:54:11rmkHe's right as ever.
19:54:31Russ|werkerikm: how hoes mtd know where to find the bootldr table?
19:55:06erikmRuss: I haven't looked at it yet, but I think it looks at a magic address in flash
19:55:11rmkit reads some of the flash, and looks to see if it finds something it recognises.
19:55:34rmkeg, redboot reads the last erase block from flash, and checks to see if it starts with 'RedBoot'
19:55:48Russ|werkrmk: thats 128k gone
19:56:14rmkyep.
19:56:33rmkthe ARM Firmware Suite flash partitioning is hilarious when it comes to JFFS2 though.
19:56:50Russ|werkwhy's that?
19:57:06rmkAFS has a series of "footers" at the end of each image, and then end of the last block of the image.
19:57:15Russ|werkheh
19:57:23rmkJFFS2, while scanning, decides that the last erase block needs to be cleaned up, and removes the footers.
19:57:38erikmhehe
19:57:43rmkend result is that JFFS2 removes the partitioning info. ;(
19:57:59erikmrmk: blame dwmw2 ;)
19:58:16rmkneeds to persuade ARM to drop AFS and come up with a sensible partitioning scheme.
20:02:11erikmhmm.
20:03:06erikmDarwin Chen (the guy that send me the graphicsclient) wants CVS write access. I'm not too sure about it.
20:03:34Russ|werkI would clear up his diffs first
20:03:44Russ|werkso he understands why you disagree
20:04:37erikmI just removed the cruft (Makefile.in diff is not interesting)
20:07:19rmkerikm: slippery slope there.
20:08:37Russ|werk...?
20:08:37BZFlagerikm: ask for clean patches first, when he can handle that, then write access might be the next step.
20:08:55erikmrmk: yeah. right now we have five developers from which I know they can code.
20:09:12erikmBZFlag: good idea. I'll ask him to explain certain points
20:09:13BZFlagwith BZ I have a public patch system on SF, and I get people to post there. similar to the rmk approach
20:19:11Russ|werkrmk: have you thought about the jtag accepting x number of bits, and then readinf back x number of bits
20:19:45Russ|werkand when its writing that x number of bits, it can specify whether or not it wants to read back later?
20:20:45Russ|werkthat would seem to be the heaviest usage pattern, write a 271 bit register, write (request read) a 271 bit register, read back, etc
20:22:00rmkRuss: that's supported implicitly
20:22:32Russ|werkso I could do...
20:22:52Russ|werkwrite len=271 10010100101100101.....
20:23:03Russ|werkwrite(with readback) len=271 010101010101010101010101....
20:23:22Russ|werkthen read do a read back of 271 bits from the second write
20:23:42Russ|werkand with the first write, the jtag hardware wouldn't be doing any reads
20:23:47rmkthere's no difference between the two.
20:23:54Russ|werkwhat do you mean?
20:24:04rmkwrite len=271 00101010100100010101010101
20:24:10rmkwrite len=271 0101010010101010101010101
20:24:14rmkread
20:24:22rmkwrite len=271 010100001010101010101010
20:24:24rmkread
20:24:34Russ|werkwith the speed of jtag hardware there is
20:24:50Russ|werkyou don't want to do 271 extra reads if you don't have too
20:25:24rmkit won't be 271 though...
20:25:32rmkthe data is in 8 bit bytes
20:25:36Russ|werkthats what I'm wanting
20:25:53Russ|werkoh, well, 271 rounded up to mod 8
20:26:22rmkI think you'll find the cost of the extra cache + code size will outweigh the speed advantage
20:26:49Russ|werkwaht I'm saying is
20:27:29Russ|werkI want to do write_jtag(*data, length, NULL)
20:27:34Russ|werka few of those
20:27:54rmkfine - from userland you call write, but don't call read
20:28:03Russ|werkand then write_jtag(&data, length, &input_buffer)
20:28:33Russ|werkwhere it will write all length bits, and at the same time, fill the input buffer, unless its NULL
20:28:37Russ|werktehn don't do any reads
20:29:54rmk_my_ point is that the kernel has to wiggle the TCK anyway, change TDO anyway, and reading TDI into a kernel internal buffer is _minimal_, compared with the cache sizes you'll waste having a separate function that doesn't do the read.
20:29:59Russ|werkbecause most of the work is writing a big long register, or writing a bit long register while reading it back
20:30:06rmkyou'll be _slower_
20:30:15Russ|werkrmk: not a seperate function
20:30:42Russ|werkif (dest) *dest = read_...
20:31:05Russ|werkthe vast majoruty of time on my jtag hardware is waiting for the ISA bus
20:31:21Russ|werkthe CPU can go plenty fast, but has to wait for the ISA bus timings
20:31:45Russ|werkand another read means another wait
20:31:51rmkgrumbles - that's 2 new commands ;(
20:31:58Russ|werknot really
20:32:09Russ|werkless commands, you don't need a read
20:32:29Russ|werkyou just pass in a source area, a destination area, and a length
20:32:39Russ|werkthe only ioctl
20:34:03Russ|werkif the destination area is NULL, don't do reads
20:34:29Russ|werkthe source area would have to be twice as big, or you would need a TDI area, and a TMS area
20:35:07rmkRuss: if you're not going to look at what's already in place...
20:35:22rmksighs
20:35:30Russ|werknot looking at whats in the place, just the pointer
20:35:40Russ|werker
20:35:42Russ|werksorry
20:40:34Russ|werkoh, you do have tap code (some)
20:47:43erikmOK, only seven questions about the patch. Let's see what happens.
20:49:02erikm(that's an average of one question per pathed file :)
20:51:54Russ|werkjtag_tap_data() is nice, but it needs some way of calling it that has in NULL
20:56:18erikmgoes home
20:56:36erikmbye
21:08:29Russ|werkthe userspace interaction should probably be broken out into a jtag_generic.c file
21:09:22Russ|werkand then one of the jtag_???.c files can be chosen to be linked in
21:09:29Russ|werkjtag_parpart.c
21:09:36Russ|werkjtag_sa1100gpio.c
21:09:47Russ|werketc
21:16:33rmkRuss: indeed.
21:18:39Russ|werkI don't know what I'd call my hardware
21:18:56Russ|werkyou write TDI & (TMS << 1) to an address
21:19:14Russ|werkthen read back (optionally) the aaddress & 1 to TDO
21:19:36Russ|werkit generates TCLK using nCS and nMEMW
21:21:56Russ|werkwhat about an option to reset the device?
21:24:31rmkRuss: Assabet doesn't give you TRST ;(
21:25:03rmkbut we could do that.
21:25:31Russ|werker, I guess going to test/logic reset does that
21:26:37rmkon some boards, they wire TRST to the real reset line as well
21:27:11Russ|werkI mean just making the CPU do a reset by entering test/logic reset and leaving it there
21:27:47Russ|werkso nm
21:28:56Russ|werkwhat about ways to change the pin mapping, so the userspace code can autodetect the cable
21:32:10rmkyou'll be adding cycles in the critical region ;(
21:32:26rmknote also that I've not considered any smp issues in that driver
21:32:38rmkit will be racy therefore.
21:33:17rmkie, we currently don't prevent two processes opening the device...
21:47:53Russ|werkI don't think CPU cycles are very critical
21:48:20Russ|werkthe max speed that a SA-11x0 is rated for on TCLK is 20MHz
21:49:21Russ|werkand highest frequency a parallel port will produce is much lower than that
21:51:22rmksend me a patch then ;)
21:56:23Russ|werkprobably just a configure option to swap tdi and tms and tclk...
22:00:43rmkwhee, now have a "lookup chip by name" and "lookup pin by name and type"
22:01:39Russ|werkso...I can just say D23, and its D23
22:02:28rmkyou can say entity_get_cell(<sa1110_entity>, CT_OUT, "D23")
22:02:50rmkfeel free to suggest a better name than "cell" or "pin"
22:03:01Russ|werkcell is perfect
22:03:15Russ|werkI don't know what CT_OUT means
22:03:26rmkyou also have entity_lookup(<list>, "sa1110")
22:03:56rmkwell, sa1110 BS cell listing seems to have 3 cells for most pins - enable, out, in
22:04:21rmkjust an extra attribute, but we could integrate it into the name
22:06:20Russ|werkwell, for all 32 data lines, there is one enable cell
22:06:38rmklook at the TXD, RXD etc lines.
22:06:49Russ|werkthe gpio lines are a good example
22:06:59rmkyep.
22:08:16rmkneeds to hide those pesky read()s into the library before moving any further.
22:09:09rmkThe first thing I intend to do after that is to re-write Jflash to use this.
22:09:37Russ|werkthat will clean up the Jflash code significantly
22:09:57rmkoh, any ideas if/how other jtag stuff automatically detects what's in the chain?
22:09:58Russ|werkrename it to jflash.c while you are at it
22:10:04rmkgrins
22:10:17Russ|werkoh, registers
22:10:22rmkIt should be either jflash or JFlash
22:10:31Russ|werklike if a chip has a loopback register
22:10:40rmkI can easily detect how many chips there are in the chain...
22:11:00Russ|werkoh, a jtag chain
22:11:19Russ|werkyah, if the use of devices on a chain was seemless, that would be great
22:11:54Russ|werkI always detect if hardware is there by writing a magic number to the loopback register
22:12:18rmkthe problem I have is that some chips, the IDCODE instr is 00110 (SA1110), on others the instr is 0001 (CPLDs)
22:12:44Russ|werkwhats that 1 bit register called?
22:12:57rmkbypass
22:14:02Russ|werkwhat does 00001 do to a sa1100?
22:14:11Russ|werker, sa11x0
22:14:17rmksample/preload
22:15:01Russ|werkis bypass a diffrent instuction on them both as well?
22:15:14rmkno - seems to be all ones.
22:15:20Russ|werkbummer
22:15:26rmknote the different instruction lengths as well...
22:15:32Russ|werkoh, bonus
22:15:49Russ|werkyou can use bypass to determine a) if its working and b) which one it is
22:16:21rmkyep - I've got the assabet rigged up atm, and it reports:
22:16:21rmkThere are 3 devices on the chain.
22:16:39rmkby using the bypass register to count the number of bits with '0's, while shifting '1's in
22:21:31Russ|werkand you can tell which device accepts 4 bit instructions, and which device accepts 5 bit instructions this way?
22:22:17rmkno - I could detect how long the total instruction chain length is, but that doesn't help
22:23:43Russ|werkwhy not
22:24:09Russ|werkthen you would know whether or not to you 00110 for IDCODE, or 0001 for IDCODE
22:24:16Russ|werker, to use
22:24:32rmkif you have a length of 13, how do you know where the 4 or 5 lengths are?  It could be 4, 5, 4 or 5, 4, 4 or 4, 4, 5
22:24:36Russ|werkoh
22:25:25Russ|werkyou talk to the first one, do something that would break the chain if the instruction length is 4, but allow the chain to keep working if it is 5
22:25:54Russ|werkif it broke, then its 4, if it didn't, then its 5
22:26:25rmkdefine "break" when you've got vendor-specific instructions in the mix
22:26:25Russ|werkmove to the next device and repeat (if it breaks, you probably have to reset the entire chain)
22:26:38rmknote that you can't remove devices from the instruction chain ;(
22:26:48rmkdata chain yes.
22:27:07Russ|werkwhat is 0000/00000
22:27:23rmkextest
22:28:00Russ|werkhmm...there has to be a fairly clean way of determining what the instruction length of each device is
22:28:03Russ|werkor not
22:28:24rmkdo you know if any jtag equipment does it?
22:28:51Russ|werki'm not familiar with any chip level jtag equiptment
22:29:21rmkmaybe its the case that they have to be told. ;(
22:29:26Russ|werkI suppose you could refer to work if the devices IDCODE isn't in you IDCODE list
22:29:38Russ|werkdammit, refuse to work, not refer
22:30:06rmkthat's my intention currently; seems to be the only sane way to go.
22:30:10Russ|werkor, if you can't get an IDCODE from a device, try skipping over it to the next one
22:30:24Russ|werkfirst, try skipping over 4 bits, then 5
22:30:49Russ|werkthe more unknown devices in the chain, the more guessing is required
22:31:26rmkgets worried - parity bits???
22:31:31Russ|werk?
22:31:42Russ|werkI mean, you get to the first device
22:32:04Russ|werkassume that the IDCODE instruction is 0001, feed it that, read the IDCODE
22:32:09rmkahhhhh
22:32:24rmkreads 16.2 in the sa1100 manual.
22:32:32Russ|werkdoes it match? yes, move to the next device, we know the about the first one
22:32:39rmkTRST - does two things...
22:32:53rmkfirstly, it sets the BS cells to system mode.
22:33:01rmksecondly, it selects IDCODE mode
22:33:31rmkwonders if that's true if you're in test-logic reset state.
22:35:18rmkdecides to try an experiment.
22:36:12Russ|werkit doesn't...try 00110, does it match? yes, move on to the next device
22:36:33Russ|werkno, assume its 4 bits and move on to the next device (repeat process)
22:37:01rmkYes!  It works!
22:37:06Russ|werkprocess worked? then first device is unknown, but has an instruction length of 4 bits
22:37:18Russ|werkno? try again with the assumption of 5
22:37:25rmkGo to test logic reset, then round to shift-dr, and you read the ID code
22:37:43Russ|werkbut do all devices do that
22:37:56rmkwell, the CPLDs have as well as the StrongARM
22:37:56Russ|werk(default to IDCODE)
22:38:10rmkwishes he had the IEEE spec
22:39:02Russ|werkus it legal for intel to give you a copy?
22:39:26rmks/intel/ARM/ maybe.
22:39:59rmkneeds to work out how he can string them a line that'll fit into his current contract with them.
22:40:02Russ|werkif you are improving jflash/assabet, they might be willing to give you one
22:40:38rmkI've no business links with Intel, so its legally questionable I think.
22:40:53Russ|werkI imagine you don't want to screw with an NDA
22:41:29rmkI've managed to avoid such nasty things so far...
22:41:59rmkwonders if he can get it from the IEE in London
22:51:08rmkgoes zzz

Generated by irclog2html.pl by Jeff Waugh - find it at freshmeat.net! Modified by Tim Riker to work with infobot logs, split per channel and by date, etc.