[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 05/12] linux-user: Add support for getting/setting RTC PLL co
From: |
Laurent Vivier |
Subject: |
Re: [PATCH 05/12] linux-user: Add support for getting/setting RTC PLL correction using ioctls |
Date: |
Tue, 14 Jan 2020 13:39:26 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.3.1 |
Le 09/01/2020 à 13:59, Filip Bozuta a écrit :
> This patch implements functionalities of following ioctls:
>
> RTC_PLL_GET - Getting PLL correction
>
> Read the PLL correction for RTCs that support PLL. The PLL correction
> is returned in the following structure:
>
> struct rtc_pll_info {
> int pll_ctrl; /* placeholder for fancier control */
> int pll_value; /* get/set correction value */
> int pll_max; /* max +ve (faster) adjustment value */
> int pll_min; /* max -ve (slower) adjustment value */
> int pll_posmult; /* factor for +ve correction */
> int pll_negmult; /* factor for -ve correction */
> long pll_clock; /* base PLL frequency */
> };
>
> A pointer to this structure should be passed as the third
> ioctl's argument.
>
> RTC_PLL_SET - Setting PLL correction
>
> Sets the PLL correction for RTCs that support PLL. The PLL correction
> that is set is specified by the rtc_pll_info structure pointed to by
> the third ioctl's' argument.
>
> Implementation notes:
>
> All ioctls in this patch have a pointer to a structure rtc_pll_info
> as their third argument. All elements of this structure are of
> type 'int', except the last one that is of type 'long'. That is
> the reason why a separate target structure (target_rtc_pll_info)
> is defined in linux-user/syscall_defs. The rest of the
> implementation is straightforward.
>
> Signed-off-by: Filip Bozuta <address@hidden>
> ---
> linux-user/ioctls.h | 2 ++
> linux-user/syscall_defs.h | 14 ++++++++++++++
> linux-user/syscall_types.h | 9 +++++++++
> 3 files changed, 25 insertions(+)
>
> diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h
> index b09396e..0a4e3f1 100644
> --- a/linux-user/ioctls.h
> +++ b/linux-user/ioctls.h
> @@ -87,6 +87,8 @@
> IOCTL(RTC_EPOCH_SET, IOC_W, TYPE_ULONG)
> IOCTL(RTC_WKALM_RD, IOC_R, MK_PTR(MK_STRUCT(STRUCT_rtc_wkalrm)))
> IOCTL(RTC_WKALM_SET, IOC_W, MK_PTR(MK_STRUCT(STRUCT_rtc_wkalrm)))
> + IOCTL(RTC_PLL_GET, IOC_R, MK_PTR(MK_STRUCT(STRUCT_rtc_pll_info)))
> + IOCTL(RTC_PLL_SET, IOC_W, MK_PTR(MK_STRUCT(STRUCT_rtc_pll_info)))
>
> IOCTL(BLKROSET, IOC_W, MK_PTR(TYPE_INT))
> IOCTL(BLKROGET, IOC_R, MK_PTR(TYPE_INT))
> diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
> index 37504a2..8370f41 100644
> --- a/linux-user/syscall_defs.h
> +++ b/linux-user/syscall_defs.h
> @@ -763,6 +763,16 @@ struct target_pollfd {
> #define TARGET_KDSETLED 0x4B32 /* set led state [lights, not
> flags] */
> #define TARGET_KDSIGACCEPT 0x4B4E
>
> +struct target_rtc_pll_info {
> + int pll_ctrl;
> + int pll_value;
> + int pll_max;
> + int pll_min;
> + int pll_posmult;
> + int pll_negmult;
> + abi_long pll_clock;
> +};
> +
> /* real time clock ioctls */
> #define TARGET_RTC_AIE_ON TARGET_IO('p', 0x01)
> #define TARGET_RTC_AIE_OFF TARGET_IO('p', 0x02)
> @@ -782,6 +792,10 @@ struct target_pollfd {
> #define TARGET_RTC_EPOCH_SET TARGET_IOW('p', 0x0e, abi_ulong)
> #define TARGET_RTC_WKALM_RD TARGET_IOR('p', 0x10, struct rtc_wkalrm)
> #define TARGET_RTC_WKALM_SET TARGET_IOW('p', 0x0f, struct rtc_wkalrm)
> +#define TARGET_RTC_PLL_GET TARGET_IOR('p', 0x11,
> \
> + struct target_rtc_pll_info)
> +#define TARGET_RTC_PLL_SET TARGET_IOW('p', 0x12,
> \
> + struct target_rtc_pll_info)
>
> #if defined(TARGET_ALPHA) || defined(TARGET_MIPS) || defined(TARGET_SH4) ||
> \
> defined(TARGET_XTENSA)
> diff --git a/linux-user/syscall_types.h b/linux-user/syscall_types.h
> index 820bc8e..4027272 100644
> --- a/linux-user/syscall_types.h
> +++ b/linux-user/syscall_types.h
> @@ -271,6 +271,15 @@ STRUCT(rtc_wkalrm,
> TYPE_CHAR, /* pending */
> MK_STRUCT(STRUCT_rtc_time)) /* time */
>
> +STRUCT(rtc_pll_info,
> + TYPE_INT, /* pll_ctrl */
> + TYPE_INT, /* pll_value */
> + TYPE_INT, /* pll_max */
> + TYPE_INT, /* pll_min */
> + TYPE_INT, /* pll_posmult */
> + TYPE_INT, /* pll_negmult */
> + TYPE_LONG) /* pll_clock */
> +
> STRUCT(blkpg_ioctl_arg,
> TYPE_INT, /* op */
> TYPE_INT, /* flags */
>
Reviewed-by: Laurent Vivier <address@hidden>
- Re: [PATCH 06/12] linux-user: Add support for read/clear RTC voltage low detector using ioctls, (continued)
- [PATCH 01/12] linux-user: Add support for enabling/disabling RTC features using ioctls, Filip Bozuta, 2020/01/09
- [PATCH 08/12] linux-user: Add support for setting alsa timer enhanced read using ioctl, Filip Bozuta, 2020/01/09
- [PATCH 09/12] linux-user: Add support for getting/setting specified alsa timer parameters using ioctls, Filip Bozuta, 2020/01/09
- [PATCH 10/12] linux-user: Add support for selecting alsa timer using ioctl, Filip Bozuta, 2020/01/09
- [PATCH 05/12] linux-user: Add support for getting/setting RTC PLL correction using ioctls, Filip Bozuta, 2020/01/09
- Re: [PATCH 05/12] linux-user: Add support for getting/setting RTC PLL correction using ioctls,
Laurent Vivier <=
- [PATCH 12/12] linux-user: Add support for selected alsa timer instructions using ioctls, Filip Bozuta, 2020/01/09
- [PATCH 11/12] linux-user: Add support for getting/setting selected alsa timer parameters using ioctls, Filip Bozuta, 2020/01/09
- Re: [PATCH 00/12] linux-user: Add support for real time clock and, Philippe Mathieu-Daudé, 2020/01/14
- [PATCH 00/12] linux-user: Add support for real time clock and, Filip Bozuta, 2020/01/15