This patch merges bf533_ezkit.c into bf537_stamp.c. I'm committing it now.
Jie
2010-02-01 Jie Zhang <[email protected]>
* src/bus/bf533_ezkit.c: Remove.
* src/bus/bf537_stamp.c (bf537_stamp_bus_new): Don't false alarm.
(bf537_stamp_bus_write): Deassert AOE when bus write.
(urj_bus_driver_t urj_bus_bf533_ezkit_bus): Define.
* src/bus/Makefile.am (libbus_la_SOURCES): Use bf537_stamp.c as
bf533_ezkit bus driver source file.
* po/POTFILES.in: Remove src/bus/bf533_ezkit.c.
Index: src/bus/bf533_ezkit.c
===================================================================
--- src/bus/bf533_ezkit.c (revision 1748)
+++ src/bus/bf533_ezkit.c (working copy)
@@ -1,336 +0,0 @@
-/*
- * $Id$
- *
- * Copyright (C) 2002 ETC s.r.o.
- *
- * 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.
- *
- * Written by Christian Pellegrin <[email protected]>, 2003.
- * Modified by Marcel Telka <[email protected]>, 2003.
- *
- */
-
-#include <sysdep.h>
-
-#include <stdlib.h>
-#include <stdint.h>
-#include <string.h>
-
-#include <urjtag/part.h>
-#include <urjtag/bus.h>
-#include <urjtag/chain.h>
-#include <urjtag/bssignal.h>
-
-#include "buses.h"
-#include "generic_bus.h"
-
-typedef struct
-{
- urj_part_signal_t *ams[4];
- urj_part_signal_t *addr[19];
- urj_part_signal_t *data[16];
- urj_part_signal_t *abe[2];
- urj_part_signal_t *awe;
- urj_part_signal_t *aoe;
- urj_part_signal_t *sras;
- urj_part_signal_t *scas;
- urj_part_signal_t *sms;
- urj_part_signal_t *swe;
-} bus_params_t;
-
-#define AMS ((bus_params_t *) bus->params)->ams
-#define ADDR ((bus_params_t *) bus->params)->addr
-#define DATA ((bus_params_t *) bus->params)->data
-#define AWE ((bus_params_t *) bus->params)->awe
-#define AOE ((bus_params_t *) bus->params)->aoe
-#define ABE ((bus_params_t *) bus->params)->abe
-#define SRAS ((bus_params_t *) bus->params)->sras
-#define SCAS ((bus_params_t *) bus->params)->scas
-#define SMS ((bus_params_t *) bus->params)->sms
-#define SWE ((bus_params_t *) bus->params)->swe
-
-/**
- * bus->driver->(*new_bus)
- *
- */
-static urj_bus_t *
-bf533_ezkit_bus_new (urj_chain_t *chain, const urj_bus_driver_t *driver,
- const urj_param_t *cmd_params[])
-{
- urj_bus_t *bus;
- urj_part_t *part;
- char buff[15];
- int i;
- int failed = 0;
-
- bus = urj_bus_generic_new (chain, driver, sizeof (bus_params_t));
- if (bus == NULL)
- return NULL;
- part = bus->part;
-
- for (i = 0; i < 4; i++)
- {
- sprintf (buff, "AMS_B%d", i);
- failed |= urj_bus_generic_attach_sig (part, &(AMS[i]), buff);
- }
-
- for (i = 0; i < 19; i++)
- {
- sprintf (buff, "ADDR[%d]", i + 1);
- failed |= urj_bus_generic_attach_sig (part, &(ADDR[i]), buff);
- }
-
- for (i = 0; i < 16; i++)
- {
- sprintf (buff, "DATA[%d]", i);
- failed |= urj_bus_generic_attach_sig (part, &(DATA[i]), buff);
- }
-
- failed |= urj_bus_generic_attach_sig (part, &(AWE), "AWE_B");
-
- failed |= urj_bus_generic_attach_sig (part, &(AOE), "AOE_B");
-
- failed |= urj_bus_generic_attach_sig (part, &(ABE[0]), "ABE_B0");
-
- failed |= urj_bus_generic_attach_sig (part, &(ABE[1]), "ABE_B1");
-
- failed |= urj_bus_generic_attach_sig (part, &(SRAS), "SRAS_B");
-
- failed |= urj_bus_generic_attach_sig (part, &(SCAS), "SCAS_B");
-
- failed |= urj_bus_generic_attach_sig (part, &(SWE), "SWE_B");
-
- failed |= urj_bus_generic_attach_sig (part, &(SMS), "SMS_B");
-
- if (failed)
- {
- urj_bus_generic_free (bus);
- return NULL;
- }
-
- return bus;
-}
-
-/**
- * bus->driver->(*printinfo)
- *
- */
-static void
-bf533_ezkit_bus_printinfo (urj_log_level_t ll, urj_bus_t *bus)
-{
- int i;
-
- for (i = 0; i < bus->chain->parts->len; i++)
- if (bus->part == bus->chain->parts->parts[i])
- break;
- urj_log (ll, _("Blackfin BF533 EZKit compatible bus driver via BSR (JTAG part No. %d)\n"),
- i);
-}
-
-/**
- * bus->driver->(*area)
- *
- */
-static int
-bf533_ezkit_bus_area (urj_bus_t *bus, uint32_t adr, urj_bus_area_t *area)
-{
- area->description = NULL;
- area->start = UINT32_C (0x00000000);
- area->length = UINT64_C (0x100000000);
- area->width = 16;
-
- return URJ_STATUS_OK;
-}
-
-static void
-select_flash (urj_bus_t *bus)
-{
- urj_part_t *p = bus->part;
-
- urj_part_set_signal (p, AMS[0], 1, 0);
- urj_part_set_signal (p, AMS[1], 1, 1);
- urj_part_set_signal (p, AMS[2], 1, 1);
- urj_part_set_signal (p, AMS[3], 1, 1);
-
- urj_part_set_signal (p, ABE[0], 1, 0);
- urj_part_set_signal (p, ABE[1], 1, 0);
-
- urj_part_set_signal (p, SRAS, 1, 1);
- urj_part_set_signal (p, SCAS, 1, 1);
- urj_part_set_signal (p, SWE, 1, 1);
- urj_part_set_signal (p, SMS, 1, 1);
-}
-
-static void
-unselect_flash (urj_bus_t *bus)
-{
- urj_part_t *p = bus->part;
-
- urj_part_set_signal (p, AMS[0], 1, 1);
- urj_part_set_signal (p, AMS[1], 1, 1);
- urj_part_set_signal (p, AMS[2], 1, 1);
- urj_part_set_signal (p, AMS[3], 1, 1);
-
- urj_part_set_signal (p, ABE[0], 1, 1);
- urj_part_set_signal (p, ABE[1], 1, 1);
-
- urj_part_set_signal (p, SRAS, 1, 1);
- urj_part_set_signal (p, SCAS, 1, 1);
- urj_part_set_signal (p, SWE, 1, 1);
- urj_part_set_signal (p, SMS, 1, 1);
-}
-
-static void
-setup_address (urj_bus_t *bus, uint32_t a)
-{
- int i;
- urj_part_t *p = bus->part;
-
- for (i = 0; i < 19; i++)
- urj_part_set_signal (p, ADDR[i], 1, (a >> (i + 1)) & 1);
-}
-
-static void
-set_data_in (urj_bus_t *bus)
-{
- int i;
- urj_part_t *p = bus->part;
-
- for (i = 0; i < 16; i++)
- urj_part_set_signal (p, DATA[i], 0, 0);
-}
-
-static void
-setup_data (urj_bus_t *bus, uint32_t d)
-{
- int i;
- urj_part_t *p = bus->part;
-
- for (i = 0; i < 16; i++)
- urj_part_set_signal (p, DATA[i], 1, (d >> i) & 1);
-
-}
-
-/**
- * bus->driver->(*read_start)
- *
- */
-static int
-bf533_ezkit_bus_read_start (urj_bus_t *bus, uint32_t adr)
-{
- urj_part_t *p = bus->part;
- urj_chain_t *chain = bus->chain;
-
- select_flash (bus);
- urj_part_set_signal (p, AOE, 1, 0);
- urj_part_set_signal (p, AWE, 1, 1);
-
- setup_address (bus, adr);
- set_data_in (bus);
-
- urj_tap_chain_shift_data_registers (chain, 0);
-
- return URJ_STATUS_OK;
-}
-
-/**
- * bus->driver->(*read_next)
- *
- */
-static uint32_t
-bf533_ezkit_bus_read_next (urj_bus_t *bus, uint32_t adr)
-{
- urj_part_t *p = bus->part;
- urj_chain_t *chain = bus->chain;
- int i;
- uint32_t d = 0;
-
- setup_address (bus, adr);
- urj_tap_chain_shift_data_registers (chain, 1);
-
- for (i = 0; i < 16; i++)
- d |= (uint32_t) (urj_part_get_signal (p, DATA[i]) << i);
-
- return d;
-}
-
-/**
- * bus->driver->(*read_end)
- *
- */
-static uint32_t
-bf533_ezkit_bus_read_end (urj_bus_t *bus)
-{
- urj_part_t *p = bus->part;
- urj_chain_t *chain = bus->chain;
- int i;
- uint32_t d = 0;
-
- unselect_flash (bus);
- urj_part_set_signal (p, AOE, 1, 1);
- urj_part_set_signal (p, AWE, 1, 1);
-
- urj_tap_chain_shift_data_registers (chain, 1);
-
- for (i = 0; i < 16; i++)
- d |= (uint32_t) (urj_part_get_signal (p, DATA[i]) << i);
-
- return d;
-}
-
-/**
- * bus->driver->(*write)
- *
- */
-static void
-bf533_ezkit_bus_write (urj_bus_t *bus, uint32_t adr, uint32_t data)
-{
- urj_part_t *p = bus->part;
- urj_chain_t *chain = bus->chain;
-
- urj_log (URJ_LOG_LEVEL_COMM, "Writing %04lX to %08lX...\n",
- (long unsigned) data, (long unsigned) adr);
-
- select_flash (bus);
- urj_part_set_signal (p, AOE, 1, 1);
-
- setup_address (bus, adr);
- setup_data (bus, data);
-
- urj_tap_chain_shift_data_registers (chain, 0);
-
- urj_part_set_signal (p, AWE, 1, 0);
- urj_tap_chain_shift_data_registers (chain, 0);
- urj_part_set_signal (p, AWE, 1, 1);
- unselect_flash (bus);
- urj_tap_chain_shift_data_registers (chain, 0);
-}
-
-const urj_bus_driver_t urj_bus_bf533_ezkit_bus = {
- "bf533_ezkit",
- N_("Blackfin BF533 EZKit board bus driver"),
- bf533_ezkit_bus_new,
- urj_bus_generic_free,
- bf533_ezkit_bus_printinfo,
- urj_bus_generic_prepare_extest,
- bf533_ezkit_bus_area,
- bf533_ezkit_bus_read_start,
- bf533_ezkit_bus_read_next,
- bf533_ezkit_bus_read_end,
- urj_bus_generic_read,
- bf533_ezkit_bus_write,
- urj_bus_generic_no_init
-};
Index: src/bus/bf537_stamp.c
===================================================================
--- src/bus/bf537_stamp.c (revision 1749)
+++ src/bus/bf537_stamp.c (working copy)
@@ -74,7 +74,7 @@ bf537_stamp_bus_new (urj_chain_t *chain,
{
urj_bus_t *bus;
urj_part_t *part;
- char buff[15];
+ char buff[15], buff2[15];
int i;
int failed = 0;
@@ -92,20 +92,34 @@ bf537_stamp_bus_new (urj_chain_t *chain,
for (i = 0; i < 19; i++)
{
sprintf (buff, "ADDR%d", i + 1);
- if (urj_bus_generic_attach_sig (part, &(ADDR[i]), buff))
+ ADDR[i] = urj_part_find_signal (part, buff);
+ if (!ADDR[i])
{
- sprintf (buff, "ADDR[%d]", i + 1); /* BF533/2/1 uses ADDR[x] instead of ADDRx */
- failed |= urj_bus_generic_attach_sig (part, &(ADDR[i]), buff);
+ sprintf (buff2, "ADDR[%d]", i + 1); /* BF533/2/1 uses ADDR[x] instead of ADDRx */
+ ADDR[i] = urj_part_find_signal (part, buff2);
+ if (!ADDR[i])
+ {
+ urj_error_set (URJ_ERROR_NOTFOUND, "signal '%s' or '%s'",
+ buff, buff2);
+ failed |= URJ_STATUS_FAIL;
+ }
}
}
for (i = 0; i < 16; i++)
{
sprintf (buff, "DATA%d", i);
- if (urj_bus_generic_attach_sig (part, &(DATA[i]), buff))
+ DATA[i] = urj_part_find_signal (part, buff);
+ if (!DATA[i])
{
- sprintf (buff, "DATA[%d]", i); /* BF533/2/1 uses DATA[x] instead of DATAx */
- failed |= urj_bus_generic_attach_sig (part, &(DATA[i]), buff);
+ sprintf (buff2, "DATA[%d]", i); /* BF533/2/1 uses DATA[x] instead of DATAx */
+ DATA[i] = urj_part_find_signal (part, buff2);
+ if (!DATA[i])
+ {
+ urj_error_set (URJ_ERROR_NOTFOUND, "signal '%s' or '%s'",
+ buff, buff2);
+ failed |= URJ_STATUS_FAIL;
+ }
}
}
@@ -300,6 +314,7 @@ bf537_stamp_bus_write (urj_bus_t *bus, u
urj_chain_t *chain = bus->chain;
select_flash (bus);
+ urj_part_set_signal (p, AOE, 1, 1);
urj_part_set_signal (p, ARE, 1, 1);
setup_address (bus, adr);
@@ -392,6 +407,16 @@ const urj_bus_driver_t urj_bus_bf526_ezk
#endif /* #ifdef ENABLE_BUS_BF526_EZKIT */
+#ifdef ENABLE_BUS_BF533_EZKIT
+
+const urj_bus_driver_t urj_bus_bf533_ezkit_bus = {
+ "bf533_ezkit",
+ N_("Blackfin BF533 EZ-KIT board bus driver via BSR"),
+ BF537_STAMP_BUS_FUNCTIONS
+};
+
+#endif /* #ifdef ENABLE_BUS_BF533_EZKIT */
+
#ifdef ENABLE_BUS_BF52X
const urj_bus_driver_t urj_bus_bf52x_bus = {
Index: src/bus/Makefile.am
===================================================================
--- src/bus/Makefile.am (revision 1748)
+++ src/bus/Makefile.am (working copy)
@@ -57,6 +57,9 @@ else
if ENABLE_BUS_BF527_EZKIT
libbus_la_SOURCES += bf537_stamp.c
else
+if ENABLE_BUS_BF533_EZKIT
+libbus_la_SOURCES += bf537_stamp.c
+else
if ENABLE_BUS_BF537_STAMP
libbus_la_SOURCES += bf537_stamp.c
else
@@ -70,15 +73,12 @@ endif
endif
endif
endif
+endif
if ENABLE_BUS_BF533_STAMP
libbus_la_SOURCES += bf533_stamp.c
endif
-if ENABLE_BUS_BF533_EZKIT
-libbus_la_SOURCES += bf533_ezkit.c
-endif
-
if ENABLE_BUS_BF548_EZKIT
libbus_la_SOURCES += bf548_ezkit.c
endif
Index: po/POTFILES.in
===================================================================
--- po/POTFILES.in (revision 1748)
+++ po/POTFILES.in (working copy)
@@ -11,7 +11,6 @@ src/bus/arm9tdmi.c
src/bus/au1500.c
src/bus/avr32.c
src/bus/bcm1250.c
-src/bus/bf533_ezkit.c
src/bus/bf533_stamp.c
src/bus/bf537_stamp.c
src/bus/bf548_ezkit.c
------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
_______________________________________________
UrJTAG-development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/urjtag-development