usb: class: Using unified kernel thread spawn API
Change-Id: I1e46a3414b71493875cf7f3f05af4ba4750df7c6 Signed-off-by: Sergio Rodriguez <sergio.sf.rodriguez@intel.com>
This commit is contained in:
parent
3932dd98a7
commit
6044f05f8a
2 changed files with 26 additions and 26 deletions
|
@ -53,11 +53,11 @@
|
||||||
#define MAX_PACKET MASS_STORAGE_BULK_EP_MPS
|
#define MAX_PACKET MASS_STORAGE_BULK_EP_MPS
|
||||||
|
|
||||||
#define BLOCK_SIZE 512
|
#define BLOCK_SIZE 512
|
||||||
#define DISK_FIBER_STACK_SZ 512
|
#define DISK_THREAD_STACK_SZ 512
|
||||||
#define DISK_FIBER_PRIO -5
|
#define DISK_THREAD_PRIO -5
|
||||||
|
|
||||||
static volatile int fiber_op;
|
static volatile int thread_op;
|
||||||
static char __stack mass_fiber_stack[DISK_FIBER_STACK_SZ];
|
static char __stack mass_thread_stack[DISK_THREAD_STACK_SZ];
|
||||||
static struct k_sem disk_wait_sem;
|
static struct k_sem disk_wait_sem;
|
||||||
static volatile uint32_t defered_wr_sz;
|
static volatile uint32_t defered_wr_sz;
|
||||||
|
|
||||||
|
@ -382,7 +382,7 @@ static bool readCapacity(void)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void fiber_memory_read_done(void)
|
static void thread_memory_read_done(void)
|
||||||
{
|
{
|
||||||
uint32_t n;
|
uint32_t n;
|
||||||
|
|
||||||
|
@ -419,8 +419,8 @@ static void memoryRead(void)
|
||||||
|
|
||||||
/* we read an entire block */
|
/* we read an entire block */
|
||||||
if (!(addr % BLOCK_SIZE)) {
|
if (!(addr % BLOCK_SIZE)) {
|
||||||
fiber_op = FIBER_OP_READ_QUEUED;
|
thread_op = THREAD_OP_READ_QUEUED;
|
||||||
SYS_LOG_DBG("Signal fiber for %d", (addr/BLOCK_SIZE));
|
SYS_LOG_DBG("Signal thread for %d", (addr/BLOCK_SIZE));
|
||||||
k_sem_give(&disk_wait_sem);
|
k_sem_give(&disk_wait_sem);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -661,7 +661,7 @@ static void memoryWrite(uint8_t *buf, uint16_t size)
|
||||||
if (!((addr + size) % BLOCK_SIZE)) {
|
if (!((addr + size) % BLOCK_SIZE)) {
|
||||||
if (!(disk_access_status() & DISK_STATUS_WR_PROTECT)) {
|
if (!(disk_access_status() & DISK_STATUS_WR_PROTECT)) {
|
||||||
SYS_LOG_DBG("Disk WRITE Qd %d", (addr/BLOCK_SIZE));
|
SYS_LOG_DBG("Disk WRITE Qd %d", (addr/BLOCK_SIZE));
|
||||||
fiber_op = FIBER_OP_WRITE_QUEUED; /* write_queued */
|
thread_op = THREAD_OP_WRITE_QUEUED; /* write_queued */
|
||||||
defered_wr_sz = size;
|
defered_wr_sz = size;
|
||||||
k_sem_give(&disk_wait_sem);
|
k_sem_give(&disk_wait_sem);
|
||||||
return;
|
return;
|
||||||
|
@ -722,7 +722,7 @@ static void mass_storage_bulk_out(uint8_t ep,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fiber_op != FIBER_OP_WRITE_QUEUED) {
|
if (thread_op != THREAD_OP_WRITE_QUEUED) {
|
||||||
usb_ep_read_continue(ep);
|
usb_ep_read_continue(ep);
|
||||||
} else {
|
} else {
|
||||||
SYS_LOG_DBG("> BO not clearing NAKs yet");
|
SYS_LOG_DBG("> BO not clearing NAKs yet");
|
||||||
|
@ -730,7 +730,7 @@ static void mass_storage_bulk_out(uint8_t ep,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void fiber_memory_write_done(void)
|
static void thread_memory_write_done(void)
|
||||||
{
|
{
|
||||||
uint32_t size = defered_wr_sz;
|
uint32_t size = defered_wr_sz;
|
||||||
|
|
||||||
|
@ -744,7 +744,7 @@ static void fiber_memory_write_done(void)
|
||||||
sendCSW();
|
sendCSW();
|
||||||
}
|
}
|
||||||
|
|
||||||
fiber_op = FIBER_OP_WRITE_DONE;
|
thread_op = THREAD_OP_WRITE_DONE;
|
||||||
|
|
||||||
usb_ep_read_continue(EPBULK_OUT);
|
usb_ep_read_continue(EPBULK_OUT);
|
||||||
}
|
}
|
||||||
|
@ -865,33 +865,33 @@ static struct usb_cfg_data mass_storage_config = {
|
||||||
.endpoint = mass_ep_data
|
.endpoint = mass_ep_data
|
||||||
};
|
};
|
||||||
|
|
||||||
static void mass_fiber_main(int arg1, int unused)
|
static void mass_thread_main(int arg1, int unused)
|
||||||
{
|
{
|
||||||
|
|
||||||
ARG_UNUSED(unused);
|
ARG_UNUSED(unused);
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
k_sem_take(&disk_wait_sem, K_FOREVER);
|
k_sem_take(&disk_wait_sem, K_FOREVER);
|
||||||
SYS_LOG_DBG("sem %d", fiber_op);
|
SYS_LOG_DBG("sem %d", thread_op);
|
||||||
|
|
||||||
switch (fiber_op) {
|
switch (thread_op) {
|
||||||
case FIBER_OP_READ_QUEUED:
|
case THREAD_OP_READ_QUEUED:
|
||||||
if (disk_access_read(page, (addr/BLOCK_SIZE), 1)) {
|
if (disk_access_read(page, (addr/BLOCK_SIZE), 1)) {
|
||||||
SYS_LOG_ERR("!! Disk Read Error %d !",
|
SYS_LOG_ERR("!! Disk Read Error %d !",
|
||||||
addr/BLOCK_SIZE);
|
addr/BLOCK_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
fiber_memory_read_done();
|
thread_memory_read_done();
|
||||||
break;
|
break;
|
||||||
case FIBER_OP_WRITE_QUEUED:
|
case THREAD_OP_WRITE_QUEUED:
|
||||||
if (disk_access_write(page, (addr/BLOCK_SIZE), 1)) {
|
if (disk_access_write(page, (addr/BLOCK_SIZE), 1)) {
|
||||||
SYS_LOG_ERR("!!!!! Disk Write Error %d !!!!!",
|
SYS_LOG_ERR("!!!!! Disk Write Error %d !!!!!",
|
||||||
addr/BLOCK_SIZE);
|
addr/BLOCK_SIZE);
|
||||||
}
|
}
|
||||||
fiber_memory_write_done();
|
thread_memory_write_done();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
SYS_LOG_ERR("XXXXXX fiber_op %d ! XXXXX", fiber_op);
|
SYS_LOG_ERR("XXXXXX thread_op %d ! XXXXX", thread_op);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -959,10 +959,10 @@ static int mass_storage_init(struct device *dev)
|
||||||
|
|
||||||
k_sem_init(&disk_wait_sem, 0, 1);
|
k_sem_init(&disk_wait_sem, 0, 1);
|
||||||
|
|
||||||
/* Start a fiber to offload disk ops */
|
/* Start a thread to offload disk ops */
|
||||||
fiber_start(mass_fiber_stack, DISK_FIBER_STACK_SZ,
|
k_thread_spawn(mass_thread_stack, DISK_THREAD_STACK_SZ,
|
||||||
mass_fiber_main, 0, 0,
|
(k_thread_entry_t)mass_thread_main, NULL, NULL, NULL,
|
||||||
DISK_FIBER_PRIO, 0);
|
DISK_THREAD_PRIO, 0, 0);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -93,8 +93,8 @@ struct CSW {
|
||||||
#define MSC_REQUEST_RESET 0xFF
|
#define MSC_REQUEST_RESET 0xFF
|
||||||
#define MSC_REQUEST_GET_MAX_LUN 0xFE
|
#define MSC_REQUEST_GET_MAX_LUN 0xFE
|
||||||
|
|
||||||
#define FIBER_OP_READ_QUEUED 1
|
#define THREAD_OP_READ_QUEUED 1
|
||||||
#define FIBER_OP_WRITE_QUEUED 3
|
#define THREAD_OP_WRITE_QUEUED 3
|
||||||
#define FIBER_OP_WRITE_DONE 4
|
#define THREAD_OP_WRITE_DONE 4
|
||||||
|
|
||||||
#endif /* __MASS_STORAGE_H__ */
|
#endif /* __MASS_STORAGE_H__ */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue