Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 104191
b: refs/heads/master
c: ccd3474
h: refs/heads/master
i:
  104189: ab01623
  104187: aaa5fe5
  104183: 3638cbe
  104175: e6a053e
  104159: 8bd0795
  104127: aa3c63a
  104063: c86afbc
  103935: 32b16df
v: v3
  • Loading branch information
Dmitry Torokhov committed May 16, 2008
1 parent af88654 commit 48eb185
Show file tree
Hide file tree
Showing 3 changed files with 1 addition and 54 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 3e582db0783872a645f5236ef142be6579b300ad
refs/heads/master: ccd3474569a101914444dc37cc108eec22578999
52 changes: 0 additions & 52 deletions trunk/drivers/input/serio/libps2.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,6 @@ MODULE_AUTHOR("Dmitry Torokhov <dtor@mail.ru>");
MODULE_DESCRIPTION("PS/2 driver library");
MODULE_LICENSE("GPL");

/* Work structure to schedule execution of a command */
struct ps2work {
struct work_struct work;
struct ps2dev *ps2dev;
int command;
unsigned char param[0];
};


/*
* ps2_sendbyte() sends a byte to the device and waits for acknowledge.
* It doesn't handle retransmission, though it could - because if there
Expand Down Expand Up @@ -245,49 +236,6 @@ int ps2_command(struct ps2dev *ps2dev, unsigned char *param, int command)
}
EXPORT_SYMBOL(ps2_command);

/*
* ps2_execute_scheduled_command() sends a command, previously scheduled by
* ps2_schedule_command(), to a PS/2 device (keyboard, mouse, etc.)
*/

static void ps2_execute_scheduled_command(struct work_struct *work)
{
struct ps2work *ps2work = container_of(work, struct ps2work, work);

ps2_command(ps2work->ps2dev, ps2work->param, ps2work->command);
kfree(ps2work);
}

/*
* ps2_schedule_command() allows to schedule delayed execution of a PS/2
* command and can be used to issue a command from an interrupt or softirq
* context.
*/

int ps2_schedule_command(struct ps2dev *ps2dev, unsigned char *param, int command)
{
struct ps2work *ps2work;
int send = (command >> 12) & 0xf;
int receive = (command >> 8) & 0xf;

if (!(ps2work = kmalloc(sizeof(struct ps2work) + max(send, receive), GFP_ATOMIC)))
return -1;

memset(ps2work, 0, sizeof(struct ps2work));
ps2work->ps2dev = ps2dev;
ps2work->command = command;
memcpy(ps2work->param, param, send);
INIT_WORK(&ps2work->work, ps2_execute_scheduled_command);

if (!schedule_work(&ps2work->work)) {
kfree(ps2work);
return -1;
}

return 0;
}
EXPORT_SYMBOL(ps2_schedule_command);

/*
* ps2_init() initializes ps2dev structure
*/
Expand Down
1 change: 0 additions & 1 deletion trunk/include/linux/libps2.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ void ps2_init(struct ps2dev *ps2dev, struct serio *serio);
int ps2_sendbyte(struct ps2dev *ps2dev, unsigned char byte, int timeout);
void ps2_drain(struct ps2dev *ps2dev, int maxbytes, int timeout);
int ps2_command(struct ps2dev *ps2dev, unsigned char *param, int command);
int ps2_schedule_command(struct ps2dev *ps2dev, unsigned char *param, int command);
int ps2_handle_ack(struct ps2dev *ps2dev, unsigned char data);
int ps2_handle_response(struct ps2dev *ps2dev, unsigned char data);
void ps2_cmd_aborted(struct ps2dev *ps2dev);
Expand Down

0 comments on commit 48eb185

Please sign in to comment.