Lines Matching defs:mlc

65 	hil_mlc *mlc = &hp_sdc_mlc;
67 write_lock(&mlc->lock);
68 if (mlc->icount < 0) {
70 up(&mlc->isem);
73 idx = 15 - mlc->icount;
75 mlc->ipacket[idx] |= data | HIL_ERR_INT;
76 mlc->icount--;
79 if ((mlc->ipacket[idx - 1] & HIL_PKT_ADDR_MASK) !=
80 (mlc->ipacket[idx] & HIL_PKT_ADDR_MASK)) {
81 mlc->ipacket[idx] &= ~HIL_PKT_ADDR_MASK;
82 mlc->ipacket[idx] |= (mlc->ipacket[idx - 1]
90 mlc->ipacket[idx] =
97 if (mlc->imatch == 0)
99 if ((mlc->imatch == (HIL_ERR_INT | HIL_PKT_CMD | HIL_CMD_POL))
100 && (mlc->ipacket[idx] == (mlc->imatch | idx)))
102 if (mlc->ipacket[idx] == mlc->imatch)
115 mlc->ipacket[idx] |= HIL_ERR_INT | HIL_ERR_PERR |
120 mlc->ipacket[idx] |= HIL_ERR_INT | HIL_ERR_LERR;
134 tasklet_schedule(mlc->tasklet);
135 up(&mlc->isem);
137 write_unlock(&mlc->lock);
143 static int hp_sdc_mlc_in(hil_mlc *mlc, suseconds_t timeout)
148 priv = mlc->priv;
151 if (down_trylock(&mlc->isem)) {
153 mlc->ipacket[0] =
154 HIL_ERR_INT | (mlc->opacket &
158 mlc->icount = 14;
159 /* printk(KERN_DEBUG PREFIX ">[%x]\n", mlc->ipacket[0]); */
162 if (time_after(jiffies, mlc->instart + mlc->intimeout)) {
164 tv.tv_usec - mlc->instart.tv_usec,
165 mlc->intimeout);
168 up(&mlc->isem);
173 up(&mlc->isem);
179 static int hp_sdc_mlc_cts(hil_mlc *mlc)
183 priv = mlc->priv;
186 BUG_ON(down_trylock(&mlc->isem));
187 BUG_ON(down_trylock(&mlc->osem));
189 up(&mlc->isem);
190 up(&mlc->osem);
192 if (down_trylock(&mlc->csem)) {
193 if (priv->trans.act.semaphore != &mlc->csem)
203 priv->trans.act.semaphore = &mlc->csem;
217 priv->trans.act.semaphore = &mlc->osem;
218 up(&mlc->csem);
222 static int hp_sdc_mlc_out(hil_mlc *mlc)
226 priv = mlc->priv;
229 BUG_ON(down_trylock(&mlc->osem));
231 if (mlc->opacket & HIL_DO_ALTER_CTRL)
236 up(&mlc->osem);
240 BUG_ON(down_trylock(&mlc->csem));
241 up(&mlc->csem);
245 priv->trans.act.semaphore = &mlc->osem;
251 (mlc->opacket &
255 (mlc->opacket & HIL_PKT_DATA_MASK)
264 priv->emtestmode = mlc->opacket & HIL_CTRL_TEST;
267 BUG_ON((mlc->opacket & (HIL_CTRL_APE | HIL_CTRL_IPF)) == HIL_CTRL_APE);
269 if ((mlc->opacket & HIL_CTRL_ONLY) == HIL_CTRL_ONLY)
273 BUG_ON(mlc->opacket & HIL_CTRL_APE);
286 priv->trans.act.semaphore = &mlc->osem;
292 /* priv->tseq[3] = (mlc->ddc + 1) | HP_SDC_LPS_ACSUCC; */
294 if (mlc->opacket & HIL_CTRL_APE) {
296 BUG_ON(down_trylock(&mlc->csem));
304 hil_mlc *mlc = &hp_sdc_mlc;
316 hp_sdc_mlc_priv.trans.act.semaphore = &mlc->osem;
319 mlc->cts = &hp_sdc_mlc_cts;
320 mlc->in = &hp_sdc_mlc_in;
321 mlc->out = &hp_sdc_mlc_out;
322 mlc->priv = &hp_sdc_mlc_priv;
324 err = hil_mlc_register(mlc);
332 if (hil_mlc_unregister(mlc))
343 hil_mlc *mlc = &hp_sdc_mlc;
349 if (hil_mlc_unregister(mlc))