Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1bc6daae authored by Bartlomiej Zolnierkiewicz's avatar Bartlomiej Zolnierkiewicz
Browse files

ide: factor out processing of special commands from ide_special_rq()



Factor out processing of special commands from ide_special_rq()
to ide_do_devset() and ide_do_park_unpark().

There should be no functional changes caused by this patch.

Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
parent 18660823
Loading
Loading
Loading
Loading
+41 −34
Original line number Diff line number Diff line
@@ -514,16 +514,26 @@ int ide_devset_execute(ide_drive_t *drive, const struct ide_devset *setting,
	return ret;
}

static ide_startstop_t ide_special_rq(ide_drive_t *drive, struct request *rq)
static ide_startstop_t ide_do_devset(ide_drive_t *drive, struct request *rq)
{
	u8 cmd = rq->cmd[0];
	int err, (*setfunc)(ide_drive_t *, int) = rq->special;

	err = setfunc(drive, *(int *)&rq->cmd[1]);
	if (err)
		rq->errors = err;
	else
		err = 1;
	ide_end_request(drive, err, 0);
	return ide_stopped;
}

	if (cmd == REQ_PARK_HEADS || cmd == REQ_UNPARK_HEADS) {
static ide_startstop_t ide_do_park_unpark(ide_drive_t *drive, struct request *rq)
{
	ide_task_t task;
	struct ide_taskfile *tf = &task.tf;

	memset(&task, 0, sizeof(task));
		if (cmd == REQ_PARK_HEADS) {
	if (rq->cmd[0] == REQ_PARK_HEADS) {
		drive->sleep = *(unsigned long *)rq->special;
		drive->dev_flags |= IDE_DFLAG_SLEEPING;
		tf->command = ATA_CMD_IDLEIMMEDIATE;
@@ -541,19 +551,16 @@ static ide_startstop_t ide_special_rq(ide_drive_t *drive, struct request *rq)
	return do_rw_taskfile(drive, &task);
}

	switch (cmd) {
	case REQ_DEVSET_EXEC:
static ide_startstop_t ide_special_rq(ide_drive_t *drive, struct request *rq)
{
		int err, (*setfunc)(ide_drive_t *, int) = rq->special;
	u8 cmd = rq->cmd[0];

		err = setfunc(drive, *(int *)&rq->cmd[1]);
		if (err)
			rq->errors = err;
		else
			err = 1;
		ide_end_request(drive, err, 0);
		return ide_stopped;
	}
	switch (cmd) {
	case REQ_PARK_HEADS:
	case REQ_UNPARK_HEADS:
		return ide_do_park_unpark(drive, rq);
	case REQ_DEVSET_EXEC:
		return ide_do_devset(drive, rq);
	case REQ_DRIVE_RESET:
		return ide_do_reset(drive);
	default: