drivers/qencoder: add an interface to configure the encoder index pin position

This commit is contained in:
raiden00pl 2021-11-06 19:08:35 +01:00 committed by Xiang Xiao
parent 5a4140f020
commit bf23abfbd5
2 changed files with 24 additions and 1 deletions

View File

@ -328,6 +328,24 @@ static int qe_ioctl(FAR struct file *filep, int cmd, unsigned long arg)
}
break;
/* QEIOC_SETINDEX - Set the index pin position
* Argument: uint32
*/
case QEIOC_SETINDEX:
{
uint32_t indexpos = (uint32_t)arg;
if (lower->ops->setindex != NULL)
{
ret = lower->ops->setindex(lower, indexpos);
}
else
{
ret = -ENOTTY;
}
}
break;
/* Any unrecognized IOCTL commands might be platform-specific ioctl
* commands
*/

View File

@ -57,9 +57,10 @@
#define QEIOC_POSITION _QEIOC(0x0001) /* Arg: int32_t* pointer */
#define QEIOC_RESET _QEIOC(0x0002) /* Arg: None */
#define QEIOC_SETPOSMAX _QEIOC(0x0003) /* Arg: uint32_t */
#define QEIOC_SETINDEX _QEIOC(0x0004) /* Arg: uint32_t */
#define QE_FIRST 0x0001 /* First required command */
#define QE_NCMDS 3 /* Two required commands */
#define QE_NCMDS 4 /* 4 required commands */
/* User defined ioctl commands are also supported. These will be forwarded
* by the upper-half QE driver to the lower-half QE driver via the ioctl()
@ -120,6 +121,10 @@ struct qe_ops_s
CODE int (*reset)(FAR struct qe_lowerhalf_s *lower);
/* Set the index pin position */
CODE int (*setindex)(FAR struct qe_lowerhalf_s *lower, uint32_t pos);
/* Lower-half logic may support platform-specific ioctl commands */
CODE int (*ioctl)(FAR struct qe_lowerhalf_s *lower,