You can subscribe to this list here.
| 2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(79) |
Aug
(27) |
Sep
(64) |
Oct
(202) |
Nov
(31) |
Dec
(59) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2002 |
Jan
(125) |
Feb
(173) |
Mar
(13) |
Apr
(140) |
May
(75) |
Jun
(1) |
Jul
(37) |
Aug
(14) |
Sep
|
Oct
(20) |
Nov
(9) |
Dec
(2) |
| 2003 |
Jan
(51) |
Feb
(12) |
Mar
(18) |
Apr
(24) |
May
(1) |
Jun
|
Jul
|
Aug
(72) |
Sep
(12) |
Oct
(18) |
Nov
(60) |
Dec
(26) |
| 2004 |
Jan
(1) |
Feb
(40) |
Mar
(3) |
Apr
(3) |
May
|
Jun
(1) |
Jul
(4) |
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
(1) |
| 2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
(1) |
Dec
(5) |
| 2006 |
Jan
(13) |
Feb
(5) |
Mar
(8) |
Apr
(13) |
May
(7) |
Jun
(6) |
Jul
(10) |
Aug
(6) |
Sep
(6) |
Oct
(35) |
Nov
(20) |
Dec
(10) |
| 2007 |
Jan
(13) |
Feb
(9) |
Mar
(2) |
Apr
(1) |
May
(1) |
Jun
(2) |
Jul
(2) |
Aug
(3) |
Sep
(1) |
Oct
|
Nov
(1) |
Dec
(1) |
| 2008 |
Jan
|
Feb
|
Mar
(1) |
Apr
(4) |
May
(1) |
Jun
|
Jul
|
Aug
(2) |
Sep
(1) |
Oct
|
Nov
|
Dec
|
| 2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(54) |
Jun
(78) |
Jul
(35) |
Aug
(21) |
Sep
(21) |
Oct
(29) |
Nov
(10) |
Dec
(5) |
| 2010 |
Jan
|
Feb
|
Mar
(26) |
Apr
(55) |
May
(73) |
Jun
(63) |
Jul
(38) |
Aug
(39) |
Sep
(19) |
Oct
(2) |
Nov
(1) |
Dec
(1) |
| 2011 |
Jan
(2) |
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
|
From: Dorothy M. <scb...@ya...> - 2003-12-19 11:55:08
|
TECHNOLOGY SECTOR - TECHNOLOGY BREAKTHROUGH - PATENTS FILED Symbol: NMMG Market: OTC.BB Sector: L.E.D. TECHNOLOGY Barcharts Rate NMMG an 80% BUY - http://quotes.barchart.com/texpert.asp?sy= m=3DNMMG BREAKING NEWS in technology - New Millennium Media International (OTCBB: N= MMG) announces that it has officially filed its patents---with over 50 cla= ims---protecting its revolutionary technology, a breakthrough in (LED) arc= hitecture. The OnScreen=99 LED Display Architecture is a radical new type= of Bright LED video display architecture that is expected to revolutioniz= e the 1.5 billion dollar LED display market. This breakthrough technology= will give NMMG great potential to capture significant market share in the= the 19 billion dollar outdoor advertising market. With all the new initiatives in Homeland Security and the Amber Alert, Int= elligent Message Signs (IMS) are the future, and with the recent signing o= f new laws and federally mandated funds in the billions of dollars, NMMG a= nd its patent-pending OnScreen technology is poised to lead the way. NMMG= currently has the only technology that allows it to build onto exisiting = infrastructure, i.e. road signs, billboards, etc. Imagine one day you are= driving home on the freeway past a road sign you have seen a thousand tim= es before--but this time you notice something different. This time you se= e a WARNING lit up--truck overturned 1 mile ahead--hazardous chemicals spi= lled. The sign advises you to exit immediately and to safety. Such a war= ning was broadcast instantly and using NMMG's OnScreen technology. You ne= ver noticed, as you drove by the roadside every day, that OnScreen was dra= ped over the sign all this time. Now it has sprung into action by the pun= ch of a button on a PC from a central station--instantly and just in the n= ick of time. You have just experienced OnScreen technology. And that is = just one example. The possibilities are limitless. And because OnScreen = can be applied to existing structures like road signs or billboards, its c= ost-effectiveness makes it far and away the technology choice. NMMG will unveil its breakthrough technology at the STRATEGIES IN LIGHT co= nference on February 2-4, 2004 at the San Mateo Marriott Hotel in San Mate= o, California. This unique event is considered to be the premier annual fo= rum for addressing commercial developments in high-brightness LEDs, as wel= l as an unparalleled networking opportunity for suppliers and users of the= se devices. The growing interest in, and expanding attendance at, this eve= nt, reflects the excitement associated with a market that has grown by 50= % since 2000, while other semiconductor and optical component industries h= ave stagnated or experienced large declines. ON-SCREEN=99 TECHNOLOGY OnScreen=99 is expected to create a broad-range of products with much bett= er resolution and brighter pictures than the current generation of display= s. OnScreen=99 will be visible in direct sunlight yet avoid many of the is= sues associated with current displays including sun-loading, wind-loading = and excessive weight. In addition, the new LED architecture produces an a= dvantage that is not available in today's marketplace: a more lightweight,= pliable display that can fit any application. These are important advant= ages as the High Brightness LED market is expected to grow from 1.2 billio= n dollars in 2000 to 4 billion in 2006. In addition, according to Stanfor= d Resources, the LED sign market value alone is expected to exceed 1 billi= on by 2006. These projections are made based on existing technology and do= not take into account emerging technologies, such as OnScreen=99, that ca= n rapidly alter the size and shape of this market. COMMERCIAL MARKET & STRATEGY NMMG's initial marketing strategy revolves around licensing intellectual p= roperty (IP) to worldwide manufacturers of LED display products and compon= ents. The LED sign market is projected to reach over 1 billion dollars by = 2006. Lumiled's projects that high brightness LED's, used in LED signs alo= ne, will exceed 1.2 billion by 2007. If these projections hold, the fully = manufactured signs would represent a $5 billion market. Whichever number i= s accurate, they both point towards a robust market for these new LED disp= lays. Many projections don't take into account emerging high growth applic= ations such as the Amber Alert project, Homeland Security and roadway =93i= ntelligent message transfer=94. THE MARKET An article in Media Post's Media Daily News in March of 2003 noted that th= e outdoor industry has successfully weathered the recession and that =93ou= r large members say they're having a great first quarter=94 in 2003. They = go on to note that technology is expected to transform both the display an= d measurement of outdoor advertising. According to Media Daily the most ex= citing news is coming on the display side, where =93Lamar Advertising is c= onverting their key boards to LED units whose messages can be changed at w= ill and sold in day-parts by the hour or even the minute.=94 They added th= at =93Clear Channel's backlit subway panels in stairwells are being conver= ted to LED as well=94. Together these companies represent two of the three= largest outdoor US advertisers. Recent Federal Government legislation has also placed a spotlight on expan= ding the =93Amber Alert=94 network nationwide. The highly publicized succe= ss in locating a number of kidnapped children shortly after their abductio= n in California has now triggered federal funding for U.S.-wide expansion = of these variable-message signs. Homeland Security issues have also incre= ased the number of early warning signs being planned and funded as part of= an overall information sharing network. Traffic safety is also becoming a= much higher priority in the U.S.. It is estimated that just over 60,000 r= oadway dynamic message signs are in operation in the United States. In Jap= an alone there are over 1.5 million of these signs. The United States repr= esents a huge growth market for LED displays. GROWTH OPPORTUNITES In addition to the outdoor television market, another interesting and exci= ting application for OnScreen=99 arrays is artistic lighting in dramatic c= urved and shaped displays in places like Las Vegas, New York City or reall= y virtually any venue. The tensile, flexible structure of OnScreen=99 prov= ides unlimited opportunity for creativity. The anticipated cost reductions of OnScreen=99 will also provide ample opp= ortunity for growth of the large-scale LED display market itself. OnScreen= =99's unique architecture opens the door for new applications such as curv= ed implementations, billboards on the sides of buildings where tenants can= still see out, and lower cost mobile applications on the sides of existin= g vehicles. Homeland Security, Amber Alert variable message signage and instant messag= e transfer applications can also benefit significantly from the advantages= of OnScreen=99. Reduced wind-loading and weight can significantly lower t= he cost of the superstructures required to support these signs and also re= duce the cost to install and maintain them. JUST LOOK WHO IS ALREADY ON BOARD New Millennium has established a Technology Breakthroughsentific Advisory = Board comprised of leading experts in key categories in the research and m= arketing of LED technology. David Pelka, Ph.D.- Chairman =96 Well known expert in physics, founded TIR= Technologies Inc. to pursue patents for his LED lighting systems and LCD = backlits. Dr. Pelka secured more than $2 million in venture capital and l= icensing for TIR before it was acquired by Teledyne Electronic Technologie= s (NYSE:TDY). Since the buyout, Dr. Pelka has served as Director of Produ= ct Development for Teledyne Lighting and Display Products. Dr. Pelka's ac= colades include fellowships and awards from the Smithsonian, National Defe= nse, Northrop University and Ebell Fellowship, as well as countless articl= es published in both classified (the U.S. Air Force and Army) publications= and various non-classified publications. He has founded several technolo= gy companies, which he successfully expanded by building strong revenue st= reams and securing venture capital investments and government contracts. Robert V. Steele, Ph.D. =96 Director of Optoelectronics Programs and Chair= man of the annual conference =93Strategies in Light=94 for Strategies Unli= mited. Steele is responsible for all of Strategies Unlimited's activities= in the area of optoelectronic components, for which the 23-year-old marke= t research firm has specialized in providing market research reports and c= onsulting services. Co-author of =93Solid-State Lighting: New Growth Oppo= rtunities for High-Brightness LED's=94, Dr. Steele writes regularly for in= dustry publications on high-brightness LED markets and applications such a= s Forbes, The Wall Street Journal, The Economist and more. John Biondo =96 Owner and President of Silicon Robotics Corporation, which= provides various product development services including electronic and el= ectromechanical design, software development, optics, and project manageme= nt. Biondo also has extensive patent-process experience. In 1980, Biondo= launched Electric Filmworks, which produced computer-generated visual eff= ects for the television and motion picture industry. He also designed an = apparatus using newly available and inexpensive microcomputers, which allo= wed the company to compete successful against older, more established firm= s. To transfer from the service-sector into manufacturing, Biondo sold El= ectric Filmworks in 1989 and co-founded Amazing Photos. Amazing Photos de= signed, manufactured and sold a variety of innovative coin-operated photo = booths. Polaroid Corporation licensed and marketed the two most popular a= nd cost effective booths under their own name. Richard Reis, Ph.D. =96 Executive Director of the Alliance for Innovative = Manufacturing at Stanford and Director for Academic Partnerships in the St= anford Learning Laboratory. Dr. Reis' impressive career includes serving = as; the Executive director of the Stanford Center for integrated Systems, = a major research partnership between Stanford and 15 industrial companies;= a Consulting Professor in both the Stanford University Electrical and Mec= hanical Engineering departments; professor of a year-round seminar that is= part of the Stanford University Future Professors of Manufacturing progra= m; a professor of astronomy at the College of San Mateo, Calif.; and a cur= riculum consultant at Menlo College, Calif. Ben Jacobson, Ph.D. =96 Dr. Jacobson has worked on numerous impressive LED= projects that have exponentially increased beam density and brightness an= d reduced system costs. Additionally, these projects have improved power r= equirements, heat load and LED count, while improving compactness, efficie= ncy and performance over competitors' products. Dr. Jacobson was instrume= ntal in positioning Illumitech as a new company developing high-performanc= e LED lighting systems with thermal packaging. Dr. Jacobson has over a de= cade of experience developing and marketing new technology for the display= industry, both in his previous positions and currently at Illumitech. Pr= ior to Illumitech, Dr. Jacobson held various executive and research direct= orial positions at EG Controls Inc., ARCH Venture Partners, NiOptics Corpo= ration and the University of Chicago. He has seven U.S. patents, and has = published 13 research articles and seven conference presentations. Joseph D. Tajnai, Ph.D. =96 Dr. Tajnai is a consultant in Optical Radiatio= n Safety, LED's & Applications and Optics & Optical Measurement Training. = He was an engineer, Technology Breakthroughsentist and technical manager f= or 23 years at Hewlett-Packard and Agilent Technologies. He has focused on= fiber optic development, LED development and measurements, new product pr= ocesses, mathematical modeling and international and US standards and regu= lations. He also worked with GE Sylvania for nine years and contributed he= avily to their YAG laser development. Dr. Tajnai received his BS, MS and P= h.D. from California Institute of Technology in Electrical Engineering and= Applied Physics. Please note that NMMG had absolutley nothing to do with this report and is= not a participant in any way. No more advertisements: www.inet-notification.com/away.html Technology Breakthroughs is an independent research firm. This report is b= ased on Technology Breakthroughs's independent analysis but also relies on= information supplied by sources believed to be reliable. This report may = not be the opinion of NMMG management. Technology Breakthroughs has also b= een retained to research and issue reports on NMMG. Technology Breakthroug= hs may from time to time purchase or sell NMMG common shares in the open m= arket without notice. The information contained in this report shall not c= onstitute, an offer to sell or solicitation of any offer to purchase any s= ecurity. It is intended for information only. Some statements may contain = so-called "forward-looking statements". Many factors could cause actual re= sults to differ. Investors should consult with their Investment Advisor co= ncerning NMMG. Copyright 2003 =A9 Technology Breakthroughs. All Rights Res= erved. Technology Breakthroughs was paid eight thousand dollars to distrib= ute this report. Technology Breakthroughs is not affiiated with Technology= Breakthroughs and is not responsible for newsletter content. All informa= tion in this report can be obtained on the world wide web at www.nmmimedia= com. New Millenimum Media was not a participant in this newsletter in an= y way. geru n |
|
From: Russ D. <ru...@us...> - 2003-12-13 00:24:35
|
Update of /cvsroot/blob/blob/src/blob In directory sc8-pr-cvs1:/tmp/cvs-serv16041/src/blob Modified Files: smdk2500.c Log Message: swap interfaces Index: smdk2500.c =================================================================== RCS file: /cvsroot/blob/blob/src/blob/smdk2500.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- smdk2500.c 27 Nov 2003 08:04:16 -0000 1.4 +++ smdk2500.c 13 Dec 2003 00:24:32 -0000 1.5 @@ -107,6 +107,8 @@ timer_driver = &s3c2500_timer_driver; ether_driver = &s3c2500_ether_driver; ether_driver->name = "eth0"; + /* Kernel has it backwards, so we do too */ + ether_driver->base = 0xF00C0000; } __initlist(smdk2500_init_hardware, INIT_LEVEL_DRIVER_SELECTION); |
|
From: Russ D. <ru...@us...> - 2003-12-12 02:59:23
|
Update of /cvsroot/blob/blob/src/blob In directory sc8-pr-cvs1:/tmp/cvs-serv30957/src/blob Modified Files: start-s3c2500.S Log Message: How did THAT work for so long Index: start-s3c2500.S =================================================================== RCS file: /cvsroot/blob/blob/src/blob/start-s3c2500.S,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- start-s3c2500.S 27 Nov 2003 03:34:02 -0000 1.2 +++ start-s3c2500.S 12 Dec 2003 02:59:20 -0000 1.3 @@ -66,10 +66,12 @@ /* Disable Custom clocking */ mov r0, #ASIC_BASE orr r0, r0, #SYSCFG_BASEB - mov r0, #0 + ldr r1, [r0] + and r1, r1, #REMAP /* Reset all the bits except remap */ str r1, [r0] /* Disable any clock division */ + mov r1, #0 str r1, [r0, #CLKCON] /* Make sure all external clocks are enabled */ @@ -84,7 +86,8 @@ str r1, [r0, #SPLL] /* Enable "custom" clocks */ - mov r1, #CPLLREN | SPLLREN + ldr r1, [r0] + orr r1, r1, #CPLLREN | SPLLREN str r1, [r0] /* init LED */ |
|
From: Russ D. <ru...@us...> - 2003-12-12 02:58:44
|
Update of /cvsroot/blob/blob/include/blob/arch In directory sc8-pr-cvs1:/tmp/cvs-serv30869/include/blob/arch Modified Files: s3c2500-regs.h Log Message: fix some defines for the s3c2500 Index: s3c2500-regs.h =================================================================== RCS file: /cvsroot/blob/blob/include/blob/arch/s3c2500-regs.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- s3c2500-regs.h 27 Nov 2003 03:23:24 -0000 1.2 +++ s3c2500-regs.h 12 Dec 2003 02:58:41 -0000 1.3 @@ -20,12 +20,12 @@ /* Get the M value for a speed in MHz a P, and an S */ #define Fin 10 /* The +(Fin - 1) thing is so it rounds up */ -#define PLL_CALC_M(Fout, s, p) \ +#define PLL_CALC_M(Fout, p, s) \ (((p + 2) * (1 << s) * Fout + (Fin - 1)) / Fin - 8) /* get the whole kit-n-kaboodle */ -#define PLL_VALUE(Fout, s, p) \ - (PLL_S(s) | PLL_P(p) | PLL_M(PLL_CALC_M(Fout, s, p))) +#define PLL_VALUE(Fout, p, s) \ + (PLL_S(s) | PLL_P(p) | PLL_M(PLL_CALC_M(Fout, p, s))) /* get the MHz as a number */ @@ -39,12 +39,12 @@ #define GET_MHz(x) \ _GET_MHz(GET_PLL_S(x), GET_PLL_P(x), GET_PLL_M(x)) -/* PLL defines for a 10MHz input */ -#define SPEED_33MHz PLL_VALUE(33, 1, 3) -#define SPEED_48MHz PLL_VALUE(48, 3, 3) -#define SPEED_50HMz PLL_VALUE(50, 1, 3) -#define SPEED_66MHz PLL_VALUE(66, 1, 2) -#define SPEED_96MHz PLL_VALUE(96, 3, 2) +/* PLL defines for a 10MHz input MHz P S */ +#define SPEED_33MHz PLL_VALUE(33, 1, 3) +#define SPEED_48MHz PLL_VALUE(48, 3, 3) +#define SPEED_50HMz PLL_VALUE(50, 1, 3) +#define SPEED_66MHz PLL_VALUE(66, 1, 2) +#define SPEED_96MHz PLL_VALUE(96, 3, 2) #define SPEED_100MHz PLL_VALUE(100, 1, 2) #define SPEED_125MHz PLL_VALUE(125, 1, 1) #define SPEED_133MHz PLL_VALUE(133, 1, 1) @@ -83,7 +83,7 @@ */ #define SYSCFG_BASEB 0x00000000 -#define SYSCFG_BASE (ASIC_BASE + SYSCFGB) +#define SYSCFG_BASE (ASIC_BASE + SYSCFG_BASEB) #define SYSCFG __REG2(SYSCFG_BASE,0x00) /* System configuration */ #define CPLLREN (1 << 31) |
|
From: Charity K. <ihs...@ya...> - 2003-12-11 14:25:35
|
BREAKING NEWS on TRHL True Health (TRHL) Signs Landmark Deal With Spectrum Care; Becomes Preferr= ed Provider To Consortium of 130+ Nursing Homes... BECKENHAM, England---PRNewswire-FirstCall---True Health, Inc., (OTC Bullet= in Board: TRHL) a leader in healthcare recruitment and pressure relieving = systems, announced today that it has been selected as the Preferred Provid= er in three product categories for Spectrum Care Ltd., a first-of-its kind= buying consortium made up of a growing number of nursing homes across the= U.K. This agreement creates efficiencies in marketing for True Health and= an improved purchasing position for Spectrum, reducing the cost of the Co= mpany's products for buyers while improving True Health's margins and sale= s channels. Spectrum Care is a recently formed consortium that consolidates the buying= power of individual nursing homes across the U.K. and currently has over = 130 homes in its network. The consortium is a unique purchasing initiative= for the U.K. nursing home market. Spectrum Care has reached preferred pur= chasing agreements with a wide range of suppliers for various goods and se= rvices. Following careful evaluation, Spectrum has chosen True Health as its prefe= rred provider in three product categories: Pressure Area Care Products, Pa= tient Moving and Handling Equipment, and Nursing Home Beds. Nursing homes = in the Spectrum Care network will be offered True Health products in these= categories at discounted prices and on preferred payment terms. True Heal= th receives access to all 130 nursing homes and has embarked on a joint ma= rketing initiative with Spectrum including a co-branded catalog and joint = sales ventures. "We are very excited about our arrangement with Spectrum. It allows us to = offer lower prices to nursing home customers so that those care centers ca= n apply their savings towards improved direct patient care," stated True H= ealth CEO, Mr. David Frances. "It also creates improved marketing and sale= s economics for us, allowing our sales team to focus on the cornerstones o= f our growth strategy: larger contracts, and the roll out of new products = and services." About True Health, Inc. True Health, through its wholly owned subsidiary, Westmeria Healthcare Lim= ited, is a full service specialist, medical equipment and medical professi= onal supplier to the healthcare industry. Its primary clients are Great Br= itain's National Health Service (NHS) and the private Nursing Home Industr= y. True Health delivers recruitment services to the NHS; specializing in t= he provision of locum radiographers and nurses. Its core business is suppl= ying proprietary branded specialist pressure relieving equipment for the h= ealthcare sector. The branded products are manufactured and licensed for t= he company in Germany, Belgium and Taiwan. The statements contained in this news release that are not historical fact= s may be statements regarding the Company's future that involve risks and = uncertainties which could cause actual results to differ materially from t= hose currently anticipated. For example, statements that describe the Comp= any's hopes, plans, objectives, goals, intentions or expectations are all = forward looking statements. Any such statements made herein about the Comp= any's future are only made as of the date of this news release. Numerous f= actors, many of which are beyond the Company's control, may affect actual = results. The Company undertakes no obligation to publicly update such forw= ard-looking statements to reflect subsequent events or circumstances. nyjxfrdb |
|
From: Russ D. <ru...@us...> - 2003-12-09 23:20:28
|
Update of /cvsroot/blob/blob/src/blob
In directory sc8-pr-cvs1:/tmp/cvs-serv13237
Modified Files:
memory.c
Log Message:
slightly more readable, and better compiler output (according to erikm)
Index: memory.c
===================================================================
RCS file: /cvsroot/blob/blob/src/blob/memory.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- memory.c 9 Dec 2003 03:28:31 -0000 1.6
+++ memory.c 9 Dec 2003 23:20:24 -0000 1.7
@@ -43,6 +43,7 @@
memory_area_t memory_map[NUM_MEM_AREAS];
+static const u32 mem_magic = 0xabadcafe;
@@ -58,14 +59,14 @@
/* first write a magic value to all memory locations */
for(addr = MEMORY_START; addr < MEMORY_END; addr += TEST_BLOCK_SIZE)
- * (u32 *)addr = 0xabadcafe;
+ * (u32 *)addr = mem_magic;
/* scan memory in blocks */
i = 0;
for(addr = MEMORY_START; addr < MEMORY_END; addr += TEST_BLOCK_SIZE) {
if(testram(addr) == 0) {
/* yes, memory */
- if(* (u32 *)addr != 0xabadcafe) { /* alias? */
+ if(* (u32 *)addr != mem_magic) { /* alias? */
dprintf("detected alias at 0x%08x, "
"aliased from 0x%08x\n",
addr, * (u32 *)addr);
|
|
From: Erik M. <J.A...@it...> - 2003-12-09 14:10:01
|
On Mon, Dec 08, 2003 at 07:28:33PM -0800, Russ Dill wrote:
> Update of /cvsroot/blob/blob/src/blob
> In directory sc8-pr-cvs1:/tmp/cvs-serv1976/src/blob
>=20
> Modified Files:
> memory.c=20
> Log Message:
> allow probing of ram at 0x0
Could you make the magic word a define? Something like:
#define mem_magic 0xabadcafe
or
static const u32 mem_magic =3D 0xabadcafe;
(I think the compiler will generate slightly better code for the latter
case).
> --- memory.c 13 Feb 2002 00:09:51 -0000 1.5
> +++ memory.c 9 Dec 2003 03:28:31 -0000 1.6
> @@ -56,16 +56,16 @@
> for(i =3D 0; i < NUM_MEM_AREAS; i++)
> memory_map[i].used =3D 0;
> =20
> - /* first write a 0 to all memory locations */
> + /* first write a magic value to all memory locations */
> for(addr =3D MEMORY_START; addr < MEMORY_END; addr +=3D TEST_BLOCK_SIZE)
> - * (u32 *)addr =3D 0;
> + * (u32 *)addr =3D 0xabadcafe;
And this will become:
* (u32 *)addr =3D mem_magic;
=20
etc.
Same code, slightly better readable.
Erik
--=20
Erik Mouw
J.A...@it... mo...@nl...
|
|
From: Russ D. <ru...@us...> - 2003-12-09 03:28:34
|
Update of /cvsroot/blob/blob/src/blob
In directory sc8-pr-cvs1:/tmp/cvs-serv1976/src/blob
Modified Files:
memory.c
Log Message:
allow probing of ram at 0x0
Index: memory.c
===================================================================
RCS file: /cvsroot/blob/blob/src/blob/memory.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- memory.c 13 Feb 2002 00:09:51 -0000 1.5
+++ memory.c 9 Dec 2003 03:28:31 -0000 1.6
@@ -56,16 +56,16 @@
for(i = 0; i < NUM_MEM_AREAS; i++)
memory_map[i].used = 0;
- /* first write a 0 to all memory locations */
+ /* first write a magic value to all memory locations */
for(addr = MEMORY_START; addr < MEMORY_END; addr += TEST_BLOCK_SIZE)
- * (u32 *)addr = 0;
+ * (u32 *)addr = 0xabadcafe;
/* scan memory in blocks */
i = 0;
for(addr = MEMORY_START; addr < MEMORY_END; addr += TEST_BLOCK_SIZE) {
if(testram(addr) == 0) {
/* yes, memory */
- if(* (u32 *)addr != 0) { /* alias? */
+ if(* (u32 *)addr != 0xabadcafe) { /* alias? */
dprintf("detected alias at 0x%08x, "
"aliased from 0x%08x\n",
addr, * (u32 *)addr);
|
|
From: Stefan E. <se...@us...> - 2003-12-08 14:41:06
|
Update of /cvsroot/blob/blob/include/blob/arch In directory sc8-pr-cvs1:/tmp/cvs-serv16464 Modified Files: ra_alpha.h Log Message: GPIO init Index: ra_alpha.h =================================================================== RCS file: /cvsroot/blob/blob/include/blob/arch/ra_alpha.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- ra_alpha.h 11 Nov 2003 14:27:12 -0000 1.4 +++ ra_alpha.h 8 Dec 2003 14:41:00 -0000 1.5 @@ -129,25 +129,25 @@ #define RST(reg,bit) ((reg) &= ~(1<<(bit))) /* GPIO configuration */ -#define GPIO0_VALUE GPIO_OUT_LO -#define GPIO1_VALUE GPIO_OUT_LO -#define GPIO2_VALUE GPIO_OUT_LO -#define GPIO3_VALUE GPIO_INPUT /* USB IRQ */ -#define GPIO4_VALUE GPIO_INPUT /* LAN IRQ (neg) */ -#define GPIO5_VALUE GPIO_INPUT /* CF IRQ (neg) */ -#define GPIO6_VALUE GPIO_OUT_LO -#define GPIO7_VALUE GPIO_OUT_LO -#define GPIO8_VALUE GPIO_OUT_LO -#define GPIO9_VALUE GPIO_OUT_LO +#define GPIO0_VALUE GPIO_OUT_LO +#define GPIO1_VALUE GPIO_OUT_LO +#define GPIO2_VALUE GPIO_INPUT /* IRQ CPLD */ +#define GPIO3_VALUE GPIO_INPUT /* USB IRQ */ +#define GPIO4_VALUE GPIO_INPUT /* LAN IRQ (neg) */ +#define GPIO5_VALUE GPIO_INPUT /* CF IRQ (neg) */ +#define GPIO6_VALUE GPIO_INPUT /* nUSB_H_OVERCURRENT */ +#define GPIO7_VALUE (GPIO_OUT_LO|GPIO_ALT_FN1) /* 48MHz Clock Out for CPLD */ +#define GPIO8_VALUE GPIO_INPUT /* OnOff KBD */ +#define GPIO9_VALUE GPIO_OUT_LO #define GPIO10_VALUE GPIO_OUT_LO -#define GPIO11_VALUE GPIO_OUT_LO -#define GPIO12_VALUE GPIO_OUT_LO /* watchdog_strobe */ -#define GPIO13_VALUE GPIO_INPUT /* cpld_hw_reset */ -#define GPIO14_VALUE GPIO_INPUT /* cpld_?? */ -#define GPIO15_VALUE (GPIO_OUT_HI | GPIO_ALT_FN2) /* nCS1 [img_buffer] */ -#define GPIO16_VALUE GPIO_OUT_LO -#define GPIO17_VALUE GPIO_INPUT /* cpld_?? */ -#define GPIO18_VALUE GPIO_INPUT /* vlio_ready_signal */ +#define GPIO11_VALUE (GPIO_OUT_LO|GPIO_ALT_FN1) /* 3.6 MHz Clock out */ +#define GPIO12_VALUE GPIO_OUT_LO +#define GPIO13_VALUE GPIO_OUT_LO +#define GPIO14_VALUE GPIO_OUT_LO +#define GPIO15_VALUE (GPIO_OUT_HI|GPIO_ALT_FN2) /* nCS1 */ +#define GPIO16_VALUE (GPIO_OUT_LO|GPIO_ALT_FN2) /* LCD Contrast PWM */ +#define GPIO17_VALUE (GPIO_OUT_LO|GPIO_ALT_FN2) /* LCD Bright PWM */ +#define GPIO18_VALUE GPIO_INPUT /* RDY LAN */ #define GPIO19_VALUE GPIO_OUT_LO #define GPIO20_VALUE GPIO_OUT_LO #define GPIO21_VALUE GPIO_OUT_LO @@ -162,39 +162,39 @@ #define GPIO30_VALUE GPIO_OUT_LO #define GPIO31_VALUE GPIO_OUT_LO #define GPIO32_VALUE GPIO_OUT_LO -#define GPIO33_VALUE GPIO_OUT_HI /* nCS5 [unused] */ -#define GPIO34_VALUE (GPIO_INPUT | GPIO_ALT_FN1) /* FFRXD */ -#define GPIO35_VALUE GPIO_OUT_HI /* Core Voltage */ -#define GPIO36_VALUE GPIO_OUT_HI /* Core Voltage */ -#define GPIO37_VALUE GPIO_OUT_LO -#define GPIO38_VALUE GPIO_OUT_LO -#define GPIO39_VALUE (GPIO_OUT_LO | GPIO_ALT_FN2) /* FFTXD */ -#define GPIO40_VALUE GPIO_OUT_LO -#define GPIO41_VALUE GPIO_OUT_LO -#define GPIO42_VALUE GPIO_OUT_LO -#define GPIO43_VALUE GPIO_OUT_LO -#define GPIO44_VALUE GPIO_OUT_LO -#define GPIO45_VALUE GPIO_OUT_LO -#define GPIO46_VALUE GPIO_OUT_LO -#define GPIO47_VALUE GPIO_OUT_LO -#define GPIO48_VALUE GPIO_OUT_LO -#define GPIO49_VALUE GPIO_OUT_HI /* cpld_pcmcia_pwe */ -#define GPIO50_VALUE GPIO_OUT_LO -#define GPIO51_VALUE GPIO_OUT_LO -#define GPIO52_VALUE GPIO_OUT_LO -#define GPIO53_VALUE GPIO_OUT_LO -#define GPIO54_VALUE GPIO_OUT_LO -#define GPIO55_VALUE GPIO_OUT_LO -#define GPIO56_VALUE GPIO_INPUT -#define GPIO57_VALUE GPIO_INPUT -#define GPIO58_VALUE GPIO_OUT_LO -#define GPIO59_VALUE GPIO_OUT_LO -#define GPIO60_VALUE GPIO_OUT_LO -#define GPIO61_VALUE GPIO_OUT_LO -#define GPIO62_VALUE GPIO_OUT_LO -#define GPIO63_VALUE GPIO_OUT_LO -#define GPIO64_VALUE GPIO_OUT_LO -#define GPIO65_VALUE GPIO_OUT_LO +#define GPIO33_VALUE (GPIO_OUT_HI|GPIO_ALT_FN2) /* nCS5 */ +#define GPIO34_VALUE (GPIO_INPUT|GPIO_ALT_FN1) /* FFRXD */ +#define GPIO35_VALUE GPIO_OUT_HI /* Core Fast 1 */ +#define GPIO36_VALUE GPIO_OUT_HI /* Core Fast 2 */ +#define GPIO37_VALUE GPIO_OUT_LO /* n3V3_En */ +#define GPIO38_VALUE GPIO_OUT_LO /* n5V4_En */ +#define GPIO39_VALUE (GPIO_OUT_LO|GPIO_ALT_FN2) /* FFTXD */ +#define GPIO40_VALUE GPIO_OUT_HI /* nUSB_H_ON */ +#define GPIO41_VALUE GPIO_OUT_LO /* CF_RST */ +#define GPIO42_VALUE (GPIO_INPUT|GPIO_ALT_FN1) +#define GPIO43_VALUE (GPIO_OUT_HI|GPIO_ALT_FN2) +#define GPIO44_VALUE (GPIO_INPUT|GPIO_ALT_FN1) +#define GPIO45_VALUE (GPIO_OUT_HI|GPIO_ALT_FN2) +#define GPIO46_VALUE (GPIO_INPUT|GPIO_ALT_FN2) +#define GPIO47_VALUE (GPIO_OUT_HI|GPIO_ALT_FN1) +#define GPIO48_VALUE (GPIO_OUT_HI|GPIO_ALT_FN2) /* nPOE */ +#define GPIO49_VALUE (GPIO_OUT_HI|GPIO_ALT_FN2) /* nPWE */ +#define GPIO50_VALUE (GPIO_OUT_HI|GPIO_ALT_FN2) /* nPIOR */ +#define GPIO51_VALUE (GPIO_OUT_HI|GPIO_ALT_FN2) /* nPIOW */ +#define GPIO52_VALUE (GPIO_OUT_HI|GPIO_ALT_FN2) /* nPCE1 */ +#define GPIO53_VALUE (GPIO_OUT_HI|GPIO_ALT_FN2) /* nPCE2 */ +#define GPIO54_VALUE GPIO_OUT_HI /* nPKTSEL */ +#define GPIO55_VALUE (GPIO_OUT_HI|GPIO_ALT_FN2) /* nPREG */ +#define GPIO56_VALUE (GPIO_INPUT|GPIO_ALT_FN1) /* nPWAIT */ +#define GPIO57_VALUE (GPIO_INPUT|GPIO_ALT_FN1) /* nIOIS16 */ +#define GPIO58_VALUE (GPIO_OUT_LO|GPIO_ALT_FN2) /* LCD D0..7 */ +#define GPIO59_VALUE (GPIO_OUT_LO|GPIO_ALT_FN2) /* LCD D0..7 */ +#define GPIO60_VALUE (GPIO_OUT_LO|GPIO_ALT_FN2) /* LCD D0..7 */ +#define GPIO61_VALUE (GPIO_OUT_LO|GPIO_ALT_FN2) /* LCD D0..7 */ +#define GPIO62_VALUE (GPIO_OUT_LO|GPIO_ALT_FN2) /* LCD D0..7 */ +#define GPIO63_VALUE (GPIO_OUT_LO|GPIO_ALT_FN2) /* LCD D0..7 */ +#define GPIO64_VALUE (GPIO_OUT_LO|GPIO_ALT_FN2) /* LCD D0..7 */ +#define GPIO65_VALUE (GPIO_OUT_LO|GPIO_ALT_FN2) /* LCD D0..7 */ #define GPIO66_VALUE GPIO_OUT_LO #define GPIO67_VALUE GPIO_OUT_LO #define GPIO68_VALUE GPIO_OUT_LO @@ -203,16 +203,17 @@ #define GPIO71_VALUE GPIO_OUT_LO #define GPIO72_VALUE GPIO_OUT_LO #define GPIO73_VALUE GPIO_OUT_LO -#define GPIO74_VALUE GPIO_OUT_LO -#define GPIO75_VALUE GPIO_OUT_LO -#define GPIO76_VALUE GPIO_OUT_LO -#define GPIO77_VALUE GPIO_OUT_LO -#define GPIO78_VALUE (GPIO_OUT_HI | GPIO_ALT_FN2) /* nCS2 [img_buffer] */ -#define GPIO79_VALUE (GPIO_OUT_HI | GPIO_ALT_FN2) /* nCS3 [eth] */ -#define GPIO80_VALUE GPIO_OUT_HI /* nCS4 [unused] */ -#define GPIO81_VALUE GPIO_OUT_LO -#define GPIO82_VALUE GPIO_OUT_LO -#define GPIO83_VALUE GPIO_OUT_LO -#define GPIO84_VALUE GPIO_OUT_LO +#define GPIO74_VALUE (GPIO_OUT_LO|GPIO_ALT_FN2) /* LCD FCLK */ +#define GPIO75_VALUE (GPIO_OUT_LO|GPIO_ALT_FN2) /* LCD LCLK */ +#define GPIO76_VALUE (GPIO_OUT_LO|GPIO_ALT_FN2) /* LCD PCLK */ +#define GPIO77_VALUE (GPIO_OUT_LO|GPIO_ALT_FN2) /* LCD BIAS */ +#define GPIO78_VALUE (GPIO_OUT_HI|GPIO_ALT_FN2) /* nCS2 */ +#define GPIO79_VALUE (GPIO_OUT_HI|GPIO_ALT_FN2) /* nCS3 */ +#define GPIO80_VALUE (GPIO_OUT_HI|GPIO_ALT_FN2) /* nCS4 */ +#define GPIO81_VALUE (GPIO_OUT_LO|GPIO_ALT_FN1) /* BT SCLK */ +#define GPIO82_VALUE (GPIO_OUT_LO|GPIO_ALT_FN1) /* BT SFRM */ +#define GPIO83_VALUE (GPIO_OUT_LO|GPIO_ALT_FN1) /* BT MOSI */ +#define GPIO84_VALUE (GPIO_INPUT |GPIO_ALT_FN2) /* BT MISO */ +#define GPIO85_VALUE GPIO_OUT_HI /* nMSP_RST */ #endif /* #ifndef BLOB_ARCH_RA_ALPHA_H */ |
|
From: Stefan E. <se...@us...> - 2003-12-07 21:08:54
|
Update of /cvsroot/blob/blob/src/blob
In directory sc8-pr-cvs1:/tmp/cvs-serv21563
Modified Files:
memsetup-pxa.S
Log Message:
resolve these magic numbers
Index: memsetup-pxa.S
===================================================================
RCS file: /cvsroot/blob/blob/src/blob/memsetup-pxa.S,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- memsetup-pxa.S 10 Nov 2003 20:53:02 -0000 1.2
+++ memsetup-pxa.S 7 Dec 2003 21:08:51 -0000 1.3
@@ -166,28 +166,26 @@
*/
/* clear the free-running clock bits (clear K0Free, K1Free, K2Free) */
- bic r4, r4, #(0x00800000 | 0x01000000 | 0x02000000)
+ bic r4, r4, #(MDREFR_K2FREE|MDREFR_K1FREE|MDREFR_K0FREE)
/* set K1RUN if bank 0 installed */
- orr r4, r4, #0x00010000
+ orr r4, r4, #(MDREFR_K1RUN|MDREFR_K0RUN|MDREFR_E0PIN)
/* set K1DB2 (SDClk[1] = MemClk/2) */
-#if 0
- orreq r4, r4, #0x00020000
-#endif
+ orreq r4, r4, #(MDREFR_K1DB2)
/* write back MDREFR */
str r4, [r1, #MDREFR_OFFSET]
ldr r4, [r1, #MDREFR_OFFSET]
/* deassert SLFRSH */
- bic r4, r4, #0x00400000
+ bic r4, r4, #(MDREFR_SLFRSH)
/* write back MDREFR */
str r4, [r1, #MDREFR_OFFSET]
/* assert E1PIN */
- orr r4, r4, #0x00008000
+ orr r4, r4, #(MDREFR_E1PIN)
/* write back MDREFR */
str r4, [r1, #MDREFR_OFFSET]
|
|
From: Nannie M. <y9x...@ya...> - 2003-12-07 08:52:32
|
FUEL SAVER PRO This revolutionary device Boosts Gas Mileage 27%+ by helping fuel burn bet= ter using three patented processes from General Motors. www.eoei.com?axel=3D49 PROVEN TECHNOLOGY A certified U.S. Environmental Protection Agency (EPA) laboratory recently= completed tests on the new Fuel Saver. The results were astounding! Maste= r Service, a subsidiary of Ford Motor Company, also conducted extensive em= issions testing and obtained similar, unheard of results. The achievements= of the Fuel Saver is so noteworthy to the environmental community, that C= ommercial News has featured it as their cover story in their June, 2000 ed= ition. Take a test drive Today - www.eoei.com?axel=3D49 No more advertisements, thanks - http://www.5jzd.org/out5s/pre-rem2e.asp p zq fikxjf nar gmqsxf edpfgzh k |
|
From: Russ D. <ru...@us...> - 2003-12-04 21:51:28
|
Update of /cvsroot/blob/blob In directory sc8-pr-cvs1:/tmp/cvs-serv19853 Modified Files: configure.in Log Message: cleanup Index: configure.in =================================================================== RCS file: /cvsroot/blob/blob/configure.in,v retrieving revision 1.78 retrieving revision 1.79 diff -u -d -r1.78 -r1.79 --- configure.in 10 Nov 2003 20:50:23 -0000 1.78 +++ configure.in 4 Dec 2003 21:51:23 -0000 1.79 @@ -602,7 +602,6 @@ cramfs_flag=yes zimage_flag=yes network_flag=yes - network_flag=yes fi |
|
From: Russ D. <ru...@us...> - 2003-12-04 21:50:38
|
Update of /cvsroot/blob/blob/src/blob
In directory sc8-pr-cvs1:/tmp/cvs-serv19621
Modified Files:
reboot.c
Log Message:
blob_item patch
Index: reboot.c
===================================================================
RCS file: /cvsroot/blob/blob/src/blob/reboot.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- reboot.c 8 Feb 2002 12:55:16 -0000 1.8
+++ reboot.c 4 Dec 2003 21:50:35 -0000 1.9
@@ -42,7 +42,7 @@
void (*blob)(void) = (void (*)(void))BLOB_RAM_BASE;
/* sanity check */
- if(blob_status.blobType == fromFlash) {
+ if(blob_status.blob.type == fromFlash) {
printerrprefix();
printf("blob not downloaded\n");
return -EINVAL;
|
|
From: Russ D. <ru...@us...> - 2003-12-04 21:45:50
|
Update of /cvsroot/blob/blob/include/blob
In directory sc8-pr-cvs1:/tmp/cvs-serv18205/include/blob
Modified Files:
download.h main.h
Log Message:
blob_item patch
Index: download.h
===================================================================
RCS file: /cvsroot/blob/blob/include/blob/download.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- download.h 4 Sep 2003 17:46:59 -0000 1.1
+++ download.h 4 Dec 2003 21:45:16 -0000 1.2
@@ -26,6 +26,7 @@
extern blob_status_t blob_status;
+blob_item_t *get_blob_item(char *name);
void PrintSerialSpeed(serial_baud_t speed);
int set_download_parameters(char *name, u32 *startAddress,
int *bufLen, int **numRead, u32 **digest);
Index: main.h
===================================================================
RCS file: /cvsroot/blob/blob/include/blob/main.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- main.h 27 Apr 2002 08:11:58 -0000 1.7
+++ main.h 4 Dec 2003 21:45:16 -0000 1.8
@@ -45,22 +45,20 @@
} block_source_t;
+/* possibly switch this all over to a seperate ram partition table
+ * later (possibly same structure, but different table) */
typedef struct {
- int kernelSize;
- block_source_t kernelType;
- u32 kernel_md5_digest[4];
-
- int paramSize;
- block_source_t paramType;
- u32 param_md5_digest[4];
-
- int ramdiskSize;
- block_source_t ramdiskType;
- u32 ramdisk_md5_digest[4];
+ int size;
+ block_source_t type;
+ u32 *addr;
+ u32 md5_digest[4];
+} blob_item_t;
- int blobSize;
- block_source_t blobType;
- u32 blob_md5_digest[4];
+typedef struct {
+ blob_item_t kernel;
+ blob_item_t param;
+ blob_item_t ramdisk;
+ blob_item_t blob;
serial_baud_t downloadSpeed;
serial_baud_t terminalSpeed;
|
|
From: Russ D. <ru...@us...> - 2003-12-04 21:45:23
|
Update of /cvsroot/blob/blob/src/blob
In directory sc8-pr-cvs1:/tmp/cvs-serv18205/src/blob
Modified Files:
flash-commands.c linux.c load_kernel.c main.c
Log Message:
blob_item patch
Index: flash-commands.c
===================================================================
RCS file: /cvsroot/blob/blob/src/blob/flash-commands.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- flash-commands.c 11 Mar 2003 19:36:25 -0000 1.7
+++ flash-commands.c 4 Dec 2003 21:45:16 -0000 1.8
@@ -41,6 +41,7 @@
#include <blob/flash.h>
#include <blob/partition.h>
#include <blob/main.h>
+#include <blob/download.h>
#include <blob/command.h>
@@ -62,14 +63,12 @@
static int Flash(int argc, char *argv[])
{
int rv;
- u32 *src;
u32 *dst;
- u32 numBytes = 0;
u32 maxSize = 0;
u32 nwords;
char *dest_part;
- block_source_t type = fromFlash;
-
+ blob_item_t *item;
+
if(argc < 2)
return -ENOPARAMS;
@@ -85,46 +84,30 @@
return 0;
}
- if(strncmp(argv[1], "blob", 5) == 0) {
- src = (u32 *)BLOB_RAM_BASE;
- numBytes = blob_status.blobSize;
- type = blob_status.blobType;
- } else if(strncmp(argv[1], "param", 6) == 0) {
- src = (u32 *)PARAM_RAM_BASE;
- numBytes = blob_status.paramSize;
- type = blob_status.paramType;
- } else if(strncmp(argv[1], "kernel", 7) == 0) {
- src = (u32 *)KERNEL_RAM_BASE;
- numBytes = blob_status.kernelSize;
- type = blob_status.kernelType;
- } else if(strncmp(argv[1], "ramdisk", 8) == 0) {
- src = (u32 *)RAMDISK_RAM_BASE;
- numBytes = blob_status.ramdiskSize;
- type = blob_status.ramdiskType;
- } else {
+ if (!(item = get_blob_item(argv[1]))) {
printerror(EINVAL, argv[1]);
return 0;
}
- if(type == fromFlash) {
+ if(item->type == fromFlash) {
printerrprefix();
printf("%s not downloaded\n", argv[1]);
return -EINVAL;
}
- if(numBytes > maxSize) {
+ if(item->size > maxSize) {
printerrprefix();
printf("image too large for flash: 0x%08x > 0x%08x\n",
- (unsigned int)numBytes, (unsigned int)maxSize);
+ (unsigned int)item->size, (unsigned int)maxSize);
return -ETOOLONG;
}
- nwords = (numBytes + sizeof(u32) - 1) / sizeof(u32);
+ nwords = (item->size + sizeof(u32) - 1) / sizeof(u32);
printf("Saving %s to flash\n", argv[1]);
- flash_write_region(dst, src, nwords);
+ flash_write_region(dst, item->addr, nwords);
return 0;
}
Index: linux.c
===================================================================
RCS file: /cvsroot/blob/blob/src/blob/linux.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- linux.c 4 Sep 2003 17:27:33 -0000 1.18
+++ linux.c 4 Dec 2003 21:45:17 -0000 1.19
@@ -34,6 +34,7 @@
#include <blob/main.h>
#include <blob/memory.h>
#include <blob/util.h>
+#include <blob/param_block.h>
#include <asm-arm/setup.h>
@@ -52,7 +53,7 @@
static int boot_linux(int argc, char *argv[])
{
void (*theKernel)(int zero, int arch, u32 params) =
- (void (*)(int, int, u32))KERNEL_RAM_BASE;
+ (void (*)(int, int, u32))blob_status.kernel.addr;
setup_start_tag();
setup_memory_tags();
@@ -175,8 +176,8 @@
params->hdr.tag = ATAG_INITRD;
params->hdr.size = tag_size(tag_initrd);
- params->u.initrd.start = RAMDISK_RAM_BASE;
- params->u.initrd.size = RAMDISK_FLASH_LEN;
+ params->u.initrd.start = blob_status.ramdisk.addr;
+ params->u.initrd.size = blob_status.ramdisk.size;
params = tag_next(params);
@@ -197,8 +198,8 @@
params->hdr.tag = ATAG_INITRD2;
params->hdr.size = tag_size(tag_initrd);
- params->u.initrd.start = RAMDISK_RAM_BASE;
- params->u.initrd.size = RAMDISK_FLASH_LEN;
+ params->u.initrd.start = blob_status.ramdisk.addr;
+ params->u.initrd.size = blob_status.ramdisk.size;
params = tag_next(params);
}
Index: load_kernel.c
===================================================================
RCS file: /cvsroot/blob/blob/src/blob/load_kernel.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- load_kernel.c 6 Aug 2003 22:55:41 -0000 1.16
+++ load_kernel.c 4 Dec 2003 21:45:18 -0000 1.17
@@ -64,6 +64,7 @@
0
};
+/* FIXME: need other fodder ram bases too */
#define FODDER_RAM_BASE (0xC0F00000)
const void *fodder_ram_base = (void *) FODDER_RAM_BASE;
@@ -117,14 +118,14 @@
printf("Loading kernel from partition %s (%s) ...",
p->name, loader->name);
- if ((size = loader->load_kernel((u32 *) KERNEL_RAM_BASE,
+ if ((size = loader->load_kernel(blob_status->kernel.addr,
&part, "/boot/linux")) == 0) {
eprintf("error loading kernel!\n");
return(EINVAL);
}
- blob_status->kernelSize = size;
- blob_status->kernelType = fromFlash;
+ blob_status->kernel.size = size;
+ blob_status->kernel.type = fromFlash;
printf("loaded 0x%08x (%d) bytes\n", size, size);
return(ENOERROR);
Index: main.c
===================================================================
RCS file: /cvsroot/blob/blob/src/blob/main.c,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -d -r1.54 -r1.55
--- main.c 4 Sep 2003 17:46:59 -0000 1.54
+++ main.c 4 Dec 2003 21:45:19 -0000 1.55
@@ -72,9 +72,9 @@
void *params;
/* initialise status */
- blob_status.paramType = fromFlash;
- blob_status.kernelType = fromFlash;
- blob_status.ramdiskType = fromFlash;
+ blob_status.param.type = fromFlash;
+ blob_status.kernel.type = fromFlash;
+ blob_status.ramdisk.type = fromFlash;
blob_status.downloadSpeed = baud_115200;
blob_status.terminalSpeed = TERMINAL_SPEED;
blob_status.load_ramdisk = LOAD_RAMDISK;
@@ -179,79 +179,51 @@
} /* main */
-
-static int PrintStatus(int argc, char *argv[])
+static int print_item_status(char *name)
{
- printf(version_str);
+ blob_item_t *item = get_blob_item(name);
+ const blob_partition_t *p = pt_find_by_name(name);
- printf("Download speed : ");
- PrintSerialSpeed(blob_status.downloadSpeed);
- printf(" baud\n");
+ if (!item || (!p && item->type == fromFlash)) return -EINVAL;
- printf("Terminal speed : ");
- PrintSerialSpeed(blob_status.terminalSpeed);
- printf(" baud\n");
- printf("blob (0x%08x): ", BLOB_FLASH_BASE);
- if(blob_status.blobType == fromFlash) {
- printf("from flash\n");
- } else {
- printf("downloaded at 0x%08x, %i bytes\n",
- BLOB_RAM_BASE, blob_status.blobSize);
-#ifdef CONFIG_MD5_SUPPORT
- printf(" MD5: ");
- print_md5_digest(blob_status.blob_md5_digest);
- printf("\n");
-#endif
- }
+ printf("%7s ", name);
+ if (p)
+ printf("(0x%08x): ", pt_flash_start(p));
+ else
+ printf("%10s", ":");
-#ifdef PARAM_FLASH_BASE
- printf("param (0x%08x): ", PARAM_FLASH_BASE);
- if(blob_status.paramType == fromFlash) {
+ if(item->type == fromFlash) {
printf("from flash\n");
} else {
printf("downloaded at 0x%08x, %i bytes\n",
- PARAM_RAM_BASE, blob_status.paramSize);
+ item->addr, item->size);
#ifdef CONFIG_MD5_SUPPORT
printf(" MD5: ");
- print_md5_digest(blob_status.param_md5_digest);
+ print_md5_digest(item->md5_digest);
printf("\n");
#endif
}
-#else
- printf("param : Not available\n");
-#endif
+}
-#ifdef KERNEL_FLASH_BASE
- printf("kernel (0x%08x): ", KERNEL_FLASH_BASE);
- if(blob_status.kernelType == fromFlash) {
- printf("from flash\n");
- } else {
- printf("downloaded at 0x%08x, %i bytes\n",
- KERNEL_RAM_BASE, blob_status.kernelSize);
-#ifdef CONFIG_MD5_SUPPORT
- printf(" MD5: ");
- print_md5_digest(blob_status.kernel_md5_digest);
- printf("\n");
-#endif
- }
-#endif
-#ifdef RAMDISK_FLASH_BASE
- printf("ramdisk (0x%08x): ", RAMDISK_FLASH_BASE);
- if(blob_status.ramdiskType == fromFlash) {
- printf("from flash\n");
- } else {
- printf("downloaded at 0x%08x, %i bytes\n",
- RAMDISK_RAM_BASE, blob_status.ramdiskSize);
-#ifdef CONFIG_MD5_SUPPORT
- printf(" MD5: ");
- print_md5_digest(blob_status.ramdisk_md5_digest);
- printf("\n");
-#endif
- }
-#endif
-
+static int PrintStatus(int argc, char *argv[])
+{
+ printf(version_str);
+
+ printf("Download speed : ");
+ PrintSerialSpeed(blob_status.downloadSpeed);
+ printf(" baud\n");
+
+ printf("Terminal speed : ");
+ PrintSerialSpeed(blob_status.terminalSpeed);
+ printf(" baud\n");
+
+ print_item_status("blob");
+ print_item_status("param");
+ print_item_status("kernel");
+ print_item_status("ramdisk");
+
return 0;
}
|
|
From: Russ D. <ru...@us...> - 2003-12-04 21:45:23
|
Update of /cvsroot/blob/blob/src/lib
In directory sc8-pr-cvs1:/tmp/cvs-serv18205/src/lib
Modified Files:
download.c
Log Message:
blob_item patch
Index: download.c
===================================================================
RCS file: /cvsroot/blob/blob/src/lib/download.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- download.c 27 Nov 2003 08:28:23 -0000 1.3
+++ download.c 4 Dec 2003 21:45:19 -0000 1.4
@@ -40,12 +40,29 @@
#include <blob/arch.h>
#include <blob/errno.h>
#include <blob/error.h>
+#include <blob/main.h>
#include <blob/md5.h>
#include <blob/md5support.h>
#include <blob/serial.h>
#include <blob/download.h>
#include <blob/command.h>
+#include <blob/partition.h>
+
+blob_item_t *get_blob_item(char *what)
+{
+ blob_item_t *ret = NULL;
+
+ if (!strcmp(what, "blob"))
+ ret = &blob_status.blob;
+ else if (!strcmp(what, "param"))
+ ret = &blob_status.param;
+ else if (!strcmp(what, "kernel"))
+ ret = &blob_status.kernel;
+ else if (!strcmp(what, "ramdisk"))
+ ret = &blob_status.ramdisk;
+ return ret;
+}
void PrintSerialSpeed(serial_baud_t speed)
{
@@ -58,41 +75,25 @@
int *bufLen, int **numRead,
u32 **digest)
{
- /* Use of _FLASH_LEN here is WRONG. This should be
- the size of the ram buffer */
- if(strncmp(name, "blob", 5) == 0) {
- /* download blob */
- *startAddress = BLOB_RAM_BASE;
- *bufLen = BLOB_FLASH_LEN;
- *numRead = &blob_status.blobSize;
- *digest = blob_status.blob_md5_digest;
- blob_status.blobType = fromDownload;
- } else if(strncmp(name, "param", 6) == 0) {
- /* download param */
- *startAddress = PARAM_RAM_BASE;
- *bufLen = PARAM_FLASH_LEN;
- *numRead = &blob_status.paramSize;
- *digest = blob_status.param_md5_digest;
- blob_status.paramType = fromDownload;
- } else if(strncmp(name, "kernel", 7) == 0) {
- /* download kernel */
- *startAddress = KERNEL_RAM_BASE;
- *bufLen = KERNEL_FLASH_LEN;
- *numRead = &blob_status.kernelSize;
- *digest = blob_status.kernel_md5_digest;
- blob_status.kernelType = fromDownload;
- } else if(strncmp(name, "ramdisk", 8) == 0) {
- /* download ramdisk */
- *startAddress = RAMDISK_RAM_BASE;
- *bufLen = RAMDISK_FLASH_LEN;
- *numRead = &blob_status.ramdiskSize;
- *digest = blob_status.ramdisk_md5_digest;
- blob_status.ramdiskType = fromDownload;
- } else {
+ const blob_partition_t *ptable;
+ blob_item_t *item;
+
+ if (!(ptable = pt_find_by_name(name)) || !(item = get_blob_item(name))) {
printerror(-EINVAL, name);
return -EINVAL;
}
+ if (!(*startAddress = ptable->mem_base)) {
+ printf("%s cannot be loaded to ram\n", name);
+ return -EINVAL;
+ }
+
+ *bufLen = ptable->size;
+ *numRead = &item->size;
+ *digest = item->md5_digest;
+ item->addr = (u32 *) *startAddress; /* FIXME ? */
+ item->type = fromDownload;
+
return 0;
}
@@ -101,54 +102,48 @@
{
u32 *dst = 0;
u32 *src = 0;
- int numWords;
+ u32 numWords;
+ const blob_partition_t *ptable;
+ blob_item_t *item;
- if(strncmp(what, "blob", 5) == 0) {
- dst = (u32 *)BLOB_RAM_BASE;
- src = (u32 *)BLOB_FLASH_BASE;
- numWords = BLOB_FLASH_LEN / 4;
- blob_status.blobSize = 0;
- blob_status.blobType = fromFlash;
- printf("Loading blob from flash ");
-#ifdef PARAM_FLASH_BASE
- } else if(strncmp(what, "param", 6) == 0) {
- dst = (u32 *)PARAM_RAM_BASE;
- src = (u32 *)PARAM_FLASH_BASE;
- numWords = PARAM_FLASH_LEN / 4;
- blob_status.paramSize = 0;
- blob_status.paramType = fromFlash;
- printf("Loading paramater block from flash ");
-#endif
- } else if(strncmp(what, "kernel", 7) == 0) {
-#if defined(CONFIG_CRAMFS_SUPPORT) || defined(CONFIG_ZIMAGE_SUPPORT) || defined(CONFIG_JFFS2_SUPPORT)
- return load_kernel(&blob_status);
-#else
- dst = (u32 *)KERNEL_RAM_BASE;
- src = (u32 *)KERNEL_FLASH_BASE;
- numWords = KERNEL_FLASH_LEN / 4;
- blob_status.kernelSize = 0;
- blob_status.kernelType = fromFlash;
- printf("Loading kernel from flash ");
-#endif
-#ifdef RAMDISK_FLASH_BASE
- } else if(strncmp(what, "ramdisk", 8) == 0) {
- dst = (u32 *)RAMDISK_RAM_BASE;
- src = (u32 *)RAMDISK_FLASH_BASE;
- numWords = RAMDISK_FLASH_LEN / 4;
- blob_status.ramdiskSize = 0;
- blob_status.ramdiskType = fromFlash;
- printf("Loading ramdisk from flash ");
-#endif
- } else {
+ if (!(ptable = pt_find_by_name(what)) ||
+ !(item = get_blob_item(what))) {
printerror(EINVAL, what);
return 0;
}
- MyMemCpy(dst, src, numWords);
- printf(" done\n");
+ src = pt_flash_start(ptable);
+ numWords = ptable->size / 4;
+ if (!(dst = (u32 *) ptable->mem_base)) {
+ printf("%s cannot be loaded to ram\n", what);
+ return 0;
+ }
+
+
+ item->size = numWords * 4;
+ item->type = fromFlash;
+ item->addr = dst;
+
+ /* This is a bit messy, stuff needs some cleaup for sure */
+#if defined(CONFIG_CRAMFS_SUPPORT) || \
+ defined(CONFIG_ZIMAGE_SUPPORT) || \
+ defined(CONFIG_JFFS2_SUPPORT)
+ if (!strcmp("kernel", what)) {
+ item->size = 0;
+ load_kernel(&blob_status);
+ } else
+#endif
+ {
+ printf("Loading %s from flash ", what);
+ MyMemCpy(dst, src, numWords);
+ printf(" done\n");
+ }
return 0;
}
+
+
+
void do_md5sum(u32 *addr, size_t len, u32 *digest)
|
|
From: Erik M. <J.A...@it...> - 2003-12-03 19:01:02
|
On Thu, Nov 27, 2003 at 10:06:09AM -0700, Russ Dill wrote:
> This patch gets rid of all the kernelSize, kernelType, paramSize, etc
> defines in blob_status_t and replaces them each with a blob_item_t
> struct:
>=20
> typedef struct {
> int size;
> block_source_t type;
> u32 *addr;
> u32 md5_digest[4];
> } blob_item_t;
>=20
> This helps generalize and simplify a lot of the code. Let me know what
> you think of the patch.
Looks good to me.
diffstat output:
include/blob/download.h | 1=20
include/blob/main.h | 26 ++++----
src/blob/flash-commands.c | 35 +++--------
src/blob/linux.c | 10 +--
src/blob/load_kernel.c | 7 +-
src/blob/main.c | 94 +++++++++++--------------------
src/blob/reboot.c | 2=20
src/lib/download.c | 137 ++++++++++++++++++++++-------------------=
-----=20
8 files changed, 131 insertions(+), 181 deletions(-)
It removes more than it adds, so it simplifies the code. Looks OK to
me.
Erik
--=20
Erik Mouw
J.A...@it... mo...@nl...
|
|
From: Russ D. <ru...@in...> - 2003-11-27 17:06:20
|
This patch gets rid of all the kernelSize, kernelType, paramSize, etc
defines in blob_status_t and replaces them each with a blob_item_t
struct:
typedef struct {
int size;
block_source_t type;
u32 *addr;
u32 md5_digest[4];
} blob_item_t;
This helps generalize and simplify a lot of the code. Let me know what
you think of the patch.
--
Russ Dill <ru...@in...>
Bitpro, Inc
|
|
From: Russ D. <ru...@us...> - 2003-11-27 08:59:50
|
Update of /cvsroot/blob/blob/src/lib In directory sc8-pr-cvs1:/tmp/cvs-serv20023 Modified Files: cfi16.c cfi32.c Log Message: copyright notices Index: cfi16.c =================================================================== RCS file: /cvsroot/blob/blob/src/lib/cfi16.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- cfi16.c 27 Nov 2003 08:02:30 -0000 1.1 +++ cfi16.c 27 Nov 2003 08:59:46 -0000 1.2 @@ -1,8 +1,8 @@ /* * cfi16: CFI functions for 16 bit flash * - * Copyright (C) 2001 Erik Mouw (J.A...@it...) - * Copyright (C) 1999 Jan-Derk Bakker (J.D...@it...) + * Copyright (C) 2001-2002 Hewlett-Packard Company + * Written by Christopher Hoover <ch...@hp...> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by Index: cfi32.c =================================================================== RCS file: /cvsroot/blob/blob/src/lib/cfi32.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- cfi32.c 27 Nov 2003 08:02:31 -0000 1.1 +++ cfi32.c 27 Nov 2003 08:59:46 -0000 1.2 @@ -1,8 +1,8 @@ /* * cfi32: CFI functions for 32 bit flash * - * Copyright (C) 2001 Erik Mouw (J.A...@it...) - * Copyright (C) 1999 Jan-Derk Bakker (J.D...@it...) + * Copyright (C) 2001-2002 Hewlett-Packard Company + * Written by Christopher Hoover <ch...@hp...> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by |
|
From: Christopher H. <ch...@mu...> - 2003-11-27 08:50:30
|
This is my code, so please stick my name and add an HP copyright on it.
-ch
> -----Original Message-----
> From: blo...@li...
> [mailto:blo...@li...] On
> Behalf Of Russ Dill
> Sent: Thursday, November 27, 2003 12:03 AM
> To: blo...@li...
> Subject: CVS: blob/src/lib cfi16.c,NONE,1.1 cfi32.c,NONE,1.1
> Makefile.am,1.34,1.35
>
>
> Update of /cvsroot/blob/blob/src/lib
> In directory sc8-pr-cvs1:/tmp/cvs-serv9521/src/lib
>
> Modified Files:
> Makefile.am
> Added Files:
> cfi16.c cfi32.c
> Log Message:
> flesh out cfi probing, and only compile it in if requested by
> the arch file
>
> --- NEW FILE: cfi16.c ---
> /*
> * cfi16: CFI functions for 16 bit flash
> *
> * Copyright (C) 2001 Erik Mouw (J.A...@it...)
> * Copyright (C) 1999 Jan-Derk Bakker (J.D...@it...)
> *
> * This program is free software; you can redistribute it
> and/or modify
> * it under the terms of the GNU General Public License as
> published by
> * the Free Software Foundation; either version 2 of the License, or
> * (at your option) any later version.
> *
> * This program is distributed in the hope that it will be useful,
> * but WITHOUT ANY WARRANTY; without even the implied warranty of
> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> * GNU General Public License for more details.
> *
> * You should have received a copy of the GNU General Public License
> * along with this program; if not, write to the Free Software
> * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
> 02111-1307 USA
> *
> */
>
> #ident "$Id: cfi16.c,v 1.1 2003/11/27 08:02:30 russd Exp $"
>
> #ifdef HAVE_CONFIG_H
> # include <blob/config.h>
> #endif
>
> #include <blob/errno.h>
> #include <blob/flash.h>
> #include <blob/util.h>
> #include <blob/debug.h>
> #include <blob/cfi.h>
>
> /* flash commands for a single 16 bit cfi flash chip */
> #define READ_ARRAY 0x000000FF
> #define READ_QUERY 0x00000098
>
>
> /* automatic descriptor support */
>
> #define MAX_AUTO_DESCRIPTORS 4
> static flash_descriptor_t auto_descriptors[MAX_AUTO_DESCRIPTORS + 1];
>
> int flash_query_descriptors_cfi16(u32 *flashAddr,
> flash_descriptor_t **out) {
> u16 *addr = (u16 *) flashAddr;
> int result, nregions, n;
>
> addr[0x55] = READ_QUERY;
> barrier();
>
> if (addr[0x10] != 'Q' && addr[0x11] != 'R' &&
> addr[0x12] != 'Y') {
> result = -EINVAL;
> goto out;
> }
>
> dprintf("cfi16: manuf_code = %02X\n", addr[CFI16_MANUF_CODE]);
> dprintf("cfi16: device code = %02X\n", addr[CFI16_DEVICE_CODE]);
> dprintf("cfi16: device size = 2^%d bytes\n",
> addr[CFI16_DEVICE_SIZE_LG2]);
>
> nregions = addr[CFI16_ERASE_REGION_COUNT];
>
> #define READ_U16LE(off) ((addr[(off)]) | (addr[(off) + 1]<<8))
>
> for (n = 0; n < nregions && n < MAX_AUTO_DESCRIPTORS; n++) {
> u32 xcount = READ_U16LE(CFI16_ERASE_REGION_XBLKS(n));
> u32 count = xcount + 1;
> u32 xsize = READ_U16LE(CFI16_ERASE_REGION_XSIZE(n));
> u32 size = (xsize == 0) ? 128 : xsize * 256;
>
> dprintf("cfi16: erase region #%d\n", n);
> dprintf("cfi16: count = %d\n", count);
> dprintf("cfi16: size = %d\n", size);
>
> auto_descriptors[n].size = size;
> auto_descriptors[n].num = count;
> auto_descriptors[n].lockable = 1; /* fix me */
> }
>
> #undef READ_U16LE
>
> auto_descriptors[n].size = 0;
> auto_descriptors[n].num = 0;
>
> *out = auto_descriptors;
> result = 0;
>
> out:
> /* put flash back into Read Array mode */
> barrier();
>
> *addr = READ_ARRAY;
> barrier();
>
> return result;
> }
>
> --- NEW FILE: cfi32.c ---
> /*
> * cfi32: CFI functions for 32 bit flash
> *
> * Copyright (C) 2001 Erik Mouw (J.A...@it...)
> * Copyright (C) 1999 Jan-Derk Bakker (J.D...@it...)
> *
> * This program is free software; you can redistribute it
> and/or modify
> * it under the terms of the GNU General Public License as
> published by
> * the Free Software Foundation; either version 2 of the License, or
> * (at your option) any later version.
> *
> * This program is distributed in the hope that it will be useful,
> * but WITHOUT ANY WARRANTY; without even the implied warranty of
> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> * GNU General Public License for more details.
> *
> * You should have received a copy of the GNU General Public License
> * along with this program; if not, write to the Free Software
> * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
> 02111-1307 USA
> *
> */
>
> #ident "$Id: cfi32.c,v 1.1 2003/11/27 08:02:31 russd Exp $"
>
> #ifdef HAVE_CONFIG_H
> # include <blob/config.h>
> #endif
>
> #include <blob/errno.h>
> #include <blob/flash.h>
> #include <blob/util.h>
> #include <blob/debug.h>
> #include <blob/cfi.h>
>
> /* flash commands for two interleaved 16 bit flash chips */
> #define READ_ARRAY 0x00FF00FF
> #define READ_QUERY 0x00980098
>
>
> /* automatic descriptor support */
>
> #define MAX_AUTO_DESCRIPTORS 4
> static flash_descriptor_t auto_descriptors[MAX_AUTO_DESCRIPTORS + 1];
>
> int flash_query_descriptors_cfi32(u32 *addr,
> flash_descriptor_t **out) {
> int result, nregions, n;
>
> addr[0x55] = READ_QUERY;
> barrier();
>
> if (addr[0x10] != ('Q' | ('Q' << 16)) &&
> addr[0x11] != ('R' | ('R' << 16)) &&
> addr[0x12] != ('Y' | ('Y' << 16))) {
> result = -EINVAL;
> goto out;
> }
>
> dprintf("cfi32: manuf_code = %02X\n",
> addr[CFI32_MANUF_CODE] & 0xff);
> dprintf("cfi32: device code = %02X\n",
> addr[CFI32_DEVICE_CODE] & 0xff);
> dprintf("cfi32: device size = 2^%d bytes\n",
> addr[CFI32_DEVICE_SIZE_LG2] & 0xff);
>
> dprintf("cfi32: manuf_code = %02X\n",
> addr[CFI32_MANUF_CODE] >> 16);
> dprintf("cfi32: device code = %02X\n",
> addr[CFI32_DEVICE_CODE] >> 16);
> dprintf("cfi32: device size = 2^%d bytes\n",
> addr[CFI32_DEVICE_SIZE_LG2] >> 16);
>
> /* From here on out, assume both chips return the same data */
> nregions = addr[CFI32_ERASE_REGION_COUNT] & 0xffff;
>
> #define READ_U16LE(off) ((addr[(off)] & 0xff) |
> ((addr[(off) + 1] & 0xff)<<8))
>
> for (n = 0; n < nregions && n < MAX_AUTO_DESCRIPTORS; n++) {
> u32 xcount = READ_U16LE(CFI32_ERASE_REGION_XBLKS(n));
> u32 count = xcount + 1;
> u32 xsize = READ_U16LE(CFI32_ERASE_REGION_XSIZE(n));
> u32 size = (xsize == 0) ? 128 : xsize * 256;
>
> dprintf("cfi32: erase region #%d\n", n);
> dprintf("cfi32: count = %d\n", count);
> dprintf("cfi32: size = %d\n", size);
>
> auto_descriptors[n].size = size;
> auto_descriptors[n].num = count;
> auto_descriptors[n].lockable = 1; /* fix me */
> }
>
> #undef READ_U32LE
>
> auto_descriptors[n].size = 0;
> auto_descriptors[n].num = 0;
>
> *out = auto_descriptors;
> result = 0;
>
> out:
> /* put flash back into Read Array mode */
> barrier();
>
> *addr = READ_ARRAY;
> barrier();
>
> return result;
> }
>
> Index: Makefile.am
> ===================================================================
> RCS file: /cvsroot/blob/blob/src/lib/Makefile.am,v
> retrieving revision 1.34
> retrieving revision 1.35
> diff -u -d -r1.34 -r1.35
> --- Makefile.am 10 Nov 2003 17:06:41 -0000 1.34
> +++ Makefile.am 27 Nov 2003 08:02:31 -0000 1.35
> @@ -26,6 +26,8 @@
>
>
> libblob_a_SOURCES = \
> + cfi16.c \
> + cfi32.c \
> command.c \
> crc32.c \
> download.c \
>
>
>
> -------------------------------------------------------
> This SF.net email is sponsored by: SF.net Giveback Program.
> Does SourceForge.net help you be more productive? Does it
> help you create better code? SHARE THE LOVE, and help us
> help YOU! Click Here: http://sourceforge.net/donate/
> _______________________________________________
> blob-cvs-commit mailing list blo...@li...
> https://lists.sourceforge.net/lists/listinfo/blob-cvs-commit
>
|
|
From: Russ D. <ru...@us...> - 2003-11-27 08:28:28
|
Update of /cvsroot/blob/blob/src/lib
In directory sc8-pr-cvs1:/tmp/cvs-serv13693
Modified Files:
download.c
Log Message:
apply strcmp simplication to download.c
Index: download.c
===================================================================
RCS file: /cvsroot/blob/blob/src/lib/download.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- download.c 10 Nov 2003 13:17:26 -0000 1.2
+++ download.c 27 Nov 2003 08:28:23 -0000 1.3
@@ -164,33 +164,33 @@
if(argc < 2)
return -ENOPARAMS;
- if(strncmp(argv[1], "1200", 5) == 0) {
+ if(strcmp(argv[1], "1200") == 0) {
blob_status.downloadSpeed = baud_1200;
- } else if(strncmp(argv[1], "1k2", 4) == 0) {
+ } else if(strcmp(argv[1], "1k2") == 0) {
blob_status.downloadSpeed = baud_1200;
- } else if(strncmp(argv[1], "9600", 5) == 0) {
+ } else if(strcmp(argv[1], "9600") == 0) {
blob_status.downloadSpeed = baud_9600;
- } else if(strncmp(argv[1], "9k6", 4) == 0) {
+ } else if(strcmp(argv[1], "9k6") == 0) {
blob_status.downloadSpeed = baud_9600;
- } else if(strncmp(argv[1], "19200", 6) == 0) {
+ } else if(strcmp(argv[1], "19200") == 0) {
blob_status.downloadSpeed = baud_19200;
- } else if(strncmp(argv[1], "19k2", 5) == 0) {
+ } else if(strcmp(argv[1], "19k2") == 0) {
blob_status.downloadSpeed = baud_19200;
- } else if(strncmp(argv[1], "38400", 7) == 0) {
+ } else if(strcmp(argv[1], "38400") == 0) {
blob_status.downloadSpeed = baud_38400;
- } else if(strncmp(argv[1], "38k4", 5) == 0) {
+ } else if(strcmp(argv[1], "38k4") == 0) {
blob_status.downloadSpeed = baud_38400;
- } else if(strncmp(argv[1], "57600", 6) == 0) {
+ } else if(strcmp(argv[1], "57600") == 0) {
blob_status.downloadSpeed = baud_57600;
- } else if(strncmp(argv[1], "57k6", 5) == 0) {
+ } else if(strcmp(argv[1], "57k6") == 0) {
blob_status.downloadSpeed = baud_57600;
- } else if(strncmp(argv[1], "115200", 7) == 0) {
+ } else if(strcmp(argv[1], "115200") == 0) {
blob_status.downloadSpeed = baud_115200;
- } else if(strncmp(argv[1], "115k2", 6) == 0) {
+ } else if(strcmp(argv[1], "115k2") == 0) {
blob_status.downloadSpeed = baud_115200;
- } else if(strncmp(argv[1], "230400", 7) == 0) {
+ } else if(strcmp(argv[1], "230400") == 0) {
blob_status.downloadSpeed = baud_230400;
- } else if(strncmp(argv[1], "230k4", 6) == 0) {
+ } else if(strcmp(argv[1], "230k4") == 0) {
blob_status.downloadSpeed = baud_230400;
} else {
return -EINVAL;
|
|
From: Russ D. <ru...@us...> - 2003-11-27 08:25:01
|
Update of /cvsroot/blob/blob/src/blob
In directory sc8-pr-cvs1:/tmp/cvs-serv13228
Modified Files:
amd32.c
Log Message:
typo
Index: amd32.c
===================================================================
RCS file: /cvsroot/blob/blob/src/blob/amd32.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- amd32.c 27 Nov 2003 08:09:44 -0000 1.7
+++ amd32.c 27 Nov 2003 08:24:58 -0000 1.8
@@ -59,7 +59,7 @@
#define ERR 4
-inline void flash_cmd_amd32(u32 offset, u16 cmd)
+inline void flash_cmd_amd32(u32 offset, u32 cmd)
{
*((u32 *)(flash_base | offset)) = data_to_flash(cmd);
barrier();
|
|
From: Russ D. <ru...@us...> - 2003-11-27 08:09:47
|
Update of /cvsroot/blob/blob/src/blob
In directory sc8-pr-cvs1:/tmp/cvs-serv10611
Modified Files:
amd32.c
Log Message:
cleanup of amd32 so that it will work for different flash bases
Index: amd32.c
===================================================================
RCS file: /cvsroot/blob/blob/src/blob/amd32.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- amd32.c 19 Jun 2002 04:41:49 -0000 1.6
+++ amd32.c 27 Nov 2003 08:09:44 -0000 1.7
@@ -59,12 +59,13 @@
#define ERR 4
-static void flash_read_array_amd32(void)
+inline void flash_cmd_amd32(u32 offset, u16 cmd)
{
- *(u32 *)FLASH_ADDR1 = data_to_flash(READ_ARRAY);
+ *((u32 *)(flash_base | offset)) = data_to_flash(cmd);
barrier();
}
+
/* NOT! for amd16.c, this examines one chip of the two chip interleave */
static int get_status_amd16(u32 result, u32 last, int chip)
{
@@ -113,18 +114,13 @@
static int flash_erase_amd32(u32 *addr)
{
/* prepare for erase */
- *(u32 *)FLASH_ADDR1 = data_to_flash(UNLOCK1);
- barrier();
- *(u32 *)FLASH_ADDR2 = data_to_flash(UNLOCK2);
- barrier();
- *(u32 *)FLASH_ADDR1 = data_to_flash(ERASE_SETUP);
- barrier();
+ flash_cmd_amd32(FLASH_ADDR1, UNLOCK1);
+ flash_cmd_amd32(FLASH_ADDR2, UNLOCK2);
+ flash_cmd_amd32(FLASH_ADDR1, ERASE_SETUP);
/* erase command */
- *(u32 *)FLASH_ADDR1 = data_to_flash(UNLOCK1);
- barrier();
- *(u32 *)FLASH_ADDR2 = data_to_flash(UNLOCK2);
- barrier();
+ flash_cmd_amd32(FLASH_ADDR1, UNLOCK1);
+ flash_cmd_amd32(FLASH_ADDR2, UNLOCK2);
*addr = data_to_flash(ERASE_CONFIRM);
/* I just can't find clean ways of dealing with this flash...
@@ -144,7 +140,7 @@
if (get_status_amd32(addr) < 0) {
/* put flash back into Read Array mode */
- flash_read_array_amd32();
+ flash_cmd_amd32(FLASH_ADDR1, READ_ARRAY);
return -EFLASHERASE;
}
@@ -157,19 +153,16 @@
static int flash_write_amd32(u32 *dst, const u32* src)
{
- *(u32 *)FLASH_ADDR1 = data_to_flash(UNLOCK1);
- barrier();
- *(u32 *)FLASH_ADDR2 = data_to_flash(UNLOCK2);
- barrier();
- *(u32 *)FLASH_ADDR1 = data_to_flash(PGM_SETUP);
- barrier();
+ flash_cmd_amd32(FLASH_ADDR1, UNLOCK1);
+ flash_cmd_amd32(FLASH_ADDR2, UNLOCK2);
+ flash_cmd_amd32(FLASH_ADDR1, PGM_SETUP);
*dst = *src;
barrier();
if (get_status_amd32(dst) < 0 || *dst != *src) {
barrier();
- flash_read_array_amd32();
+ flash_cmd_amd32(FLASH_ADDR1, READ_ARRAY);
return -EFLASHPGM;
}
@@ -200,15 +193,12 @@
static int flash_query_block_lock_amd32(u32 *blockStart)
{
int result;
- *(u32 *)FLASH_ADDR1 = data_to_flash(UNLOCK1);
- barrier();
- *(u32 *)FLASH_ADDR2 = data_to_flash(UNLOCK2);
- barrier();
- *(u32 *)FLASH_ADDR1 = data_to_flash(CONFIG_QUERY);
- barrier();
+ flash_cmd_amd32(FLASH_ADDR1, UNLOCK1);
+ flash_cmd_amd32(FLASH_ADDR2, UNLOCK2);
+ flash_cmd_amd32(FLASH_ADDR1, CONFIG_QUERY);
result = *(u32 *)(blockStart + 2);
- flash_read_array_amd32();
+ flash_cmd_amd32(FLASH_ADDR1, READ_ARRAY);
return !!result;
}
|
|
From: Russ D. <ru...@us...> - 2003-11-27 08:05:43
|
Update of /cvsroot/blob/blob/src/blob
In directory sc8-pr-cvs1:/tmp/cvs-serv10152
Modified Files:
partition.c
Log Message:
make offset flash work
Index: partition.c
===================================================================
RCS file: /cvsroot/blob/blob/src/blob/partition.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- partition.c 7 Aug 2003 19:31:01 -0000 1.10
+++ partition.c 27 Nov 2003 08:05:39 -0000 1.11
@@ -216,7 +216,7 @@
case BLOB_PART_VALID_MAGIC:
printf(" 0x%08x @ 0x%08x (%d kB): '%s'\n",
- t->size, t->offset, t->size, t->name);
+ t->size, t->offset, t->size >> 10, t->name);
if(t->flags & BLOB_PART_FLAG_PTABLE)
printf(" contains parameter blocks\n");
@@ -259,7 +259,7 @@
/* walk through ptable and fix up BLOB_PART_OFS_APPEND and
BLOB_PART_SIZ_FULL entries */
- u32 offset = ptable->offset;
+ u32 offset = 0;
u32 size = ptable->size;
int no_more_parts_allowed = 0;
blob_partition_t *t = ptable;
@@ -436,6 +436,8 @@
const blob_partition_t *pt_find_by_address(u32 addr)
{
blob_partition_t *t = ptable;
+
+ addr -= ptable->offset;
for(;;) {
t = next_ptable_entry(t);
|
|
From: Russ D. <ru...@us...> - 2003-11-27 08:04:19
|
Update of /cvsroot/blob/blob/src/blob
In directory sc8-pr-cvs1:/tmp/cvs-serv9911
Modified Files:
smdk2500.c
Log Message:
update board file
Index: smdk2500.c
===================================================================
RCS file: /cvsroot/blob/blob/src/blob/smdk2500.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- smdk2500.c 27 Nov 2003 03:34:37 -0000 1.3
+++ smdk2500.c 27 Nov 2003 08:04:16 -0000 1.4
@@ -34,73 +34,43 @@
#include <blob/time.h>
#include <blob/partition.h>
#include <blob/arch.h>
+#include <blob/cfi.h>
#include <net/ether.h>
-/* flash descriptor for smdk2500 flash */
-/* 1x Am29LV160DB (2MB) */
-static const flash_descriptor_t smdk2500_flash_descriptors[] =
-{
- {
- size: 16 * 1024,
- num: 1,
- lockable: 1
- },
- {
- size: 8 * 1024,
- num: 2,
- lockable: 1
- },
- {
- size: 32 * 1024,
- num: 1,
- lockable: 1
- },
- {
- size: 64 * 1024,
- num: 31,
- lockable: 1
- },
- {
- /* NULL block */
- },
-};
-
-
/* default partition table for the SMDK2500 */
static const blob_partition_t smdk2500_default_partition_table[] = {
{
/* start of table */
magic: BLOB_DEFAULT_PART_TABLE_MAGIC,
next: sizeof(blob_partition_t),
- offset: 0x80000000, /* absolute base address */
+ offset: 0x80000000, /* absolute base address */
size: 2 * 1024 * 1024 /* total size of the flash */
},
{
/* blob itself */
magic: BLOB_PART_VALID_MAGIC,
next: sizeof(blob_partition_t),
- offset: BLOB_FLASH_BASE,
size: BLOB_FLASH_LEN,
name: "blob",
mem_base: BLOB_RAM_BASE
},
{
/* parameter block */
- magic: BLOB_PART_VALID_MAGIC,
- next: sizeof(blob_partition_t),
- offset: PARAM_FLASH_BASE,
- size: PARAM_FLASH_LEN,
- name: "param",
+ magic: BLOB_PART_VALID_MAGIC,
+ next: sizeof(blob_partition_t),
+ offset: BLOB_PART_OFS_APPEND,
+ size: PARAM_FLASH_LEN,
+ name: "param",
mem_base: PARAM_RAM_BASE,
- flags: BLOB_PART_FLAG_PTABLE
+ flags: BLOB_PART_FLAG_PTABLE
},
{
/* kernel */
magic: BLOB_PART_VALID_MAGIC,
next: sizeof(blob_partition_t),
- offset: KERNEL_FLASH_BASE,
- size: KERNEL_FLASH_LEN,
+ offset: BLOB_PART_OFS_APPEND,
+ size: BLOB_PART_SIZ_FULL,
name: "kernel",
flags: BLOB_PART_FLAG_LOAD |
BLOB_PART_FLAG_CRAMFS,
@@ -117,8 +87,9 @@
static void smdk2500_init_hardware(void)
{
/* setup flash stuff */
- flash_descriptors = smdk2500_flash_descriptors;
flash_driver = &amd16_flash_driver;
+ flash_driver->query_descriptors = flash_query_descriptors_cfi16;
+ flash_base = 0x80000000;
/* the default partition table */
default_partition_table = smdk2500_default_partition_table;
|