parent
e78237ed31
commit
614a309bcc
|
|
@ -2472,8 +2472,9 @@ ec_request_state_t ecrt_reg_request_state(
|
||||||
* activation).
|
* activation).
|
||||||
*
|
*
|
||||||
* \ingroup ApplicationInterfaceRT
|
* \ingroup ApplicationInterfaceRT
|
||||||
|
* \return 0 on success, otherwise negative error code.
|
||||||
*/
|
*/
|
||||||
EC_PUBLIC_API void ecrt_reg_request_write(
|
EC_PUBLIC_API int ecrt_reg_request_write(
|
||||||
ec_reg_request_t *req, /**< Register request. */
|
ec_reg_request_t *req, /**< Register request. */
|
||||||
uint16_t address, /**< Register address. */
|
uint16_t address, /**< Register address. */
|
||||||
size_t size /**< Size to write. */
|
size_t size /**< Size to write. */
|
||||||
|
|
@ -2491,8 +2492,9 @@ EC_PUBLIC_API void ecrt_reg_request_write(
|
||||||
* activation).
|
* activation).
|
||||||
*
|
*
|
||||||
* \ingroup ApplicationInterfaceRT
|
* \ingroup ApplicationInterfaceRT
|
||||||
|
* \return 0 on success, otherwise negative error code.
|
||||||
*/
|
*/
|
||||||
EC_PUBLIC_API void ecrt_reg_request_read(
|
EC_PUBLIC_API int ecrt_reg_request_read(
|
||||||
ec_reg_request_t *req, /**< Register request. */
|
ec_reg_request_t *req, /**< Register request. */
|
||||||
uint16_t address, /**< Register address. */
|
uint16_t address, /**< Register address. */
|
||||||
size_t size /**< Size to write. */
|
size_t size /**< Size to write. */
|
||||||
|
|
|
||||||
|
|
@ -89,7 +89,7 @@ ec_request_state_t ecrt_reg_request_state(const ec_reg_request_t *reg)
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
void ecrt_reg_request_write(ec_reg_request_t *reg, uint16_t address,
|
int ecrt_reg_request_write(ec_reg_request_t *reg, uint16_t address,
|
||||||
size_t size)
|
size_t size)
|
||||||
{
|
{
|
||||||
ec_ioctl_reg_request_t io;
|
ec_ioctl_reg_request_t io;
|
||||||
|
|
@ -103,14 +103,14 @@ void ecrt_reg_request_write(ec_reg_request_t *reg, uint16_t address,
|
||||||
|
|
||||||
ret = ioctl(reg->config->master->fd, EC_IOCTL_REG_REQUEST_WRITE, &io);
|
ret = ioctl(reg->config->master->fd, EC_IOCTL_REG_REQUEST_WRITE, &io);
|
||||||
if (EC_IOCTL_IS_ERROR(ret)) {
|
if (EC_IOCTL_IS_ERROR(ret)) {
|
||||||
fprintf(stderr, "Failed to command an register write operation: %s\n",
|
return -EC_IOCTL_ERRNO(ret);
|
||||||
strerror(EC_IOCTL_ERRNO(ret)));
|
|
||||||
}
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
void ecrt_reg_request_read(ec_reg_request_t *reg, uint16_t address,
|
int ecrt_reg_request_read(ec_reg_request_t *reg, uint16_t address,
|
||||||
size_t size)
|
size_t size)
|
||||||
{
|
{
|
||||||
ec_ioctl_reg_request_t io;
|
ec_ioctl_reg_request_t io;
|
||||||
|
|
@ -123,9 +123,9 @@ void ecrt_reg_request_read(ec_reg_request_t *reg, uint16_t address,
|
||||||
|
|
||||||
ret = ioctl(reg->config->master->fd, EC_IOCTL_REG_REQUEST_READ, &io);
|
ret = ioctl(reg->config->master->fd, EC_IOCTL_REG_REQUEST_READ, &io);
|
||||||
if (EC_IOCTL_IS_ERROR(ret)) {
|
if (EC_IOCTL_IS_ERROR(ret)) {
|
||||||
fprintf(stderr, "Failed to command an register read operation: %s\n",
|
return -EC_IOCTL_ERRNO(ret);
|
||||||
strerror(EC_IOCTL_ERRNO(ret)));
|
|
||||||
}
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
|
||||||
|
|
@ -1069,7 +1069,10 @@ static ATTRIBUTES int ec_ioctl_slave_reg_read(
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
ecrt_reg_request_read(&request, io.address, io.size);
|
ret = ecrt_reg_request_read(&request, io.address, io.size);
|
||||||
|
if (ret) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
if (down_interruptible(&master->master_sem)) {
|
if (down_interruptible(&master->master_sem)) {
|
||||||
ec_reg_request_clear(&request);
|
ec_reg_request_clear(&request);
|
||||||
|
|
@ -1153,7 +1156,10 @@ static ATTRIBUTES int ec_ioctl_slave_reg_write(
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
ecrt_reg_request_write(&request, io.address, io.size);
|
ret = ecrt_reg_request_write(&request, io.address, io.size);
|
||||||
|
if (ret) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
if (down_interruptible(&master->master_sem)) {
|
if (down_interruptible(&master->master_sem)) {
|
||||||
ec_reg_request_clear(&request);
|
ec_reg_request_clear(&request);
|
||||||
|
|
@ -4050,8 +4056,7 @@ static ATTRIBUTES int ec_ioctl_reg_request_write(
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
ecrt_reg_request_write(reg, io.address, io.transfer_size);
|
return ecrt_reg_request_write(reg, io.address, io.transfer_size);
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
@ -4093,8 +4098,7 @@ static ATTRIBUTES int ec_ioctl_reg_request_read(
|
||||||
return -EOVERFLOW;
|
return -EOVERFLOW;
|
||||||
}
|
}
|
||||||
|
|
||||||
ecrt_reg_request_read(reg, io.address, io.transfer_size);
|
return ecrt_reg_request_read(reg, io.address, io.transfer_size);
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
|
||||||
|
|
@ -89,24 +89,26 @@ ec_request_state_t ecrt_reg_request_state(const ec_reg_request_t *reg)
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
void ecrt_reg_request_write(ec_reg_request_t *reg, uint16_t address,
|
int ecrt_reg_request_write(ec_reg_request_t *reg, uint16_t address,
|
||||||
size_t size)
|
size_t size)
|
||||||
{
|
{
|
||||||
reg->dir = EC_DIR_OUTPUT;
|
reg->dir = EC_DIR_OUTPUT;
|
||||||
reg->address = address;
|
reg->address = address;
|
||||||
reg->transfer_size = min(size, reg->mem_size);
|
reg->transfer_size = min(size, reg->mem_size);
|
||||||
reg->state = EC_INT_REQUEST_QUEUED;
|
reg->state = EC_INT_REQUEST_QUEUED;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
void ecrt_reg_request_read(ec_reg_request_t *reg, uint16_t address,
|
int ecrt_reg_request_read(ec_reg_request_t *reg, uint16_t address,
|
||||||
size_t size)
|
size_t size)
|
||||||
{
|
{
|
||||||
reg->dir = EC_DIR_INPUT;
|
reg->dir = EC_DIR_INPUT;
|
||||||
reg->address = address;
|
reg->address = address;
|
||||||
reg->transfer_size = min(size, reg->mem_size);
|
reg->transfer_size = min(size, reg->mem_size);
|
||||||
reg->state = EC_INT_REQUEST_QUEUED;
|
reg->state = EC_INT_REQUEST_QUEUED;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue