summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/staging/comedi/drivers/s626.c95
1 files changed, 46 insertions, 49 deletions
diff --git a/drivers/staging/comedi/drivers/s626.c b/drivers/staging/comedi/drivers/s626.c
index 1785aae39ff6..68f677ac14ba 100644
--- a/drivers/staging/comedi/drivers/s626.c
+++ b/drivers/staging/comedi/drivers/s626.c
@@ -139,8 +139,6 @@ struct s626_enc_info {
void (*reset_cap_flags)(struct comedi_device *dev,
const struct s626_enc_info *k);
- uint16_t my_cra; /* address of CRA register */
- uint16_t my_crb; /* address of CRB register */
uint16_t my_latch_lsw; /* address of Latch least-significant-word
* register */
uint16_t my_event_bits[4]; /* bit translations for IntSrc -->RDMISC2 */
@@ -750,7 +748,7 @@ static uint32_t s626_read_latch(struct comedi_device *dev,
static void s626_set_latch_source(struct comedi_device *dev,
const struct s626_enc_info *k, uint16_t value)
{
- s626_debi_replace(dev, k->my_crb,
+ s626_debi_replace(dev, S626_LP_CRB(k->chan),
~(S626_CRBMSK_INTCTRL | S626_CRBMSK_LATCHSRC),
S626_SET_CRB_LATCHSRC(value));
}
@@ -773,7 +771,7 @@ static void s626_preload(struct comedi_device *dev,
static void s626_reset_cap_flags_a(struct comedi_device *dev,
const struct s626_enc_info *k)
{
- s626_debi_replace(dev, k->my_crb, ~S626_CRBMSK_INTCTRL,
+ s626_debi_replace(dev, S626_LP_CRB(k->chan), ~S626_CRBMSK_INTCTRL,
(S626_SET_CRB_INTRESETCMD(1) |
S626_SET_CRB_INTRESET_A(1)));
}
@@ -781,7 +779,7 @@ static void s626_reset_cap_flags_a(struct comedi_device *dev,
static void s626_reset_cap_flags_b(struct comedi_device *dev,
const struct s626_enc_info *k)
{
- s626_debi_replace(dev, k->my_crb, ~S626_CRBMSK_INTCTRL,
+ s626_debi_replace(dev, S626_LP_CRB(k->chan), ~S626_CRBMSK_INTCTRL,
(S626_SET_CRB_INTRESETCMD(1) |
S626_SET_CRB_INTRESET_B(1)));
}
@@ -799,8 +797,8 @@ static uint16_t s626_get_mode_a(struct comedi_device *dev,
unsigned cntsrc, clkmult, clkpol, encmode;
/* Fetch CRA and CRB register images. */
- cra = s626_debi_read(dev, k->my_cra);
- crb = s626_debi_read(dev, k->my_crb);
+ cra = s626_debi_read(dev, S626_LP_CRA(k->chan));
+ crb = s626_debi_read(dev, S626_LP_CRB(k->chan));
/*
* Populate the standardized counter setup bit fields.
@@ -854,8 +852,8 @@ static uint16_t s626_get_mode_b(struct comedi_device *dev,
unsigned cntsrc, clkmult, clkpol, encmode;
/* Fetch CRA and CRB register images. */
- cra = s626_debi_read(dev, k->my_cra);
- crb = s626_debi_read(dev, k->my_crb);
+ cra = s626_debi_read(dev, S626_LP_CRA(k->chan));
+ crb = s626_debi_read(dev, S626_LP_CRB(k->chan));
/*
* Populate the standardized counter setup bit fields.
@@ -982,9 +980,9 @@ static void s626_set_mode_a(struct comedi_device *dev,
* While retaining CounterB and LatchSrc configurations, program the
* new counter operating mode.
*/
- s626_debi_replace(dev, k->my_cra,
+ s626_debi_replace(dev, S626_LP_CRA(k->chan),
S626_CRAMSK_INDXSRC_B | S626_CRAMSK_CNTSRC_B, cra);
- s626_debi_replace(dev, k->my_crb,
+ s626_debi_replace(dev, S626_LP_CRB(k->chan),
~(S626_CRBMSK_INTCTRL | S626_CRBMSK_CLKENAB_A), crb);
}
@@ -1066,9 +1064,9 @@ static void s626_set_mode_b(struct comedi_device *dev,
* While retaining CounterA and LatchSrc configurations, program the
* new counter operating mode.
*/
- s626_debi_replace(dev, k->my_cra,
+ s626_debi_replace(dev, S626_LP_CRA(k->chan),
~(S626_CRAMSK_INDXSRC_B | S626_CRAMSK_CNTSRC_B), cra);
- s626_debi_replace(dev, k->my_crb,
+ s626_debi_replace(dev, S626_LP_CRB(k->chan),
S626_CRBMSK_CLKENAB_A | S626_CRBMSK_LATCHSRC, crb);
}
@@ -1078,7 +1076,7 @@ static void s626_set_mode_b(struct comedi_device *dev,
static void s626_set_enable_a(struct comedi_device *dev,
const struct s626_enc_info *k, uint16_t enab)
{
- s626_debi_replace(dev, k->my_crb,
+ s626_debi_replace(dev, S626_LP_CRB(k->chan),
~(S626_CRBMSK_INTCTRL | S626_CRBMSK_CLKENAB_A),
S626_SET_CRB_CLKENAB_A(enab));
}
@@ -1086,7 +1084,7 @@ static void s626_set_enable_a(struct comedi_device *dev,
static void s626_set_enable_b(struct comedi_device *dev,
const struct s626_enc_info *k, uint16_t enab)
{
- s626_debi_replace(dev, k->my_crb,
+ s626_debi_replace(dev, S626_LP_CRB(k->chan),
~(S626_CRBMSK_INTCTRL | S626_CRBMSK_CLKENAB_B),
S626_SET_CRB_CLKENAB_B(enab));
}
@@ -1094,20 +1092,23 @@ static void s626_set_enable_b(struct comedi_device *dev,
static uint16_t s626_get_enable_a(struct comedi_device *dev,
const struct s626_enc_info *k)
{
- return S626_GET_CRB_CLKENAB_A(s626_debi_read(dev, k->my_crb));
+ return S626_GET_CRB_CLKENAB_A(s626_debi_read(dev,
+ S626_LP_CRB(k->chan)));
}
static uint16_t s626_get_enable_b(struct comedi_device *dev,
const struct s626_enc_info *k)
{
- return S626_GET_CRB_CLKENAB_B(s626_debi_read(dev, k->my_crb));
+ return S626_GET_CRB_CLKENAB_B(s626_debi_read(dev,
+ S626_LP_CRB(k->chan)));
}
#ifdef unused
static uint16_t s626_get_latch_source(struct comedi_device *dev,
const struct s626_enc_info *k)
{
- return S626_GET_CRB_LATCHSRC(s626_debi_read(dev, k->my_crb));
+ return S626_GET_CRB_LATCHSRC(s626_debi_read(dev,
+ S626_LP_CRB(k->chan)));
}
#endif
@@ -1119,14 +1120,14 @@ static uint16_t s626_get_latch_source(struct comedi_device *dev,
static void s626_set_load_trig_a(struct comedi_device *dev,
const struct s626_enc_info *k, uint16_t trig)
{
- s626_debi_replace(dev, k->my_cra, ~S626_CRAMSK_LOADSRC_A,
+ s626_debi_replace(dev, S626_LP_CRA(k->chan), ~S626_CRAMSK_LOADSRC_A,
S626_SET_CRA_LOADSRC_A(trig));
}
static void s626_set_load_trig_b(struct comedi_device *dev,
const struct s626_enc_info *k, uint16_t trig)
{
- s626_debi_replace(dev, k->my_crb,
+ s626_debi_replace(dev, S626_LP_CRB(k->chan),
~(S626_CRBMSK_LOADSRC_B | S626_CRBMSK_INTCTRL),
S626_SET_CRB_LOADSRC_B(trig));
}
@@ -1134,13 +1135,15 @@ static void s626_set_load_trig_b(struct comedi_device *dev,
static uint16_t s626_get_load_trig_a(struct comedi_device *dev,
const struct s626_enc_info *k)
{
- return S626_GET_CRA_LOADSRC_A(s626_debi_read(dev, k->my_cra));
+ return S626_GET_CRA_LOADSRC_A(s626_debi_read(dev,
+ S626_LP_CRA(k->chan)));
}
static uint16_t s626_get_load_trig_b(struct comedi_device *dev,
const struct s626_enc_info *k)
{
- return S626_GET_CRB_LOADSRC_B(s626_debi_read(dev, k->my_crb));
+ return S626_GET_CRB_LOADSRC_B(s626_debi_read(dev,
+ S626_LP_CRB(k->chan)));
}
/*
@@ -1155,12 +1158,12 @@ static void s626_set_int_src_a(struct comedi_device *dev,
struct s626_private *devpriv = dev->private;
/* Reset any pending counter overflow or index captures. */
- s626_debi_replace(dev, k->my_crb, ~S626_CRBMSK_INTCTRL,
+ s626_debi_replace(dev, S626_LP_CRB(k->chan), ~S626_CRBMSK_INTCTRL,
(S626_SET_CRB_INTRESETCMD(1) |
S626_SET_CRB_INTRESET_A(1)));
/* Program counter interrupt source. */
- s626_debi_replace(dev, k->my_cra, ~S626_CRAMSK_INTSRC_A,
+ s626_debi_replace(dev, S626_LP_CRA(k->chan), ~S626_CRAMSK_INTSRC_A,
S626_SET_CRA_INTSRC_A(int_source));
/* Update MISC2 interrupt enable mask. */
@@ -1177,15 +1180,17 @@ static void s626_set_int_src_b(struct comedi_device *dev,
uint16_t crb;
/* Cache writeable CRB register image. */
- crb = s626_debi_read(dev, k->my_crb) & ~S626_CRBMSK_INTCTRL;
+ crb = s626_debi_read(dev, S626_LP_CRB(k->chan)) & ~S626_CRBMSK_INTCTRL;
/* Reset any pending counter overflow or index captures. */
- s626_debi_write(dev, k->my_crb, (crb | S626_SET_CRB_INTRESETCMD(1) |
- S626_SET_CRB_INTRESET_B(1)));
+ s626_debi_write(dev, S626_LP_CRB(k->chan),
+ (crb | S626_SET_CRB_INTRESETCMD(1) |
+ S626_SET_CRB_INTRESET_B(1)));
/* Program counter interrupt source. */
- s626_debi_write(dev, k->my_crb, ((crb & ~S626_CRBMSK_INTSRC_B) |
- S626_SET_CRB_INTSRC_B(int_source)));
+ s626_debi_write(dev, S626_LP_CRB(k->chan),
+ ((crb & ~S626_CRBMSK_INTSRC_B) |
+ S626_SET_CRB_INTSRC_B(int_source)));
/* Update MISC2 interrupt enable mask. */
devpriv->counter_int_enabs =
@@ -1196,13 +1201,15 @@ static void s626_set_int_src_b(struct comedi_device *dev,
static uint16_t s626_get_int_src_a(struct comedi_device *dev,
const struct s626_enc_info *k)
{
- return S626_GET_CRA_INTSRC_A(s626_debi_read(dev, k->my_cra));
+ return S626_GET_CRA_INTSRC_A(s626_debi_read(dev,
+ S626_LP_CRA(k->chan)));
}
static uint16_t s626_get_int_src_b(struct comedi_device *dev,
const struct s626_enc_info *k)
{
- return S626_GET_CRB_INTSRC_B(s626_debi_read(dev, k->my_crb));
+ return S626_GET_CRB_INTSRC_B(s626_debi_read(dev,
+ S626_LP_CRB(k->chan)));
}
#ifdef unused
@@ -1295,10 +1302,11 @@ static void s626_pulse_index_a(struct comedi_device *dev,
{
uint16_t cra;
- cra = s626_debi_read(dev, k->my_cra);
+ cra = s626_debi_read(dev, S626_LP_CRA(k->chan));
/* Pulse index. */
- s626_debi_write(dev, k->my_cra, (cra ^ S626_CRAMSK_INDXPOL_A));
- s626_debi_write(dev, k->my_cra, cra);
+ s626_debi_write(dev, S626_LP_CRA(k->chan),
+ (cra ^ S626_CRAMSK_INDXPOL_A));
+ s626_debi_write(dev, S626_LP_CRA(k->chan), cra);
}
static void s626_pulse_index_b(struct comedi_device *dev,
@@ -1306,10 +1314,11 @@ static void s626_pulse_index_b(struct comedi_device *dev,
{
uint16_t crb;
- crb = s626_debi_read(dev, k->my_crb) & ~S626_CRBMSK_INTCTRL;
+ crb = s626_debi_read(dev, S626_LP_CRB(k->chan)) & ~S626_CRBMSK_INTCTRL;
/* Pulse index. */
- s626_debi_write(dev, k->my_crb, (crb ^ S626_CRBMSK_INDXPOL_B));
- s626_debi_write(dev, k->my_crb, crb);
+ s626_debi_write(dev, S626_LP_CRB(k->chan),
+ (crb ^ S626_CRBMSK_INDXPOL_B));
+ s626_debi_write(dev, S626_LP_CRB(k->chan), crb);
}
static const struct s626_enc_info s626_enc_chan_info[] = {
@@ -1325,8 +1334,6 @@ static const struct s626_enc_info s626_enc_chan_info[] = {
.set_load_trig = s626_set_load_trig_a,
.set_mode = s626_set_mode_a,
.reset_cap_flags = s626_reset_cap_flags_a,
- .my_cra = S626_LP_CRA(0),
- .my_crb = S626_LP_CRB(0),
.my_latch_lsw = S626_LP_CNTR0ALSW,
.my_event_bits = S626_EVBITS(0),
}, {
@@ -1341,8 +1348,6 @@ static const struct s626_enc_info s626_enc_chan_info[] = {
.set_load_trig = s626_set_load_trig_a,
.set_mode = s626_set_mode_a,
.reset_cap_flags = s626_reset_cap_flags_a,
- .my_cra = S626_LP_CRA(1),
- .my_crb = S626_LP_CRB(1),
.my_latch_lsw = S626_LP_CNTR1ALSW,
.my_event_bits = S626_EVBITS(1),
}, {
@@ -1357,8 +1362,6 @@ static const struct s626_enc_info s626_enc_chan_info[] = {
.set_load_trig = s626_set_load_trig_a,
.set_mode = s626_set_mode_a,
.reset_cap_flags = s626_reset_cap_flags_a,
- .my_cra = S626_LP_CRA(2),
- .my_crb = S626_LP_CRB(2),
.my_latch_lsw = S626_LP_CNTR2ALSW,
.my_event_bits = S626_EVBITS(2),
}, {
@@ -1373,8 +1376,6 @@ static const struct s626_enc_info s626_enc_chan_info[] = {
.set_load_trig = s626_set_load_trig_b,
.set_mode = s626_set_mode_b,
.reset_cap_flags = s626_reset_cap_flags_b,
- .my_cra = S626_LP_CRA(3),
- .my_crb = S626_LP_CRB(3),
.my_latch_lsw = S626_LP_CNTR0BLSW,
.my_event_bits = S626_EVBITS(3),
}, {
@@ -1389,8 +1390,6 @@ static const struct s626_enc_info s626_enc_chan_info[] = {
.set_load_trig = s626_set_load_trig_b,
.set_mode = s626_set_mode_b,
.reset_cap_flags = s626_reset_cap_flags_b,
- .my_cra = S626_LP_CRA(4),
- .my_crb = S626_LP_CRB(4),
.my_latch_lsw = S626_LP_CNTR1BLSW,
.my_event_bits = S626_EVBITS(4),
}, {
@@ -1405,8 +1404,6 @@ static const struct s626_enc_info s626_enc_chan_info[] = {
.set_load_trig = s626_set_load_trig_b,
.set_mode = s626_set_mode_b,
.reset_cap_flags = s626_reset_cap_flags_b,
- .my_cra = S626_LP_CRA(5),
- .my_crb = S626_LP_CRB(5),
.my_latch_lsw = S626_LP_CNTR2BLSW,
.my_event_bits = S626_EVBITS(5),
},