diff options
Diffstat (limited to 'components/drivers')
| -rw-r--r-- | components/drivers/cputime/cputimer.c | 5 | ||||
| -rw-r--r-- | components/drivers/include/rtdevice.h | 4 | ||||
| -rw-r--r-- | components/drivers/serial/serial_v2.c | 4 | ||||
| -rw-r--r-- | components/drivers/spi/spi_core.c | 8 | ||||
| -rw-r--r-- | components/drivers/tty/pty.c | 9 | ||||
| -rw-r--r-- | components/drivers/tty/tty.c | 6 |
6 files changed, 28 insertions, 8 deletions
diff --git a/components/drivers/cputime/cputimer.c b/components/drivers/cputime/cputimer.c index 27e64a1354..12be40356e 100644 --- a/components/drivers/cputime/cputimer.c +++ b/components/drivers/cputime/cputimer.c @@ -337,6 +337,8 @@ rt_err_t rt_cputime_sleep(rt_uint64_t tick) /* current context checking */ RT_DEBUG_SCHEDULER_AVAILABLE(RT_TRUE); + rt_cputimer_init(&cputimer, "cputime_sleep", _cputime_sleep_timeout, thread, 0, RT_TIMER_FLAG_ONE_SHOT | RT_TIMER_FLAG_SOFT_TIMER); + /* disable interrupt */ level = rt_hw_interrupt_disable(); @@ -349,7 +351,6 @@ rt_err_t rt_cputime_sleep(rt_uint64_t tick) /* reset the timeout of thread timer and start it */ if (err == RT_EOK) { - rt_cputimer_init(&cputimer, "cputime_sleep", _cputime_sleep_timeout, thread, 0, RT_TIMER_FLAG_ONE_SHOT | RT_TIMER_FLAG_SOFT_TIMER); rt_cputimer_control(&cputimer, RT_TIMER_CTRL_SET_TIME, &tick); rt_cputimer_start(&cputimer); @@ -359,7 +360,6 @@ rt_err_t rt_cputime_sleep(rt_uint64_t tick) thread->error = -RT_EINTR; rt_schedule(); - rt_cputimer_detach(&cputimer); if (thread->error == -RT_ETIMEOUT) thread->error = RT_EOK; } @@ -368,6 +368,7 @@ rt_err_t rt_cputime_sleep(rt_uint64_t tick) rt_hw_interrupt_enable(level); } + rt_cputimer_detach(&cputimer); return err; } diff --git a/components/drivers/include/rtdevice.h b/components/drivers/include/rtdevice.h index 97acc06e0b..5b1530dbc6 100644 --- a/components/drivers/include/rtdevice.h +++ b/components/drivers/include/rtdevice.h @@ -164,6 +164,10 @@ extern "C" { #include "drivers/rt_dev_bus.h" #endif +#ifdef RT_USING_LCD +#include "drivers/lcd.h" +#endif + #ifdef __cplusplus } #endif diff --git a/components/drivers/serial/serial_v2.c b/components/drivers/serial/serial_v2.c index 9e809048bd..c88df7aabe 100644 --- a/components/drivers/serial/serial_v2.c +++ b/components/drivers/serial/serial_v2.c @@ -296,7 +296,7 @@ static rt_ssize_t rt_serial_update_write_index(struct rt_ringbuffer *rb, * @param size Receive data buffer length. * @return Return the final length of data received. */ -rt_size_t _serial_poll_rx(struct rt_device *dev, +rt_ssize_t _serial_poll_rx(struct rt_device *dev, rt_off_t pos, void *buffer, rt_size_t size) @@ -343,7 +343,7 @@ rt_size_t _serial_poll_rx(struct rt_device *dev, * @param size Transmit data buffer length. * @return Return the final length of data received. */ -rt_size_t _serial_poll_tx(struct rt_device *dev, +rt_ssize_t _serial_poll_tx(struct rt_device *dev, rt_off_t pos, const void *buffer, rt_size_t size) diff --git a/components/drivers/spi/spi_core.c b/components/drivers/spi/spi_core.c index 63b50f265a..fca542d9bb 100644 --- a/components/drivers/spi/spi_core.c +++ b/components/drivers/spi/spi_core.c @@ -95,6 +95,14 @@ rt_err_t rt_spi_configure(struct rt_spi_device *device, device->config.mode = cfg->mode & RT_SPI_MODE_MASK ; device->config.max_hz = cfg->max_hz ; + if (device->cs_pin != PIN_NONE) + { + if (device->config.mode & RT_SPI_CS_HIGH) + rt_pin_write(device->cs_pin, PIN_LOW); + else + rt_pin_write(device->cs_pin, PIN_HIGH); + } + if (device->bus != RT_NULL) { result = rt_mutex_take(&(device->bus->lock), RT_WAITING_FOREVER); diff --git a/components/drivers/tty/pty.c b/components/drivers/tty/pty.c index 46a241a715..64e3a41df1 100644 --- a/components/drivers/tty/pty.c +++ b/components/drivers/tty/pty.c @@ -211,6 +211,12 @@ static int ptmx_open(struct dfs_fd *fd) ret = ld->ops->open(fd); } + rt_device_t device = (rt_device_t)fd->vnode->data; + if(fd->vnode->ref_count == 1) + { + ret = rt_device_open(device, fd->flags); + } + return ret; } #ifdef RT_USING_DEVICE_OPS @@ -286,7 +292,8 @@ static int pts_register(struct tty_struct *ptm_drv, struct tty_struct *pts_drv, extern struct termios tty_std_termios; pts_drv->init_termios = tty_std_termios; pts_drv->init_termios.c_cflag = B38400 | CS8 | CREAD; - pts_drv->init_termios.c_lflag |= ICANON; + pts_drv->init_termios.c_lflag |= ECHO | ICANON; + pts_drv->init_termios.c_oflag |= ONLCR; pts_drv->init_termios.__c_ispeed = 38400; pts_drv->init_termios.__c_ospeed = 38400; diff --git a/components/drivers/tty/tty.c b/components/drivers/tty/tty.c index 2a9380f55a..933d5f028b 100644 --- a/components/drivers/tty/tty.c +++ b/components/drivers/tty/tty.c @@ -200,7 +200,7 @@ int __tty_check_change(struct tty_struct *tty, int sig) if (!tty_pgrp) { - LOG_D(tty, "sig=%d, tty->pgrp == -1!\n", sig); + LOG_D("sig=%d, tty->pgrp == -1!\n", sig); } return ret; } @@ -275,7 +275,7 @@ static int tiocsctty(struct tty_struct *tty, int arg) if (current->leader && (current->session == tty->session)) { - return 0; + return 0; } /* @@ -284,7 +284,7 @@ static int tiocsctty(struct tty_struct *tty, int arg) */ if (!current->leader || current->tty) { - return -EPERM; + return -EPERM; } if (tty->session > 0) |
