On Tue, 17 Aug 2021 14:51:31 +0200, David Henningsson wrote: > > --- a/include/rawmidi.h > +++ b/include/rawmidi.h > @@ -79,6 +79,27 @@ typedef enum _snd_rawmidi_type { > SND_RAWMIDI_TYPE_VIRTUAL > } snd_rawmidi_type_t; > > +#define SND_RAWMIDI_CLOCK_NONE (0<<3) > +#define SND_RAWMIDI_CLOCK_REALTIME (1<<3) > +#define SND_RAWMIDI_CLOCK_MONOTONIC (2<<3) > +#define SND_RAWMIDI_CLOCK_MONOTONIC_RAW (3<<3) IMO, better to be like below: enum { SND_RAWMIDI_CLOCK_NONE = 0, SND_RAWMIDI_CLOCK_REALTIME = 1, SND_RAWMIDI_CLOCK_MONOTONIC = 2, SND_RAWMIDI_CLOCK_MONOTONIC_RAW = 3, }; The shift should be done in the function. The enum above can be also typedef'ed for the later reference. > +typedef struct _snd_rawmidi_framing_tstamp { > + /** > + * For now, frame_type is always 0. Midi 2.0 is expected to add new > + * types here. Applications are expected to skip unknown frame types. > + */ > + __u8 frame_type; The 0 frame type should be also defined explicitly, such as SNDRV_RAWMIDI_FRAME_TYPE_XXX. > +int snd_rawmidi_params_set_framing_type(const snd_rawmidi_t *rawmidi, snd_rawmidi_params_t *params, unsigned int val); You can define the enum type to be more specific, too. > +int snd_rawmidi_params_set_clock_type(const snd_rawmidi_t *rawmidi, snd_rawmidi_params_t *params, unsigned int val); Ditto. thanks, Takashi