17 #ifdef CONFIG_GENERIC_GPIO    18 static int modparam_gpiobase = -1;
    20 MODULE_PARM_DESC(gpiobase, 
"The GPIO number base. -1 means dynamic, which is the default.");
    24 #ifdef CONFIG_PARPORT_NOT_PC    32     unsigned char tms_data, tms_ctrl;
    33     unsigned char tck_data, tck_ctrl;
    34     unsigned char tdi_data, tdi_ctrl;
    38     unsigned char tdo_sts, tdo_ctrl;
    41 static const struct ppcable cables[];
    42 static char *cablename = 
"Minimal";
    47 #ifdef CONFIG_GENERIC_GPIO    51 int mrf_gpio_request(
struct gpio_chip *chip, 
unsigned offset)
    59 void mrf_gpio_free(
struct gpio_chip *chip, 
unsigned offset)
    63 int mrf_gpio_get(
struct gpio_chip *chip, 
unsigned offset)
    67     void __iomem *plx = priv->
uio.mem[0].internal_addr;
    78 void mrf_gpio_set(
struct gpio_chip *chip, 
unsigned offset, 
int value)
    82     void __iomem *plx = priv->
uio.mem[0].internal_addr;
    87     spin_lock(&priv->lock);
    89     val = ioread32(plx + 
GPIOC);
    95     iowrite32(val, plx + 
GPIOC);
    97     spin_unlock(&priv->lock);
   101 int mrf_gpio_dir_in(
struct gpio_chip *chip, 
unsigned offset)
   109 int mrf_gpio_dir_out(
struct gpio_chip *chip, 
unsigned offset, 
int value)
   113     mrf_gpio_set(chip, offset, value);
   117 void mrf_gpio_setup(
struct mrf_priv *priv)
   121     priv->gpio.label = dev_name(&priv->
pdev->dev);
   122     priv->gpio.owner = THIS_MODULE;
   123     priv->gpio.base = modparam_gpiobase;
   125     priv->gpio.can_sleep = 0;
   126     priv->gpio.request = &mrf_gpio_request;
   127     priv->gpio.free = &mrf_gpio_free;
   128     priv->gpio.direction_input = &mrf_gpio_dir_in;
   129     priv->gpio.direction_output = &mrf_gpio_dir_out;
   130     priv->gpio.set = &mrf_gpio_set;
   131     priv->gpio.get = &mrf_gpio_get;
   137     ret = gpiochip_add(&priv->gpio);
   139         dev_warn(&priv->
pdev->dev, 
"GPIO setup error, JTAG unavailable\n");
   141         priv->gpio_cleanup = 1;
   142         dev_info(&priv->
pdev->dev, 
"GPIO setup ok, JTAG available at bit %d\n",
   147 void mrf_gpio_cleanup(
struct mrf_priv *priv)
   149     if (priv->gpio_cleanup) {
   150         int status = gpiochip_remove(&priv->gpio);
   151         while (status==-EBUSY) {
   153             status = gpiochip_remove(&priv->gpio);
   155         BUG_ON(status && status!=-EBUSY);
   156         dev_info(&priv->
pdev->dev, 
"GPIO Cleaned up\n");
   162 #ifdef CONFIG_PARPORT_NOT_PC   168 #define PPBITSET(REG, SIG, BIT) \   169   if(dev->cable->SIG ## _ ## REG)  {if(d & dev->cable->SIG ## _ ## REG) \   170     {val |= GPIOC_pin_data(BIT);} else {val &= ~GPIOC_pin_data(BIT);}}   175 #define PPBITGET(REG, SIG, BIT) \   176   if(dev->cable->SIG ## _ ## REG && val & GPIOC_pin_data(BIT)) \   177   {ret |= dev->cable->SIG ## _ ## REG;}   179 static void mrfpp_write_data(
struct parport *port, 
unsigned char d)
   181     struct mrf_priv *dev = port->private_data;
   182     void __iomem *plx = dev->
uio.mem[0].internal_addr;
   185     spin_lock(&dev->lock);
   187         spin_unlock(&dev->lock);
   190     val = ioread32(plx + 
GPIOC);
   192     PPBITSET(data, tck, 0)
   193     PPBITSET(data, tms, 1)
   194     PPBITSET(data, tdi, 3)
   197     iowrite32(val, plx + 
GPIOC);
   198     spin_unlock(&dev->lock);
   201 static 
void mrfpp_write_control(struct parport *port, 
unsigned char d)
   203     struct mrf_priv *dev = port->private_data;
   204     void __iomem *plx = dev->
uio.mem[0].internal_addr;
   209     spin_lock(&dev->lock);
   211         spin_unlock(&dev->lock);
   214     val = ioread32(plx + GPIOC);
   216     PPBITSET(ctrl, tck, 0)
   217     PPBITSET(ctrl, tms, 1)
   218     PPBITSET(ctrl, tdi, 3)
   221     iowrite32(val, plx + GPIOC);
   222     spin_unlock(&dev->lock);
   225 static 
unsigned char mrfpp_read_data(struct parport *port)
   227     unsigned char ret = 0;
   228     struct mrf_priv *dev = port->private_data;
   229     void __iomem *plx = dev->
uio.mem[0].internal_addr;
   232     val = ioread32(plx + GPIOC);
   233     PPBITGET(data, tck, 0)
   234     PPBITGET(data, tms, 1)
   235     PPBITGET(data, tdi, 3)
   240 static 
unsigned char mrfpp_read_control(struct parport *port)
   242     unsigned char ret = 0;
   243     struct mrf_priv *dev = port->private_data;
   244     void __iomem *plx = dev->
uio.mem[0].internal_addr;
   247     val = ioread32(plx + GPIOC);
   248     PPBITGET(ctrl, tck, 0)
   249     PPBITGET(ctrl, tms, 1)
   250     PPBITGET(ctrl, tdo, 2)
   251     PPBITGET(ctrl, tdi, 3)
   257 static 
unsigned char mrfpp_read_status(struct parport *port)
   259     unsigned char ret = 0;
   260     struct mrf_priv *dev = port->private_data;
   261     void __iomem *plx = dev->
uio.mem[0].internal_addr;
   264     val = ioread32(plx + GPIOC);
   265     PPBITGET(sts, tdo, 2)
   271 static 
unsigned char mrfpp_frob_control(struct parport *dev, 
unsigned char mask,
   277     ret = mrfpp_read_control(dev);
   278     ret = (ret & ~mask) ^ val;
   279     mrfpp_write_control(dev, ret);
   283 static void mrfpp_noop(
struct parport *dev) {}
   285 static void mrfpp_initstate(
struct pardevice *dev, 
struct parport_state *s)
   292 static void mrfpp_savestate(
struct parport *dev, 
struct parport_state *s)
   294     s->u.pc.ctr = mrfpp_read_control(dev);
   295     s->u.pc.ecr = mrfpp_read_data(dev);
   297 static void mrfpp_restorestate(
struct parport *dev, 
struct parport_state *s)
   299     mrfpp_write_control(dev, s->u.pc.ctr);
   300     mrfpp_write_data(dev, s->u.pc.ecr);
   303 static struct parport_operations mrfppops = {
   304     .owner = THIS_MODULE,
   306     .write_data    = mrfpp_write_data,
   307     .write_control = mrfpp_write_control,
   309     .read_data     = mrfpp_read_data,
   310     .read_status   = mrfpp_read_status,
   311     .read_control  = mrfpp_read_control,
   313     .frob_control  = mrfpp_frob_control,
   315     .enable_irq    = mrfpp_noop,
   316     .disable_irq   = mrfpp_noop,
   317     .data_forward  = mrfpp_noop,
   318     .data_reverse  = mrfpp_noop,
   320     .init_state    = mrfpp_initstate,
   321     .save_state    = mrfpp_savestate,
   322     .restore_state = mrfpp_restorestate,
   325 void mrf_pp_setup(
struct mrf_priv* dev)
   327     const struct ppcable *ccable = cables;
   329     for(; ccable->name; ccable++) {
   330         if(strcmp(ccable->name, cablename)==0)
   334         dev_err(&dev->
pdev->dev, 
"Cable '%s' is not defined\n", cablename);
   338     dev->port = parport_register_port(0, PARPORT_IRQ_NONE,
   343         dev_err(&dev->
pdev->dev, 
"Failed to register parallel port\n");
   348     dev->port->modes = PARPORT_MODE_PCSPP; 
   349     dev->port->private_data = dev;
   350     dev->port->dev = &dev->
pdev->dev;
   352     parport_announce_port(dev->port);
   358     dev_info(&dev->
pdev->dev, 
"Emulating cable: %s\n", ccable->name);
   362 void mrf_pp_cleanup(
struct mrf_priv* priv)
   365         parport_remove_port(priv->port);
   372 static const struct ppcable cables[] =
   382     .name = 
"ByteBlaster",
 
#define GPIOC_pin_data(N)
 
module_param_named(interfaceversion, modparam_iversion, int, 0444)
 
MODULE_PARM_DESC(interfaceversion, "User space interface version")