Lines Matching defs:job
93 #define JOB_WAIT 0x8 /* job must wait for WIP bits */
260 struct arspi_job *job = st->st_busprivate;
262 kmem_free(job, sizeof(*job));
283 struct arspi_job *job;
297 job = st->st_busprivate;
306 if (job->job_flags & JOB_WAIT) {
312 } else if (job->job_flags & JOB_WREN) {
319 PUTREG(sc, ARSPI_REG_DATA, job->job_data);
322 PUTREG(sc, ARSPI_REG_OPCODE, job->job_opcode |
323 (job->job_addr << 8));
327 cnt += job->job_addrcnt + job->job_txcnt;
331 cnt = job->job_rxcnt;
347 struct arspi_job *job;
350 job = st->st_busprivate;
352 if (job->job_flags & JOB_WAIT) {
357 job->job_flags &= ~JOB_WAIT;
361 } else if (job->job_flags & JOB_WREN) {
363 job->job_flags &= ~JOB_WREN;
373 if (job->job_flags & JOB_WRITE)
374 job->job_flags |= (JOB_WAIT | JOB_WREN);
375 job->job_data = GETREG(sc, ARSPI_REG_DATA);
379 if (err || (job->job_flags & JOB_LAST)) {
383 kmem_free(job, sizeof(*job));
466 struct arspi_job *job;
471 job = kmem_zalloc(sizeof (struct arspi_job), KM_SLEEP);
473 st->st_busprivate = job;
482 job->job_opcode = byte;
483 switch (job->job_opcode) {
489 job->job_rxcnt = 3;
492 job->job_rxcnt = 1;
499 job->job_txcnt = 1;
502 job->job_addrcnt = 3; /* 3 dummy bytes */
503 job->job_rxcnt = 1;
506 job->job_addrcnt = 3;
509 job->job_addrcnt = 3;
510 job->job_flags |= JOB_READ;
513 job->job_addrcnt = 3;
514 job->job_flags |= JOB_WRITE;
522 job->job_addrcnt = 3; /* 3 address */
523 job->job_flags |= JOB_READ;
529 for (i = 0; i < job->job_addrcnt; i++) {
532 job->job_addr <<= 8;
533 job->job_addr |= byte;
537 if (job->job_opcode == SPIFLASH_CMD_READFAST) {
542 job->job_opcode = SPIFLASH_CMD_READ;
545 job->job_chunk = chunk;
551 for (chunk = job->job_chunk; chunk; chunk = chunk->chunk_next) {
553 job->job_wresid += chunk->chunk_wresid;
556 job->job_rresid += chunk->chunk_rresid;
560 if (job->job_rresid && job->job_wresid) {
579 struct arspi_job *job = st->st_busprivate;
583 if (job->job_flags & (JOB_WAIT|JOB_WREN))
586 job->job_rxcnt = 0;
587 job->job_txcnt = 0;
588 job->job_data = 0;
590 job->job_txcnt = uimin(job->job_wresid, 4);
591 job->job_rxcnt = uimin(job->job_rresid, 4);
593 job->job_wresid -= job->job_txcnt;
594 job->job_rresid -= job->job_rxcnt;
596 for (i = 0; i < job->job_txcnt; i++) {
597 arspi_get_byte(&job->job_chunk, &byte);
598 job->job_data |= (byte << (i * 8));
601 if ((!job->job_wresid) && (!job->job_rresid)) {
602 job->job_flags |= JOB_LAST;
609 struct arspi_job *job = st->st_busprivate;
613 job->job_addr += job->job_rxcnt;
614 job->job_addr += job->job_txcnt;
615 for (i = 0; i < job->job_rxcnt; i++) {
616 byte = job->job_data & 0xff;
617 job->job_data >>= 8;
618 arspi_put_byte(&job->job_chunk, byte);