From owner-freebsd-net Thu Feb 22 9:18: 2 2001 Delivered-To: freebsd-net@freebsd.org Received: from brunel.uk1.vbc.net (brunel.uk1.vbc.net [194.207.2.8]) by hub.freebsd.org (Postfix) with ESMTP id 7C3BC37B491; Thu, 22 Feb 2001 09:17:53 -0800 (PST) (envelope-from jcv@vbc.net) Received: from localhost (jcv@localhost) by brunel.uk1.vbc.net (8.11.0/8.11.0) with ESMTP id f1MHHqn73381; Thu, 22 Feb 2001 17:17:52 GMT X-Authentication-Warning: brunel.uk1.vbc.net: jcv owned process doing -bs Date: Thu, 22 Feb 2001 17:17:52 +0000 (GMT) From: Jean-Christophe Varaillon X-Sender: jcv@brunel.uk1.vbc.net To: jhay@FreeBSD.ORG Cc: julian@elischer.org, andy@tecc.co.uk, freebsd-net@FreeBSD.ORG Subject: Re: - N2d PCI & Driver Option - In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-net@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org >On Thu, 22 Feb 2001, John Hay wrote: > > >On Thu, 22 Feb 2001,Jean-Christophe Varaillon wrote: > > > > +-------+ Serial Interface +-------------+ > > | cisco | | FreeBSD 4.1 | > > | 3600 }----------{}-----------{ | > > | | N2d | | > > +-------+ card +-------------+ > > x.x.x.145 x.x.x.146 > > > > > > I need help to establish the communication between the router and the > N2d > > card (sr interface). > > > > The reason why it is not working is almost certainly in the driver. > > > > There are two kinds of cables used with these cards. > > SDL Communications, the manufacturer, supplies x.21 cables > > that have the input clock pin tied to the output clock pin. > > > > Normaly I should be able to use a driver option to tell the > > HDLC chip to pass the signal through to the output clock pin. > > > > If this isn't configured, there is no data out clock, so the card > > doesn't work. > > > > Could you, please, tell me how to configure it ? > > You are a little bit out of luck. On the ISA cards you can configure > the clock settings with the flags option in the kernel config file. > You can't do it with the PCI cards though, because none of that > config line is used. The reason is that on the ISA cards there were > no way for the driver to figure out what kind of cable was attached. > On the PCI cards there are some registers that you can read to get > that info. The driver will use 2 seperate clocks for V.35 cables > and a combined clock for X.21 cables. If you want to play with it, > look in /usr/src/sys/i386/isa/if_sr.c almost at the end of > srattach_pci(). You will see either SR_FLAGS_EXT_SEP_CLK or > SR_FLAGS_EXT_CLK gets assigned to sc->clk_cfg. If you search > further into the file for SR_FLAGS_EXT_CLK, you will find the > place where the actual magic is done to select the clocks. > > John This is now working properly, to adapt the driver if_sr.c to my case, a global variable (My_Case) has to be added in sr_init_msci(structsr_softc *sc): --------------------------------------------------------- sr_init_msci(struct sr_softc *sc) { int portndx; /* on-board port number */ u_int mcr_v; /* contents of modem control */ u_int *fecrp; /* pointer for PCI's MCR i/o */ struct sr_hardc *hc = sc->hc; msci_channel *msci = &hc->sca->msci[sc->scachan]; #ifdef N2_TEST_SPEED int br_v; /* contents for BR divisor */ int etcndx; /* index into ETC table */ int fifo_v, gotspeed; /* final tabled speed found */ int tmc_v; /* timer control register */ int wanted; /* speed (bitrate) wanted... */ struct rate_line *rtp; #endif portndx = sc->scachan; #if BUGGY > 0 printf("sr: sr_init_msci( sc=%08x)\n", sc); #endif SRC_PUT8(hc->sca_base, msci->cmd, SCA_CMD_RESET); SRC_PUT8(hc->sca_base, msci->md0, SCA_MD0_CRC_1 | SCA_MD0_CRC_CCITT | SCA_MD0_CRC_ENABLE | SCA_MD0_MODE_HDLC); SRC_PUT8(hc->sca_base, msci->md1, SCA_MD1_NOADDRCHK); SRC_PUT8(hc->sca_base, msci->md2, SCA_MD2_DUPLEX | SCA_MD2_NRZ); /* * According to the manual I should give a reset after changing the * mode registers. */ SRC_PUT8(hc->sca_base, msci->cmd, SCA_CMD_RXRESET); SRC_PUT8(hc->sca_base, msci->ctl, SCA_CTL_IDLPAT | SCA_CTL_UDRNC | SCA_CTL_RTS); /* * XXX Later we will have to support different clock settings. */ #ifdef My_Case printf ("vbcnet hack writing 0x%x\n", SCA_TXS_CLK_RX) ; SRC_PUT8(hc->sca_base, msci->rxs, 0); SRC_PUT8(hc->sca_base, msci->txs, SCA_TXS_CLK_RX); #else switch (sc->clk_cfg) { default: #if BUGGY > 0 . . . ------------------------------------------------------------- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message