# HG changeset patch # User Florian Pose # Date 1275481944 -7200 # Node ID 4314c010e583fccbac425355e4b77228102b1293 # Parent a756113e4dc6833457631cdd812869908139b8a2# Parent 356a3839837f6bdd3b88ef75d13d2e86796a3fcd merge. diff -r a756113e4dc6 -r 4314c010e583 TODO --- a/TODO Wed Jun 02 14:27:04 2010 +0200 +++ b/TODO Wed Jun 02 14:32:24 2010 +0200 @@ -43,6 +43,7 @@ * Fix casting away constness during expected WC calculation. * Read AL status code on spontaneous state change. * Fix clearing domains etc. when not activated and releasing. +* Only output watchdog config if not default. Future issues: diff -r a756113e4dc6 -r 4314c010e583 configure.ac --- a/configure.ac Wed Jun 02 14:27:04 2010 +0200 +++ b/configure.ac Wed Jun 02 14:32:24 2010 +0200 @@ -513,6 +513,30 @@ fi #------------------------------------------------------------------------------ +# Read alias address from register +#------------------------------------------------------------------------------ + +AC_ARG_ENABLE([regalias], + AS_HELP_STRING([--enable-regalias], + [Read alias adresses from register (default: no)]), + [ + case "${enableval}" in + yes) regalias=1 + ;; + no) regalias=0 + ;; + *) AC_MSG_ERROR([Invalid value for --enable-regalias]) + ;; + esac + ], + [regalias=0] +) + +if test "x${regalias}" = "x1"; then + AC_DEFINE([EC_REGALIAS], [1], [Read alias adresses from register]) +fi + +#------------------------------------------------------------------------------ # Command-line tool #----------------------------------------------------------------------------- diff -r a756113e4dc6 -r 4314c010e583 examples/rtai/rtai_sample.c --- a/examples/rtai/rtai_sample.c Wed Jun 02 14:27:04 2010 +0200 +++ b/examples/rtai/rtai_sample.c Wed Jun 02 14:32:24 2010 +0200 @@ -76,8 +76,8 @@ // process data static uint8_t *domain1_pd; // process data memory -#define AnaInSlavePos 0, 1 -#define DigOutSlavePos 0, 3 +#define AnaInSlavePos 0, 3 +#define DigOutSlavePos 0, 2 #define Beckhoff_EL2004 0x00000002, 0x07D43052 #define Beckhoff_EL3162 0x00000002, 0x0C5A3052 @@ -286,8 +286,8 @@ t_critical = cpu_khz * 1000 / FREQUENCY - cpu_khz * INHIBIT_TIME / 1000; master = ecrt_request_master(0); - if (IS_ERR(master)) { - ret = PTR_ERR(master); + if (!master) { + ret = -EBUSY; printk(KERN_ERR PFX "Requesting master 0 failed!\n"); goto out_return; } diff -r a756113e4dc6 -r 4314c010e583 master/fsm_slave_scan.c --- a/master/fsm_slave_scan.c Wed Jun 02 14:27:04 2010 +0200 +++ b/master/fsm_slave_scan.c Wed Jun 02 14:32:24 2010 +0200 @@ -52,7 +52,9 @@ void ec_fsm_slave_scan_state_datalink(ec_fsm_slave_scan_t *); void ec_fsm_slave_scan_state_sii_size(ec_fsm_slave_scan_t *); void ec_fsm_slave_scan_state_sii_data(ec_fsm_slave_scan_t *); +#ifdef EC_REGALIAS void ec_fsm_slave_scan_state_regalias(ec_fsm_slave_scan_t *); +#endif void ec_fsm_slave_scan_state_preop(ec_fsm_slave_scan_t *); void ec_fsm_slave_scan_state_sync(ec_fsm_slave_scan_t *); void ec_fsm_slave_scan_state_pdos(ec_fsm_slave_scan_t *); @@ -61,7 +63,9 @@ void ec_fsm_slave_scan_state_error(ec_fsm_slave_scan_t *); void ec_fsm_slave_scan_enter_datalink(ec_fsm_slave_scan_t *); +#ifdef EC_REGALIAS void ec_fsm_slave_scan_enter_regalias(ec_fsm_slave_scan_t *); +#endif void ec_fsm_slave_scan_enter_preop(ec_fsm_slave_scan_t *); void ec_fsm_slave_scan_enter_pdos(ec_fsm_slave_scan_t *); @@ -694,7 +698,15 @@ } } +#ifdef EC_REGALIAS ec_fsm_slave_scan_enter_regalias(fsm); +#else + if (slave->sii.mailbox_protocols & EC_MBOX_COE) { + ec_fsm_slave_scan_enter_preop(fsm); + } else { + fsm->state = ec_fsm_slave_scan_state_end; + } +#endif return; end: @@ -703,13 +715,12 @@ fsm->state = ec_fsm_slave_scan_state_error; } - -/*****************************************************************************/ - -/** - Slave scan entry function: REGALIAS. -*/ - +/*****************************************************************************/ + +#ifdef EC_REGALIAS + +/** Slave scan entry function: REGALIAS. + */ void ec_fsm_slave_scan_enter_regalias( ec_fsm_slave_scan_t *fsm /**< slave state machine */ ) @@ -727,9 +738,8 @@ /*****************************************************************************/ -/** - Slave scan state: REGALIAS. -*/ +/** Slave scan state: REGALIAS. + */ void ec_fsm_slave_scan_state_regalias( ec_fsm_slave_scan_t *fsm /**< slave state machine */ ) @@ -754,6 +764,7 @@ EC_SLAVE_DBG(slave, 1, "Read alias %u from register.\n", slave->effective_alias); } + if (slave->sii.mailbox_protocols & EC_MBOX_COE) { ec_fsm_slave_scan_enter_preop(fsm); } else { @@ -761,6 +772,8 @@ } } +#endif // defined EC_REGALIAS + /*****************************************************************************/ /** Enter slave scan state PREOP. diff -r a756113e4dc6 -r 4314c010e583 master/slave_config.c --- a/master/slave_config.c Wed Jun 02 14:27:04 2010 +0200 +++ b/master/slave_config.c Wed Jun 02 14:32:24 2010 +0200 @@ -687,6 +687,12 @@ uint32_t sync0_cycle_time, uint32_t sync0_shift_time, uint32_t sync1_cycle_time, uint32_t sync1_shift_time) { + EC_CONFIG_DBG(sc, 1, "%s(sc = 0x%p, assign_activate = 0x%04X," + " sync0_cycle = %u, sync0_shift = %u," + " sync1_cycle = %u, sync1_shift = %u\n", + __func__, sc, assign_activate, sync0_cycle_time, sync0_shift_time, + sync1_cycle_time, sync1_shift_time); + sc->dc_assign_activate = assign_activate; sc->dc_sync[0].cycle_time = sync0_cycle_time; sc->dc_sync[0].shift_time = sync0_shift_time;