summaryrefslogtreecommitdiffstats
path: root/drivers/net/skfp/smttimer.c
diff options
context:
space:
mode:
authorJeff Kirsher <jeffrey.t.kirsher@intel.com>2011-07-31 00:06:29 -0700
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2011-08-27 00:58:13 -0700
commit33f810b2036f13f1b123062a9e5c1794d400ce81 (patch)
tree370b55026f4bd856e96842f86af631ca2bab3da2 /drivers/net/skfp/smttimer.c
parent3cd0999d134235d64b175edd2eb1d46ebc97b377 (diff)
fddi: Move the FDDI drivers
Move the FDDI drivers into drivers/net/fddi/ and make the necessary Kconfig and Makefile changes. CC: "Maciej W. Rozycki" <macro@linux-mips.org> CC: Christoph Goos <cgoos@syskonnect.de> CC: <linux@syskonnect.de> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net/skfp/smttimer.c')
-rw-r--r--drivers/net/skfp/smttimer.c156
1 files changed, 0 insertions, 156 deletions
diff --git a/drivers/net/skfp/smttimer.c b/drivers/net/skfp/smttimer.c
deleted file mode 100644
index 531795e98c30..000000000000
--- a/drivers/net/skfp/smttimer.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/******************************************************************************
- *
- * (C)Copyright 1998,1999 SysKonnect,
- * a business unit of Schneider & Koch & Co. Datensysteme GmbH.
- *
- * See the file "skfddi.c" for further information.
- *
- * 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.
- *
- * The information in this file is provided "AS IS" without warranty.
- *
- ******************************************************************************/
-
-/*
- SMT timer
-*/
-
-#include "h/types.h"
-#include "h/fddi.h"
-#include "h/smc.h"
-
-#ifndef lint
-static const char ID_sccs[] = "@(#)smttimer.c 2.4 97/08/04 (C) SK " ;
-#endif
-
-static void timer_done(struct s_smc *smc, int restart);
-
-void smt_timer_init(struct s_smc *smc)
-{
- smc->t.st_queue = NULL;
- smc->t.st_fast.tm_active = FALSE ;
- smc->t.st_fast.tm_next = NULL;
- hwt_init(smc) ;
-}
-
-void smt_timer_stop(struct s_smc *smc, struct smt_timer *timer)
-{
- struct smt_timer **prev ;
- struct smt_timer *tm ;
-
- /*
- * remove timer from queue
- */
- timer->tm_active = FALSE ;
- if (smc->t.st_queue == timer && !timer->tm_next) {
- hwt_stop(smc) ;
- }
- for (prev = &smc->t.st_queue ; (tm = *prev) ; prev = &tm->tm_next ) {
- if (tm == timer) {
- *prev = tm->tm_next ;
- if (tm->tm_next) {
- tm->tm_next->tm_delta += tm->tm_delta ;
- }
- return ;
- }
- }
-}
-
-void smt_timer_start(struct s_smc *smc, struct smt_timer *timer, u_long time,
- u_long token)
-{
- struct smt_timer **prev ;
- struct smt_timer *tm ;
- u_long delta = 0 ;
-
- time /= 16 ; /* input is uS, clock ticks are 16uS */
- if (!time)
- time = 1 ;
- smt_timer_stop(smc,timer) ;
- timer->tm_smc = smc ;
- timer->tm_token = token ;
- timer->tm_active = TRUE ;
- if (!smc->t.st_queue) {
- smc->t.st_queue = timer ;
- timer->tm_next = NULL;
- timer->tm_delta = time ;
- hwt_start(smc,time) ;
- return ;
- }
- /*
- * timer correction
- */
- timer_done(smc,0) ;
-
- /*
- * find position in queue
- */
- delta = 0 ;
- for (prev = &smc->t.st_queue ; (tm = *prev) ; prev = &tm->tm_next ) {
- if (delta + tm->tm_delta > time) {
- break ;
- }
- delta += tm->tm_delta ;
- }
- /* insert in queue */
- *prev = timer ;
- timer->tm_next = tm ;
- timer->tm_delta = time - delta ;
- if (tm)
- tm->tm_delta -= timer->tm_delta ;
- /*
- * start new with first
- */
- hwt_start(smc,smc->t.st_queue->tm_delta) ;
-}
-
-void smt_force_irq(struct s_smc *smc)
-{
- smt_timer_start(smc,&smc->t.st_fast,32L, EV_TOKEN(EVENT_SMT,SM_FAST));
-}
-
-void smt_timer_done(struct s_smc *smc)
-{
- timer_done(smc,1) ;
-}
-
-static void timer_done(struct s_smc *smc, int restart)
-{
- u_long delta ;
- struct smt_timer *tm ;
- struct smt_timer *next ;
- struct smt_timer **last ;
- int done = 0 ;
-
- delta = hwt_read(smc) ;
- last = &smc->t.st_queue ;
- tm = smc->t.st_queue ;
- while (tm && !done) {
- if (delta >= tm->tm_delta) {
- tm->tm_active = FALSE ;
- delta -= tm->tm_delta ;
- last = &tm->tm_next ;
- tm = tm->tm_next ;
- }
- else {
- tm->tm_delta -= delta ;
- delta = 0 ;
- done = 1 ;
- }
- }
- *last = NULL;
- next = smc->t.st_queue ;
- smc->t.st_queue = tm ;
-
- for ( tm = next ; tm ; tm = next) {
- next = tm->tm_next ;
- timer_event(smc,tm->tm_token) ;
- }
-
- if (restart && smc->t.st_queue)
- hwt_start(smc,smc->t.st_queue->tm_delta) ;
-}
-