diff --git a/libc/kernel/uapi/sound/asequencer.h b/libc/kernel/uapi/sound/asequencer.h
index d5a4cf6..fb58991 100644
--- a/libc/kernel/uapi/sound/asequencer.h
+++ b/libc/kernel/uapi/sound/asequencer.h
@@ -18,7 +18,7 @@
  ****************************************************************************/
 #ifndef _UAPI__SOUND_ASEQUENCER_H
 #define _UAPI__SOUND_ASEQUENCER_H
-#define SNDRV_SEQ_VERSION SNDRV_PROTOCOL_VERSION (1, 0, 1)
+#define SNDRV_SEQ_VERSION SNDRV_PROTOCOL_VERSION(1, 0, 1)
 #define SNDRV_SEQ_EVENT_SYSTEM 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SEQ_EVENT_RESULT 1
@@ -97,13 +97,13 @@
 typedef unsigned char snd_seq_event_type_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_seq_addr {
- unsigned char client;
- unsigned char port;
+  unsigned char client;
+  unsigned char port;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_seq_connect {
- struct snd_seq_addr sender;
- struct snd_seq_addr dest;
+  struct snd_seq_addr sender;
+  struct snd_seq_addr dest;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SEQ_ADDRESS_UNKNOWN 253
@@ -111,144 +111,144 @@
 #define SNDRV_SEQ_ADDRESS_BROADCAST 255
 #define SNDRV_SEQ_QUEUE_DIRECT 253
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_TIME_STAMP_TICK (0<<0)
-#define SNDRV_SEQ_TIME_STAMP_REAL (1<<0)
-#define SNDRV_SEQ_TIME_STAMP_MASK (1<<0)
-#define SNDRV_SEQ_TIME_MODE_ABS (0<<1)
+#define SNDRV_SEQ_TIME_STAMP_TICK (0 << 0)
+#define SNDRV_SEQ_TIME_STAMP_REAL (1 << 0)
+#define SNDRV_SEQ_TIME_STAMP_MASK (1 << 0)
+#define SNDRV_SEQ_TIME_MODE_ABS (0 << 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_TIME_MODE_REL (1<<1)
-#define SNDRV_SEQ_TIME_MODE_MASK (1<<1)
-#define SNDRV_SEQ_EVENT_LENGTH_FIXED (0<<2)
-#define SNDRV_SEQ_EVENT_LENGTH_VARIABLE (1<<2)
+#define SNDRV_SEQ_TIME_MODE_REL (1 << 1)
+#define SNDRV_SEQ_TIME_MODE_MASK (1 << 1)
+#define SNDRV_SEQ_EVENT_LENGTH_FIXED (0 << 2)
+#define SNDRV_SEQ_EVENT_LENGTH_VARIABLE (1 << 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_EVENT_LENGTH_VARUSR (2<<2)
-#define SNDRV_SEQ_EVENT_LENGTH_MASK (3<<2)
-#define SNDRV_SEQ_PRIORITY_NORMAL (0<<4)
-#define SNDRV_SEQ_PRIORITY_HIGH (1<<4)
+#define SNDRV_SEQ_EVENT_LENGTH_VARUSR (2 << 2)
+#define SNDRV_SEQ_EVENT_LENGTH_MASK (3 << 2)
+#define SNDRV_SEQ_PRIORITY_NORMAL (0 << 4)
+#define SNDRV_SEQ_PRIORITY_HIGH (1 << 4)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_PRIORITY_MASK (1<<4)
+#define SNDRV_SEQ_PRIORITY_MASK (1 << 4)
 struct snd_seq_ev_note {
- unsigned char channel;
- unsigned char note;
+  unsigned char channel;
+  unsigned char note;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char velocity;
- unsigned char off_velocity;
- unsigned int duration;
+  unsigned char velocity;
+  unsigned char off_velocity;
+  unsigned int duration;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_seq_ev_ctrl {
- unsigned char channel;
- unsigned char unused1, unused2, unused3;
- unsigned int param;
+  unsigned char channel;
+  unsigned char unused1, unused2, unused3;
+  unsigned int param;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- signed int value;
+  signed int value;
 };
 struct snd_seq_ev_raw8 {
- unsigned char d[12];
+  unsigned char d[12];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct snd_seq_ev_raw32 {
- unsigned int d[3];
+  unsigned int d[3];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_seq_ev_ext {
- unsigned int len;
- void *ptr;
+  unsigned int len;
+  void * ptr;
 } __attribute__((packed));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_seq_result {
- int event;
- int result;
+  int event;
+  int result;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_seq_real_time {
- unsigned int tv_sec;
- unsigned int tv_nsec;
+  unsigned int tv_sec;
+  unsigned int tv_nsec;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned int snd_seq_tick_time_t;
 union snd_seq_timestamp {
- snd_seq_tick_time_t tick;
- struct snd_seq_real_time time;
+  snd_seq_tick_time_t tick;
+  struct snd_seq_real_time time;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct snd_seq_queue_skew {
- unsigned int value;
- unsigned int base;
+  unsigned int value;
+  unsigned int base;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct snd_seq_ev_queue_control {
- unsigned char queue;
- unsigned char pad[3];
+  unsigned char queue;
+  unsigned char pad[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- signed int value;
- union snd_seq_timestamp time;
- unsigned int position;
+  union {
+    signed int value;
+    union snd_seq_timestamp time;
+    unsigned int position;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_seq_queue_skew skew;
- unsigned int d32[2];
- unsigned char d8[8];
- } param;
+    struct snd_seq_queue_skew skew;
+    unsigned int d32[2];
+    unsigned char d8[8];
+  } param;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct snd_seq_ev_quote {
- struct snd_seq_addr origin;
- unsigned short value;
+  struct snd_seq_addr origin;
+  unsigned short value;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_seq_event *event;
+  struct snd_seq_event * event;
 } __attribute__((packed));
 struct snd_seq_event {
- snd_seq_event_type_t type;
+  snd_seq_event_type_t type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char flags;
- char tag;
- unsigned char queue;
- union snd_seq_timestamp time;
+  unsigned char flags;
+  char tag;
+  unsigned char queue;
+  union snd_seq_timestamp time;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_seq_addr source;
- struct snd_seq_addr dest;
- union {
- struct snd_seq_ev_note note;
+  struct snd_seq_addr source;
+  struct snd_seq_addr dest;
+  union {
+    struct snd_seq_ev_note note;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_seq_ev_ctrl control;
- struct snd_seq_ev_raw8 raw8;
- struct snd_seq_ev_raw32 raw32;
- struct snd_seq_ev_ext ext;
+    struct snd_seq_ev_ctrl control;
+    struct snd_seq_ev_raw8 raw8;
+    struct snd_seq_ev_raw32 raw32;
+    struct snd_seq_ev_ext ext;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_seq_ev_queue_control queue;
- union snd_seq_timestamp time;
- struct snd_seq_addr addr;
- struct snd_seq_connect connect;
+    struct snd_seq_ev_queue_control queue;
+    union snd_seq_timestamp time;
+    struct snd_seq_addr addr;
+    struct snd_seq_connect connect;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_seq_result result;
- struct snd_seq_ev_quote quote;
- } data;
+    struct snd_seq_result result;
+    struct snd_seq_ev_quote quote;
+  } data;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_seq_event_bounce {
- int err;
- struct snd_seq_event event;
+  int err;
+  struct snd_seq_event event;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_seq_system_info {
- int queues;
- int clients;
- int ports;
+  int queues;
+  int clients;
+  int ports;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int channels;
- int cur_clients;
- int cur_queues;
- char reserved[24];
+  int channels;
+  int cur_clients;
+  int cur_queues;
+  char reserved[24];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct snd_seq_running_info {
- unsigned char client;
- unsigned char big_endian;
+  unsigned char client;
+  unsigned char big_endian;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char cpu_mode;
- unsigned char pad;
- unsigned char reserved[12];
+  unsigned char cpu_mode;
+  unsigned char pad;
+  unsigned char reserved[12];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SEQ_CLIENT_SYSTEM 0
@@ -259,146 +259,146 @@
 #define NO_CLIENT ((__force snd_seq_client_type_t) 0)
 #define USER_CLIENT ((__force snd_seq_client_type_t) 1)
 #define KERNEL_CLIENT ((__force snd_seq_client_type_t) 2)
-#define SNDRV_SEQ_FILTER_BROADCAST (1<<0)
+#define SNDRV_SEQ_FILTER_BROADCAST (1 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_FILTER_MULTICAST (1<<1)
-#define SNDRV_SEQ_FILTER_BOUNCE (1<<2)
-#define SNDRV_SEQ_FILTER_USE_EVENT (1<<31)
+#define SNDRV_SEQ_FILTER_MULTICAST (1 << 1)
+#define SNDRV_SEQ_FILTER_BOUNCE (1 << 2)
+#define SNDRV_SEQ_FILTER_USE_EVENT (1 << 31)
 struct snd_seq_client_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int client;
- snd_seq_client_type_t type;
- char name[64];
- unsigned int filter;
+  int client;
+  snd_seq_client_type_t type;
+  char name[64];
+  unsigned int filter;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char multicast_filter[8];
- unsigned char event_filter[32];
- int num_ports;
- int event_lost;
+  unsigned char multicast_filter[8];
+  unsigned char event_filter[32];
+  int num_ports;
+  int event_lost;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char reserved[64];
+  char reserved[64];
 };
 struct snd_seq_client_pool {
- int client;
+  int client;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int output_pool;
- int input_pool;
- int output_room;
- int output_free;
+  int output_pool;
+  int input_pool;
+  int output_room;
+  int output_free;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int input_free;
- char reserved[64];
+  int input_free;
+  char reserved[64];
 };
-#define SNDRV_SEQ_REMOVE_INPUT (1<<0)
+#define SNDRV_SEQ_REMOVE_INPUT (1 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_REMOVE_OUTPUT (1<<1)
-#define SNDRV_SEQ_REMOVE_DEST (1<<2)
-#define SNDRV_SEQ_REMOVE_DEST_CHANNEL (1<<3)
-#define SNDRV_SEQ_REMOVE_TIME_BEFORE (1<<4)
+#define SNDRV_SEQ_REMOVE_OUTPUT (1 << 1)
+#define SNDRV_SEQ_REMOVE_DEST (1 << 2)
+#define SNDRV_SEQ_REMOVE_DEST_CHANNEL (1 << 3)
+#define SNDRV_SEQ_REMOVE_TIME_BEFORE (1 << 4)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_REMOVE_TIME_AFTER (1<<5)
-#define SNDRV_SEQ_REMOVE_TIME_TICK (1<<6)
-#define SNDRV_SEQ_REMOVE_EVENT_TYPE (1<<7)
-#define SNDRV_SEQ_REMOVE_IGNORE_OFF (1<<8)
+#define SNDRV_SEQ_REMOVE_TIME_AFTER (1 << 5)
+#define SNDRV_SEQ_REMOVE_TIME_TICK (1 << 6)
+#define SNDRV_SEQ_REMOVE_EVENT_TYPE (1 << 7)
+#define SNDRV_SEQ_REMOVE_IGNORE_OFF (1 << 8)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_REMOVE_TAG_MATCH (1<<9)
+#define SNDRV_SEQ_REMOVE_TAG_MATCH (1 << 9)
 struct snd_seq_remove_events {
- unsigned int remove_mode;
- union snd_seq_timestamp time;
+  unsigned int remove_mode;
+  union snd_seq_timestamp time;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char queue;
- struct snd_seq_addr dest;
- unsigned char channel;
- int type;
+  unsigned char queue;
+  struct snd_seq_addr dest;
+  unsigned char channel;
+  int type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char tag;
- int reserved[10];
+  char tag;
+  int reserved[10];
 };
 #define SNDRV_SEQ_PORT_SYSTEM_TIMER 0
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SEQ_PORT_SYSTEM_ANNOUNCE 1
-#define SNDRV_SEQ_PORT_CAP_READ (1<<0)
-#define SNDRV_SEQ_PORT_CAP_WRITE (1<<1)
-#define SNDRV_SEQ_PORT_CAP_SYNC_READ (1<<2)
+#define SNDRV_SEQ_PORT_CAP_READ (1 << 0)
+#define SNDRV_SEQ_PORT_CAP_WRITE (1 << 1)
+#define SNDRV_SEQ_PORT_CAP_SYNC_READ (1 << 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_PORT_CAP_SYNC_WRITE (1<<3)
-#define SNDRV_SEQ_PORT_CAP_DUPLEX (1<<4)
-#define SNDRV_SEQ_PORT_CAP_SUBS_READ (1<<5)
-#define SNDRV_SEQ_PORT_CAP_SUBS_WRITE (1<<6)
+#define SNDRV_SEQ_PORT_CAP_SYNC_WRITE (1 << 3)
+#define SNDRV_SEQ_PORT_CAP_DUPLEX (1 << 4)
+#define SNDRV_SEQ_PORT_CAP_SUBS_READ (1 << 5)
+#define SNDRV_SEQ_PORT_CAP_SUBS_WRITE (1 << 6)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_PORT_CAP_NO_EXPORT (1<<7)
-#define SNDRV_SEQ_PORT_TYPE_SPECIFIC (1<<0)
-#define SNDRV_SEQ_PORT_TYPE_MIDI_GENERIC (1<<1)
-#define SNDRV_SEQ_PORT_TYPE_MIDI_GM (1<<2)
+#define SNDRV_SEQ_PORT_CAP_NO_EXPORT (1 << 7)
+#define SNDRV_SEQ_PORT_TYPE_SPECIFIC (1 << 0)
+#define SNDRV_SEQ_PORT_TYPE_MIDI_GENERIC (1 << 1)
+#define SNDRV_SEQ_PORT_TYPE_MIDI_GM (1 << 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_PORT_TYPE_MIDI_GS (1<<3)
-#define SNDRV_SEQ_PORT_TYPE_MIDI_XG (1<<4)
-#define SNDRV_SEQ_PORT_TYPE_MIDI_MT32 (1<<5)
-#define SNDRV_SEQ_PORT_TYPE_MIDI_GM2 (1<<6)
+#define SNDRV_SEQ_PORT_TYPE_MIDI_GS (1 << 3)
+#define SNDRV_SEQ_PORT_TYPE_MIDI_XG (1 << 4)
+#define SNDRV_SEQ_PORT_TYPE_MIDI_MT32 (1 << 5)
+#define SNDRV_SEQ_PORT_TYPE_MIDI_GM2 (1 << 6)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_PORT_TYPE_SYNTH (1<<10)
-#define SNDRV_SEQ_PORT_TYPE_DIRECT_SAMPLE (1<<11)
-#define SNDRV_SEQ_PORT_TYPE_SAMPLE (1<<12)
-#define SNDRV_SEQ_PORT_TYPE_HARDWARE (1<<16)
+#define SNDRV_SEQ_PORT_TYPE_SYNTH (1 << 10)
+#define SNDRV_SEQ_PORT_TYPE_DIRECT_SAMPLE (1 << 11)
+#define SNDRV_SEQ_PORT_TYPE_SAMPLE (1 << 12)
+#define SNDRV_SEQ_PORT_TYPE_HARDWARE (1 << 16)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_PORT_TYPE_SOFTWARE (1<<17)
-#define SNDRV_SEQ_PORT_TYPE_SYNTHESIZER (1<<18)
-#define SNDRV_SEQ_PORT_TYPE_PORT (1<<19)
-#define SNDRV_SEQ_PORT_TYPE_APPLICATION (1<<20)
+#define SNDRV_SEQ_PORT_TYPE_SOFTWARE (1 << 17)
+#define SNDRV_SEQ_PORT_TYPE_SYNTHESIZER (1 << 18)
+#define SNDRV_SEQ_PORT_TYPE_PORT (1 << 19)
+#define SNDRV_SEQ_PORT_TYPE_APPLICATION (1 << 20)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_PORT_FLG_GIVEN_PORT (1<<0)
-#define SNDRV_SEQ_PORT_FLG_TIMESTAMP (1<<1)
-#define SNDRV_SEQ_PORT_FLG_TIME_REAL (1<<2)
+#define SNDRV_SEQ_PORT_FLG_GIVEN_PORT (1 << 0)
+#define SNDRV_SEQ_PORT_FLG_TIMESTAMP (1 << 1)
+#define SNDRV_SEQ_PORT_FLG_TIME_REAL (1 << 2)
 struct snd_seq_port_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_seq_addr addr;
- char name[64];
- unsigned int capability;
- unsigned int type;
+  struct snd_seq_addr addr;
+  char name[64];
+  unsigned int capability;
+  unsigned int type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int midi_channels;
- int midi_voices;
- int synth_voices;
- int read_use;
+  int midi_channels;
+  int midi_voices;
+  int synth_voices;
+  int read_use;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int write_use;
- void *kernel;
- unsigned int flags;
- unsigned char time_queue;
+  int write_use;
+  void * kernel;
+  unsigned int flags;
+  unsigned char time_queue;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char reserved[59];
+  char reserved[59];
 };
-#define SNDRV_SEQ_QUEUE_FLG_SYNC (1<<0)
+#define SNDRV_SEQ_QUEUE_FLG_SYNC (1 << 0)
 struct snd_seq_queue_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int queue;
- int owner;
- unsigned locked:1;
- char name[64];
+  int queue;
+  int owner;
+  unsigned locked : 1;
+  char name[64];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int flags;
- char reserved[60];
+  unsigned int flags;
+  char reserved[60];
 };
 struct snd_seq_queue_status {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int queue;
- int events;
- snd_seq_tick_time_t tick;
- struct snd_seq_real_time time;
+  int queue;
+  int events;
+  snd_seq_tick_time_t tick;
+  struct snd_seq_real_time time;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int running;
- int flags;
- char reserved[64];
+  int running;
+  int flags;
+  char reserved[64];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_seq_queue_tempo {
- int queue;
- unsigned int tempo;
- int ppq;
+  int queue;
+  unsigned int tempo;
+  int ppq;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int skew_value;
- unsigned int skew_base;
- char reserved[24];
+  unsigned int skew_value;
+  unsigned int skew_base;
+  char reserved[24];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SEQ_TIMER_ALSA 0
@@ -406,92 +406,92 @@
 #define SNDRV_SEQ_TIMER_MIDI_TICK 2
 struct snd_seq_queue_timer {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int queue;
- int type;
- union {
- struct {
+  int queue;
+  int type;
+  union {
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_timer_id id;
- unsigned int resolution;
- } alsa;
- } u;
+      struct snd_timer_id id;
+      unsigned int resolution;
+    } alsa;
+  } u;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char reserved[64];
+  char reserved[64];
 };
 struct snd_seq_queue_client {
- int queue;
+  int queue;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int client;
- int used;
- char reserved[64];
+  int client;
+  int used;
+  char reserved[64];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_PORT_SUBS_EXCLUSIVE (1<<0)
-#define SNDRV_SEQ_PORT_SUBS_TIMESTAMP (1<<1)
-#define SNDRV_SEQ_PORT_SUBS_TIME_REAL (1<<2)
+#define SNDRV_SEQ_PORT_SUBS_EXCLUSIVE (1 << 0)
+#define SNDRV_SEQ_PORT_SUBS_TIMESTAMP (1 << 1)
+#define SNDRV_SEQ_PORT_SUBS_TIME_REAL (1 << 2)
 struct snd_seq_port_subscribe {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_seq_addr sender;
- struct snd_seq_addr dest;
- unsigned int voices;
- unsigned int flags;
+  struct snd_seq_addr sender;
+  struct snd_seq_addr dest;
+  unsigned int voices;
+  unsigned int flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char queue;
- unsigned char pad[3];
- char reserved[64];
+  unsigned char queue;
+  unsigned char pad[3];
+  char reserved[64];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SEQ_QUERY_SUBS_READ 0
 #define SNDRV_SEQ_QUERY_SUBS_WRITE 1
 struct snd_seq_query_subs {
- struct snd_seq_addr root;
+  struct snd_seq_addr root;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int type;
- int index;
- int num_subs;
- struct snd_seq_addr addr;
+  int type;
+  int index;
+  int num_subs;
+  struct snd_seq_addr addr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char queue;
- unsigned int flags;
- char reserved[64];
+  unsigned char queue;
+  unsigned int flags;
+  char reserved[64];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_IOCTL_PVERSION _IOR ('S', 0x00, int)
-#define SNDRV_SEQ_IOCTL_CLIENT_ID _IOR ('S', 0x01, int)
+#define SNDRV_SEQ_IOCTL_PVERSION _IOR('S', 0x00, int)
+#define SNDRV_SEQ_IOCTL_CLIENT_ID _IOR('S', 0x01, int)
 #define SNDRV_SEQ_IOCTL_SYSTEM_INFO _IOWR('S', 0x02, struct snd_seq_system_info)
 #define SNDRV_SEQ_IOCTL_RUNNING_MODE _IOWR('S', 0x03, struct snd_seq_running_info)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SEQ_IOCTL_GET_CLIENT_INFO _IOWR('S', 0x10, struct snd_seq_client_info)
-#define SNDRV_SEQ_IOCTL_SET_CLIENT_INFO _IOW ('S', 0x11, struct snd_seq_client_info)
+#define SNDRV_SEQ_IOCTL_SET_CLIENT_INFO _IOW('S', 0x11, struct snd_seq_client_info)
 #define SNDRV_SEQ_IOCTL_CREATE_PORT _IOWR('S', 0x20, struct snd_seq_port_info)
-#define SNDRV_SEQ_IOCTL_DELETE_PORT _IOW ('S', 0x21, struct snd_seq_port_info)
+#define SNDRV_SEQ_IOCTL_DELETE_PORT _IOW('S', 0x21, struct snd_seq_port_info)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SEQ_IOCTL_GET_PORT_INFO _IOWR('S', 0x22, struct snd_seq_port_info)
-#define SNDRV_SEQ_IOCTL_SET_PORT_INFO _IOW ('S', 0x23, struct snd_seq_port_info)
-#define SNDRV_SEQ_IOCTL_SUBSCRIBE_PORT _IOW ('S', 0x30, struct snd_seq_port_subscribe)
-#define SNDRV_SEQ_IOCTL_UNSUBSCRIBE_PORT _IOW ('S', 0x31, struct snd_seq_port_subscribe)
+#define SNDRV_SEQ_IOCTL_SET_PORT_INFO _IOW('S', 0x23, struct snd_seq_port_info)
+#define SNDRV_SEQ_IOCTL_SUBSCRIBE_PORT _IOW('S', 0x30, struct snd_seq_port_subscribe)
+#define SNDRV_SEQ_IOCTL_UNSUBSCRIBE_PORT _IOW('S', 0x31, struct snd_seq_port_subscribe)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SEQ_IOCTL_CREATE_QUEUE _IOWR('S', 0x32, struct snd_seq_queue_info)
-#define SNDRV_SEQ_IOCTL_DELETE_QUEUE _IOW ('S', 0x33, struct snd_seq_queue_info)
+#define SNDRV_SEQ_IOCTL_DELETE_QUEUE _IOW('S', 0x33, struct snd_seq_queue_info)
 #define SNDRV_SEQ_IOCTL_GET_QUEUE_INFO _IOWR('S', 0x34, struct snd_seq_queue_info)
 #define SNDRV_SEQ_IOCTL_SET_QUEUE_INFO _IOWR('S', 0x35, struct snd_seq_queue_info)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SEQ_IOCTL_GET_NAMED_QUEUE _IOWR('S', 0x36, struct snd_seq_queue_info)
 #define SNDRV_SEQ_IOCTL_GET_QUEUE_STATUS _IOWR('S', 0x40, struct snd_seq_queue_status)
 #define SNDRV_SEQ_IOCTL_GET_QUEUE_TEMPO _IOWR('S', 0x41, struct snd_seq_queue_tempo)
-#define SNDRV_SEQ_IOCTL_SET_QUEUE_TEMPO _IOW ('S', 0x42, struct snd_seq_queue_tempo)
+#define SNDRV_SEQ_IOCTL_SET_QUEUE_TEMPO _IOW('S', 0x42, struct snd_seq_queue_tempo)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SEQ_IOCTL_GET_QUEUE_OWNER _IOWR('S', 0x43, struct snd_seq_queue_owner)
-#define SNDRV_SEQ_IOCTL_SET_QUEUE_OWNER _IOW ('S', 0x44, struct snd_seq_queue_owner)
+#define SNDRV_SEQ_IOCTL_SET_QUEUE_OWNER _IOW('S', 0x44, struct snd_seq_queue_owner)
 #define SNDRV_SEQ_IOCTL_GET_QUEUE_TIMER _IOWR('S', 0x45, struct snd_seq_queue_timer)
-#define SNDRV_SEQ_IOCTL_SET_QUEUE_TIMER _IOW ('S', 0x46, struct snd_seq_queue_timer)
+#define SNDRV_SEQ_IOCTL_SET_QUEUE_TIMER _IOW('S', 0x46, struct snd_seq_queue_timer)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SEQ_IOCTL_GET_QUEUE_CLIENT _IOWR('S', 0x49, struct snd_seq_queue_client)
-#define SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT _IOW ('S', 0x4a, struct snd_seq_queue_client)
+#define SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT _IOW('S', 0x4a, struct snd_seq_queue_client)
 #define SNDRV_SEQ_IOCTL_GET_CLIENT_POOL _IOWR('S', 0x4b, struct snd_seq_client_pool)
-#define SNDRV_SEQ_IOCTL_SET_CLIENT_POOL _IOW ('S', 0x4c, struct snd_seq_client_pool)
+#define SNDRV_SEQ_IOCTL_SET_CLIENT_POOL _IOW('S', 0x4c, struct snd_seq_client_pool)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_SEQ_IOCTL_REMOVE_EVENTS _IOW ('S', 0x4e, struct snd_seq_remove_events)
+#define SNDRV_SEQ_IOCTL_REMOVE_EVENTS _IOW('S', 0x4e, struct snd_seq_remove_events)
 #define SNDRV_SEQ_IOCTL_QUERY_SUBS _IOWR('S', 0x4f, struct snd_seq_query_subs)
 #define SNDRV_SEQ_IOCTL_GET_SUBSCRIPTION _IOWR('S', 0x50, struct snd_seq_port_subscribe)
 #define SNDRV_SEQ_IOCTL_QUERY_NEXT_CLIENT _IOWR('S', 0x51, struct snd_seq_client_info)
diff --git a/libc/kernel/uapi/sound/asound.h b/libc/kernel/uapi/sound/asound.h
index f443bd0..1419fe8 100644
--- a/libc/kernel/uapi/sound/asound.h
+++ b/libc/kernel/uapi/sound/asound.h
@@ -19,91 +19,91 @@
 #ifndef _UAPI__SOUND_ASOUND_H
 #define _UAPI__SOUND_ASOUND_H
 #include <linux/types.h>
-#define SNDRV_PROTOCOL_VERSION(major, minor, subminor) (((major)<<16)|((minor)<<8)|(subminor))
+#define SNDRV_PROTOCOL_VERSION(major,minor,subminor) (((major) << 16) | ((minor) << 8) | (subminor))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_PROTOCOL_MAJOR(version) (((version)>>16)&0xffff)
-#define SNDRV_PROTOCOL_MINOR(version) (((version)>>8)&0xff)
-#define SNDRV_PROTOCOL_MICRO(version) ((version)&0xff)
-#define SNDRV_PROTOCOL_INCOMPATIBLE(kversion, uversion)   (SNDRV_PROTOCOL_MAJOR(kversion) != SNDRV_PROTOCOL_MAJOR(uversion) ||   (SNDRV_PROTOCOL_MAJOR(kversion) == SNDRV_PROTOCOL_MAJOR(uversion) &&   SNDRV_PROTOCOL_MINOR(kversion) != SNDRV_PROTOCOL_MINOR(uversion)))
+#define SNDRV_PROTOCOL_MAJOR(version) (((version) >> 16) & 0xffff)
+#define SNDRV_PROTOCOL_MINOR(version) (((version) >> 8) & 0xff)
+#define SNDRV_PROTOCOL_MICRO(version) ((version) & 0xff)
+#define SNDRV_PROTOCOL_INCOMPATIBLE(kversion,uversion) (SNDRV_PROTOCOL_MAJOR(kversion) != SNDRV_PROTOCOL_MAJOR(uversion) || (SNDRV_PROTOCOL_MAJOR(kversion) == SNDRV_PROTOCOL_MAJOR(uversion) && SNDRV_PROTOCOL_MINOR(kversion) != SNDRV_PROTOCOL_MINOR(uversion)))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_aes_iec958 {
- unsigned char status[24];
- unsigned char subcode[147];
- unsigned char pad;
+  unsigned char status[24];
+  unsigned char subcode[147];
+  unsigned char pad;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char dig_subframe[4];
+  unsigned char dig_subframe[4];
 };
 struct snd_cea_861_aud_if {
- unsigned char db1_ct_cc;
+  unsigned char db1_ct_cc;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char db2_sf_ss;
- unsigned char db3;
- unsigned char db4_ca;
- unsigned char db5_dminh_lsv;
+  unsigned char db2_sf_ss;
+  unsigned char db3;
+  unsigned char db4_ca;
+  unsigned char db5_dminh_lsv;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define SNDRV_HWDEP_VERSION SNDRV_PROTOCOL_VERSION(1, 0, 1)
 enum {
- SNDRV_HWDEP_IFACE_OPL2 = 0,
+  SNDRV_HWDEP_IFACE_OPL2 = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_HWDEP_IFACE_OPL3,
- SNDRV_HWDEP_IFACE_OPL4,
- SNDRV_HWDEP_IFACE_SB16CSP,
- SNDRV_HWDEP_IFACE_EMU10K1,
+  SNDRV_HWDEP_IFACE_OPL3,
+  SNDRV_HWDEP_IFACE_OPL4,
+  SNDRV_HWDEP_IFACE_SB16CSP,
+  SNDRV_HWDEP_IFACE_EMU10K1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_HWDEP_IFACE_YSS225,
- SNDRV_HWDEP_IFACE_ICS2115,
- SNDRV_HWDEP_IFACE_SSCAPE,
- SNDRV_HWDEP_IFACE_VX,
+  SNDRV_HWDEP_IFACE_YSS225,
+  SNDRV_HWDEP_IFACE_ICS2115,
+  SNDRV_HWDEP_IFACE_SSCAPE,
+  SNDRV_HWDEP_IFACE_VX,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_HWDEP_IFACE_MIXART,
- SNDRV_HWDEP_IFACE_USX2Y,
- SNDRV_HWDEP_IFACE_EMUX_WAVETABLE,
- SNDRV_HWDEP_IFACE_BLUETOOTH,
+  SNDRV_HWDEP_IFACE_MIXART,
+  SNDRV_HWDEP_IFACE_USX2Y,
+  SNDRV_HWDEP_IFACE_EMUX_WAVETABLE,
+  SNDRV_HWDEP_IFACE_BLUETOOTH,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_HWDEP_IFACE_USX2Y_PCM,
- SNDRV_HWDEP_IFACE_PCXHR,
- SNDRV_HWDEP_IFACE_SB_RC,
- SNDRV_HWDEP_IFACE_HDA,
+  SNDRV_HWDEP_IFACE_USX2Y_PCM,
+  SNDRV_HWDEP_IFACE_PCXHR,
+  SNDRV_HWDEP_IFACE_SB_RC,
+  SNDRV_HWDEP_IFACE_HDA,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_HWDEP_IFACE_USB_STREAM,
- SNDRV_HWDEP_IFACE_FW_DICE,
- SNDRV_HWDEP_IFACE_FW_FIREWORKS,
- SNDRV_HWDEP_IFACE_FW_BEBOB,
+  SNDRV_HWDEP_IFACE_USB_STREAM,
+  SNDRV_HWDEP_IFACE_FW_DICE,
+  SNDRV_HWDEP_IFACE_FW_FIREWORKS,
+  SNDRV_HWDEP_IFACE_FW_BEBOB,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_HWDEP_IFACE_LAST = SNDRV_HWDEP_IFACE_FW_BEBOB
+  SNDRV_HWDEP_IFACE_LAST = SNDRV_HWDEP_IFACE_FW_BEBOB
 };
 struct snd_hwdep_info {
- unsigned int device;
+  unsigned int device;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int card;
- unsigned char id[64];
- unsigned char name[80];
- int iface;
+  int card;
+  unsigned char id[64];
+  unsigned char name[80];
+  int iface;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char reserved[64];
+  unsigned char reserved[64];
 };
 struct snd_hwdep_dsp_status {
- unsigned int version;
+  unsigned int version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char id[32];
- unsigned int num_dsps;
- unsigned int dsp_loaded;
- unsigned int chip_ready;
+  unsigned char id[32];
+  unsigned int num_dsps;
+  unsigned int dsp_loaded;
+  unsigned int chip_ready;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char reserved[16];
+  unsigned char reserved[16];
 };
 struct snd_hwdep_dsp_image {
- unsigned int index;
+  unsigned int index;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char name[64];
- unsigned char __user *image;
- size_t length;
- unsigned long driver_data;
+  unsigned char name[64];
+  unsigned char __user * image;
+  size_t length;
+  unsigned long driver_data;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define SNDRV_HWDEP_IOCTL_PVERSION _IOR ('H', 0x00, int)
-#define SNDRV_HWDEP_IOCTL_INFO _IOR ('H', 0x01, struct snd_hwdep_info)
+#define SNDRV_HWDEP_IOCTL_PVERSION _IOR('H', 0x00, int)
+#define SNDRV_HWDEP_IOCTL_INFO _IOR('H', 0x01, struct snd_hwdep_info)
 #define SNDRV_HWDEP_IOCTL_DSP_STATUS _IOR('H', 0x02, struct snd_hwdep_dsp_status)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_HWDEP_IOCTL_DSP_LOAD _IOW('H', 0x03, struct snd_hwdep_dsp_image)
@@ -112,24 +112,24 @@
 typedef signed long snd_pcm_sframes_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- SNDRV_PCM_CLASS_GENERIC = 0,
- SNDRV_PCM_CLASS_MULTI,
- SNDRV_PCM_CLASS_MODEM,
+  SNDRV_PCM_CLASS_GENERIC = 0,
+  SNDRV_PCM_CLASS_MULTI,
+  SNDRV_PCM_CLASS_MODEM,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_PCM_CLASS_DIGITIZER,
- SNDRV_PCM_CLASS_LAST = SNDRV_PCM_CLASS_DIGITIZER,
+  SNDRV_PCM_CLASS_DIGITIZER,
+  SNDRV_PCM_CLASS_LAST = SNDRV_PCM_CLASS_DIGITIZER,
 };
 enum {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_PCM_SUBCLASS_GENERIC_MIX = 0,
- SNDRV_PCM_SUBCLASS_MULTI_MIX,
- SNDRV_PCM_SUBCLASS_LAST = SNDRV_PCM_SUBCLASS_MULTI_MIX,
+  SNDRV_PCM_SUBCLASS_GENERIC_MIX = 0,
+  SNDRV_PCM_SUBCLASS_MULTI_MIX,
+  SNDRV_PCM_SUBCLASS_LAST = SNDRV_PCM_SUBCLASS_MULTI_MIX,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- SNDRV_PCM_STREAM_PLAYBACK = 0,
- SNDRV_PCM_STREAM_CAPTURE,
- SNDRV_PCM_STREAM_LAST = SNDRV_PCM_STREAM_CAPTURE,
+  SNDRV_PCM_STREAM_PLAYBACK = 0,
+  SNDRV_PCM_STREAM_CAPTURE,
+  SNDRV_PCM_STREAM_LAST = SNDRV_PCM_STREAM_CAPTURE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 typedef int __bitwise snd_pcm_access_t;
@@ -269,35 +269,35 @@
 #define SNDRV_PCM_STATE_DISCONNECTED ((__force snd_pcm_state_t) 8)
 #define SNDRV_PCM_STATE_LAST SNDRV_PCM_STATE_DISCONNECTED
 enum {
- SNDRV_PCM_MMAP_OFFSET_DATA = 0x00000000,
+  SNDRV_PCM_MMAP_OFFSET_DATA = 0x00000000,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_PCM_MMAP_OFFSET_STATUS = 0x80000000,
- SNDRV_PCM_MMAP_OFFSET_CONTROL = 0x81000000,
+  SNDRV_PCM_MMAP_OFFSET_STATUS = 0x80000000,
+  SNDRV_PCM_MMAP_OFFSET_CONTROL = 0x81000000,
 };
 union snd_pcm_sync_id {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char id[16];
- unsigned short id16[8];
- unsigned int id32[4];
+  unsigned char id[16];
+  unsigned short id16[8];
+  unsigned int id32[4];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_pcm_info {
- unsigned int device;
- unsigned int subdevice;
- int stream;
+  unsigned int device;
+  unsigned int subdevice;
+  int stream;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int card;
- unsigned char id[64];
- unsigned char name[80];
- unsigned char subname[32];
+  int card;
+  unsigned char id[64];
+  unsigned char name[80];
+  unsigned char subname[32];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int dev_class;
- int dev_subclass;
- unsigned int subdevices_count;
- unsigned int subdevices_avail;
+  int dev_class;
+  int dev_subclass;
+  unsigned int subdevices_count;
+  unsigned int subdevices_avail;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union snd_pcm_sync_id sync;
- unsigned char reserved[64];
+  union snd_pcm_sync_id sync;
+  unsigned char reserved[64];
 };
 typedef int snd_pcm_hw_param_t;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -324,678 +324,672 @@
 #define SNDRV_PCM_HW_PARAM_TICK_TIME 19
 #define SNDRV_PCM_HW_PARAM_FIRST_INTERVAL SNDRV_PCM_HW_PARAM_SAMPLE_BITS
 #define SNDRV_PCM_HW_PARAM_LAST_INTERVAL SNDRV_PCM_HW_PARAM_TICK_TIME
-#define SNDRV_PCM_HW_PARAMS_NORESAMPLE (1<<0)
+#define SNDRV_PCM_HW_PARAMS_NORESAMPLE (1 << 0)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_PCM_HW_PARAMS_EXPORT_BUFFER (1<<1)
-#define SNDRV_PCM_HW_PARAMS_NO_PERIOD_WAKEUP (1<<2)
+#define SNDRV_PCM_HW_PARAMS_EXPORT_BUFFER (1 << 1)
+#define SNDRV_PCM_HW_PARAMS_NO_PERIOD_WAKEUP (1 << 2)
 struct snd_interval {
- unsigned int min, max;
+  unsigned int min, max;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int openmin:1,
- openmax:1,
- integer:1,
- empty:1;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned int openmin : 1, openmax : 1, integer : 1, empty : 1;
 };
 #define SNDRV_MASK_MAX 256
 struct snd_mask {
- __u32 bits[(SNDRV_MASK_MAX+31)/32];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 bits[(SNDRV_MASK_MAX + 31) / 32];
 };
 struct snd_pcm_hw_params {
- unsigned int flags;
- struct snd_mask masks[SNDRV_PCM_HW_PARAM_LAST_MASK -
+  unsigned int flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_PCM_HW_PARAM_FIRST_MASK + 1];
- struct snd_mask mres[5];
- struct snd_interval intervals[SNDRV_PCM_HW_PARAM_LAST_INTERVAL -
- SNDRV_PCM_HW_PARAM_FIRST_INTERVAL + 1];
+  struct snd_mask masks[SNDRV_PCM_HW_PARAM_LAST_MASK - SNDRV_PCM_HW_PARAM_FIRST_MASK + 1];
+  struct snd_mask mres[5];
+  struct snd_interval intervals[SNDRV_PCM_HW_PARAM_LAST_INTERVAL - SNDRV_PCM_HW_PARAM_FIRST_INTERVAL + 1];
+  struct snd_interval ires[9];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_interval ires[9];
- unsigned int rmask;
- unsigned int cmask;
- unsigned int info;
+  unsigned int rmask;
+  unsigned int cmask;
+  unsigned int info;
+  unsigned int msbits;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int msbits;
- unsigned int rate_num;
- unsigned int rate_den;
- snd_pcm_uframes_t fifo_size;
+  unsigned int rate_num;
+  unsigned int rate_den;
+  snd_pcm_uframes_t fifo_size;
+  unsigned char reserved[64];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char reserved[64];
 };
 enum {
- SNDRV_PCM_TSTAMP_NONE = 0,
+  SNDRV_PCM_TSTAMP_NONE = 0,
+  SNDRV_PCM_TSTAMP_ENABLE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_PCM_TSTAMP_ENABLE,
- SNDRV_PCM_TSTAMP_LAST = SNDRV_PCM_TSTAMP_ENABLE,
+  SNDRV_PCM_TSTAMP_LAST = SNDRV_PCM_TSTAMP_ENABLE,
 };
 struct snd_pcm_sw_params {
+  int tstamp_mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int tstamp_mode;
- unsigned int period_step;
- unsigned int sleep_min;
- snd_pcm_uframes_t avail_min;
+  unsigned int period_step;
+  unsigned int sleep_min;
+  snd_pcm_uframes_t avail_min;
+  snd_pcm_uframes_t xfer_align;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- snd_pcm_uframes_t xfer_align;
- snd_pcm_uframes_t start_threshold;
- snd_pcm_uframes_t stop_threshold;
- snd_pcm_uframes_t silence_threshold;
+  snd_pcm_uframes_t start_threshold;
+  snd_pcm_uframes_t stop_threshold;
+  snd_pcm_uframes_t silence_threshold;
+  snd_pcm_uframes_t silence_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- snd_pcm_uframes_t silence_size;
- snd_pcm_uframes_t boundary;
- unsigned int proto;
- unsigned int tstamp_type;
+  snd_pcm_uframes_t boundary;
+  unsigned int proto;
+  unsigned int tstamp_type;
+  unsigned char reserved[56];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char reserved[56];
 };
 struct snd_pcm_channel_info {
- unsigned int channel;
+  unsigned int channel;
+  __kernel_off_t offset;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __kernel_off_t offset;
- unsigned int first;
- unsigned int step;
+  unsigned int first;
+  unsigned int step;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_pcm_status {
- snd_pcm_state_t state;
- struct timespec trigger_tstamp;
- struct timespec tstamp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- snd_pcm_uframes_t appl_ptr;
- snd_pcm_uframes_t hw_ptr;
- snd_pcm_sframes_t delay;
- snd_pcm_uframes_t avail;
+  snd_pcm_state_t state;
+  struct timespec trigger_tstamp;
+  struct timespec tstamp;
+  snd_pcm_uframes_t appl_ptr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- snd_pcm_uframes_t avail_max;
- snd_pcm_uframes_t overrange;
- snd_pcm_state_t suspended_state;
- __u32 reserved_alignment;
+  snd_pcm_uframes_t hw_ptr;
+  snd_pcm_sframes_t delay;
+  snd_pcm_uframes_t avail;
+  snd_pcm_uframes_t avail_max;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct timespec audio_tstamp;
- unsigned char reserved[56-sizeof(struct timespec)];
+  snd_pcm_uframes_t overrange;
+  snd_pcm_state_t suspended_state;
+  __u32 reserved_alignment;
+  struct timespec audio_tstamp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned char reserved[56 - sizeof(struct timespec)];
 };
 struct snd_pcm_mmap_status {
+  snd_pcm_state_t state;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- snd_pcm_state_t state;
- int pad1;
- snd_pcm_uframes_t hw_ptr;
- struct timespec tstamp;
+  int pad1;
+  snd_pcm_uframes_t hw_ptr;
+  struct timespec tstamp;
+  snd_pcm_state_t suspended_state;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- snd_pcm_state_t suspended_state;
- struct timespec audio_tstamp;
+  struct timespec audio_tstamp;
 };
 struct snd_pcm_mmap_control {
+  snd_pcm_uframes_t appl_ptr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- snd_pcm_uframes_t appl_ptr;
- snd_pcm_uframes_t avail_min;
+  snd_pcm_uframes_t avail_min;
 };
-#define SNDRV_PCM_SYNC_PTR_HWSYNC (1<<0)
+#define SNDRV_PCM_SYNC_PTR_HWSYNC (1 << 0)
+#define SNDRV_PCM_SYNC_PTR_APPL (1 << 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_PCM_SYNC_PTR_APPL (1<<1)
-#define SNDRV_PCM_SYNC_PTR_AVAIL_MIN (1<<2)
+#define SNDRV_PCM_SYNC_PTR_AVAIL_MIN (1 << 2)
 struct snd_pcm_sync_ptr {
- unsigned int flags;
+  unsigned int flags;
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- struct snd_pcm_mmap_status status;
- unsigned char reserved[64];
- } s;
+    struct snd_pcm_mmap_status status;
+    unsigned char reserved[64];
+  } s;
+  union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- struct snd_pcm_mmap_control control;
- unsigned char reserved[64];
- } c;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    struct snd_pcm_mmap_control control;
+    unsigned char reserved[64];
+  } c;
 };
-struct snd_xferi {
- snd_pcm_sframes_t result;
- void __user *buf;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- snd_pcm_uframes_t frames;
+struct snd_xferi {
+  snd_pcm_sframes_t result;
+  void __user * buf;
+  snd_pcm_uframes_t frames;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct snd_xfern {
- snd_pcm_sframes_t result;
+  snd_pcm_sframes_t result;
+  void __user * __user * bufs;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- void __user * __user *bufs;
- snd_pcm_uframes_t frames;
+  snd_pcm_uframes_t frames;
 };
 enum {
+  SNDRV_PCM_TSTAMP_TYPE_GETTIMEOFDAY = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_PCM_TSTAMP_TYPE_GETTIMEOFDAY = 0,
- SNDRV_PCM_TSTAMP_TYPE_MONOTONIC,
- SNDRV_PCM_TSTAMP_TYPE_MONOTONIC_RAW,
- SNDRV_PCM_TSTAMP_TYPE_LAST = SNDRV_PCM_TSTAMP_TYPE_MONOTONIC_RAW,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SNDRV_PCM_TSTAMP_TYPE_MONOTONIC,
+  SNDRV_PCM_TSTAMP_TYPE_MONOTONIC_RAW,
+  SNDRV_PCM_TSTAMP_TYPE_LAST = SNDRV_PCM_TSTAMP_TYPE_MONOTONIC_RAW,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- SNDRV_CHMAP_UNKNOWN = 0,
- SNDRV_CHMAP_NA,
+  SNDRV_CHMAP_UNKNOWN = 0,
+  SNDRV_CHMAP_NA,
+  SNDRV_CHMAP_MONO,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_CHMAP_MONO,
- SNDRV_CHMAP_FL,
- SNDRV_CHMAP_FR,
- SNDRV_CHMAP_RL,
+  SNDRV_CHMAP_FL,
+  SNDRV_CHMAP_FR,
+  SNDRV_CHMAP_RL,
+  SNDRV_CHMAP_RR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_CHMAP_RR,
- SNDRV_CHMAP_FC,
- SNDRV_CHMAP_LFE,
- SNDRV_CHMAP_SL,
+  SNDRV_CHMAP_FC,
+  SNDRV_CHMAP_LFE,
+  SNDRV_CHMAP_SL,
+  SNDRV_CHMAP_SR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_CHMAP_SR,
- SNDRV_CHMAP_RC,
- SNDRV_CHMAP_FLC,
- SNDRV_CHMAP_FRC,
+  SNDRV_CHMAP_RC,
+  SNDRV_CHMAP_FLC,
+  SNDRV_CHMAP_FRC,
+  SNDRV_CHMAP_RLC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_CHMAP_RLC,
- SNDRV_CHMAP_RRC,
- SNDRV_CHMAP_FLW,
- SNDRV_CHMAP_FRW,
+  SNDRV_CHMAP_RRC,
+  SNDRV_CHMAP_FLW,
+  SNDRV_CHMAP_FRW,
+  SNDRV_CHMAP_FLH,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_CHMAP_FLH,
- SNDRV_CHMAP_FCH,
- SNDRV_CHMAP_FRH,
- SNDRV_CHMAP_TC,
+  SNDRV_CHMAP_FCH,
+  SNDRV_CHMAP_FRH,
+  SNDRV_CHMAP_TC,
+  SNDRV_CHMAP_TFL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_CHMAP_TFL,
- SNDRV_CHMAP_TFR,
- SNDRV_CHMAP_TFC,
- SNDRV_CHMAP_TRL,
+  SNDRV_CHMAP_TFR,
+  SNDRV_CHMAP_TFC,
+  SNDRV_CHMAP_TRL,
+  SNDRV_CHMAP_TRR,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_CHMAP_TRR,
- SNDRV_CHMAP_TRC,
- SNDRV_CHMAP_TFLC,
- SNDRV_CHMAP_TFRC,
+  SNDRV_CHMAP_TRC,
+  SNDRV_CHMAP_TFLC,
+  SNDRV_CHMAP_TFRC,
+  SNDRV_CHMAP_TSL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_CHMAP_TSL,
- SNDRV_CHMAP_TSR,
- SNDRV_CHMAP_LLFE,
- SNDRV_CHMAP_RLFE,
+  SNDRV_CHMAP_TSR,
+  SNDRV_CHMAP_LLFE,
+  SNDRV_CHMAP_RLFE,
+  SNDRV_CHMAP_BC,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_CHMAP_BC,
- SNDRV_CHMAP_BLC,
- SNDRV_CHMAP_BRC,
- SNDRV_CHMAP_LAST = SNDRV_CHMAP_BRC,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SNDRV_CHMAP_BLC,
+  SNDRV_CHMAP_BRC,
+  SNDRV_CHMAP_LAST = SNDRV_CHMAP_BRC,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CHMAP_POSITION_MASK 0xffff
 #define SNDRV_CHMAP_PHASE_INVERSE (0x01 << 16)
 #define SNDRV_CHMAP_DRIVER_SPEC (0x02 << 16)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_PVERSION _IOR('A', 0x00, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_INFO _IOR('A', 0x01, struct snd_pcm_info)
 #define SNDRV_PCM_IOCTL_TSTAMP _IOW('A', 0x02, int)
 #define SNDRV_PCM_IOCTL_TTSTAMP _IOW('A', 0x03, int)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_HW_REFINE _IOWR('A', 0x10, struct snd_pcm_hw_params)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_HW_PARAMS _IOWR('A', 0x11, struct snd_pcm_hw_params)
 #define SNDRV_PCM_IOCTL_HW_FREE _IO('A', 0x12)
 #define SNDRV_PCM_IOCTL_SW_PARAMS _IOWR('A', 0x13, struct snd_pcm_sw_params)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_STATUS _IOR('A', 0x20, struct snd_pcm_status)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_DELAY _IOR('A', 0x21, snd_pcm_sframes_t)
 #define SNDRV_PCM_IOCTL_HWSYNC _IO('A', 0x22)
 #define SNDRV_PCM_IOCTL_SYNC_PTR _IOWR('A', 0x23, struct snd_pcm_sync_ptr)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_CHANNEL_INFO _IOR('A', 0x32, struct snd_pcm_channel_info)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_PREPARE _IO('A', 0x40)
 #define SNDRV_PCM_IOCTL_RESET _IO('A', 0x41)
 #define SNDRV_PCM_IOCTL_START _IO('A', 0x42)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_DROP _IO('A', 0x43)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_DRAIN _IO('A', 0x44)
 #define SNDRV_PCM_IOCTL_PAUSE _IOW('A', 0x45, int)
 #define SNDRV_PCM_IOCTL_REWIND _IOW('A', 0x46, snd_pcm_uframes_t)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_RESUME _IO('A', 0x47)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_XRUN _IO('A', 0x48)
 #define SNDRV_PCM_IOCTL_FORWARD _IOW('A', 0x49, snd_pcm_uframes_t)
 #define SNDRV_PCM_IOCTL_WRITEI_FRAMES _IOW('A', 0x50, struct snd_xferi)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_READI_FRAMES _IOR('A', 0x51, struct snd_xferi)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_WRITEN_FRAMES _IOW('A', 0x52, struct snd_xfern)
 #define SNDRV_PCM_IOCTL_READN_FRAMES _IOR('A', 0x53, struct snd_xfern)
 #define SNDRV_PCM_IOCTL_LINK _IOW('A', 0x60, int)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_PCM_IOCTL_UNLINK _IO('A', 0x61)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_RAWMIDI_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 0)
 enum {
- SNDRV_RAWMIDI_STREAM_OUTPUT = 0,
+  SNDRV_RAWMIDI_STREAM_OUTPUT = 0,
+  SNDRV_RAWMIDI_STREAM_INPUT,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_RAWMIDI_STREAM_INPUT,
- SNDRV_RAWMIDI_STREAM_LAST = SNDRV_RAWMIDI_STREAM_INPUT,
+  SNDRV_RAWMIDI_STREAM_LAST = SNDRV_RAWMIDI_STREAM_INPUT,
 };
 #define SNDRV_RAWMIDI_INFO_OUTPUT 0x00000001
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_RAWMIDI_INFO_INPUT 0x00000002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_RAWMIDI_INFO_DUPLEX 0x00000004
 struct snd_rawmidi_info {
- unsigned int device;
+  unsigned int device;
+  unsigned int subdevice;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int subdevice;
- int stream;
- int card;
- unsigned int flags;
+  int stream;
+  int card;
+  unsigned int flags;
+  unsigned char id[64];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char id[64];
- unsigned char name[80];
- unsigned char subname[32];
- unsigned int subdevices_count;
+  unsigned char name[80];
+  unsigned char subname[32];
+  unsigned int subdevices_count;
+  unsigned int subdevices_avail;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int subdevices_avail;
- unsigned char reserved[64];
+  unsigned char reserved[64];
 };
 struct snd_rawmidi_params {
+  int stream;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int stream;
- size_t buffer_size;
- size_t avail_min;
- unsigned int no_active_sensing: 1;
+  size_t buffer_size;
+  size_t avail_min;
+  unsigned int no_active_sensing : 1;
+  unsigned char reserved[16];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char reserved[16];
 };
 struct snd_rawmidi_status {
- int stream;
+  int stream;
+  struct timespec tstamp;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct timespec tstamp;
- size_t avail;
- size_t xruns;
- unsigned char reserved[16];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  size_t avail;
+  size_t xruns;
+  unsigned char reserved[16];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_RAWMIDI_IOCTL_PVERSION _IOR('W', 0x00, int)
 #define SNDRV_RAWMIDI_IOCTL_INFO _IOR('W', 0x01, struct snd_rawmidi_info)
 #define SNDRV_RAWMIDI_IOCTL_PARAMS _IOWR('W', 0x10, struct snd_rawmidi_params)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_RAWMIDI_IOCTL_STATUS _IOWR('W', 0x20, struct snd_rawmidi_status)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_RAWMIDI_IOCTL_DROP _IOW('W', 0x30, int)
 #define SNDRV_RAWMIDI_IOCTL_DRAIN _IOW('W', 0x31, int)
 #define SNDRV_TIMER_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 6)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- SNDRV_TIMER_CLASS_NONE = -1,
- SNDRV_TIMER_CLASS_SLAVE = 0,
- SNDRV_TIMER_CLASS_GLOBAL,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_TIMER_CLASS_CARD,
- SNDRV_TIMER_CLASS_PCM,
- SNDRV_TIMER_CLASS_LAST = SNDRV_TIMER_CLASS_PCM,
+  SNDRV_TIMER_CLASS_NONE = - 1,
+  SNDRV_TIMER_CLASS_SLAVE = 0,
+  SNDRV_TIMER_CLASS_GLOBAL,
+  SNDRV_TIMER_CLASS_CARD,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SNDRV_TIMER_CLASS_PCM,
+  SNDRV_TIMER_CLASS_LAST = SNDRV_TIMER_CLASS_PCM,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
- SNDRV_TIMER_SCLASS_NONE = 0,
- SNDRV_TIMER_SCLASS_APPLICATION,
- SNDRV_TIMER_SCLASS_SEQUENCER,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_TIMER_SCLASS_OSS_SEQUENCER,
- SNDRV_TIMER_SCLASS_LAST = SNDRV_TIMER_SCLASS_OSS_SEQUENCER,
+  SNDRV_TIMER_SCLASS_NONE = 0,
+  SNDRV_TIMER_SCLASS_APPLICATION,
+  SNDRV_TIMER_SCLASS_SEQUENCER,
+  SNDRV_TIMER_SCLASS_OSS_SEQUENCER,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  SNDRV_TIMER_SCLASS_LAST = SNDRV_TIMER_SCLASS_OSS_SEQUENCER,
 };
 #define SNDRV_TIMER_GLOBAL_SYSTEM 0
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_TIMER_GLOBAL_RTC 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_TIMER_GLOBAL_HPET 2
 #define SNDRV_TIMER_GLOBAL_HRTIMER 3
-#define SNDRV_TIMER_FLG_SLAVE (1<<0)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDRV_TIMER_FLG_SLAVE (1 << 0)
 struct snd_timer_id {
- int dev_class;
- int dev_sclass;
- int card;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int device;
- int subdevice;
+  int dev_class;
+  int dev_sclass;
+  int card;
+  int device;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int subdevice;
 };
 struct snd_timer_ginfo {
+  struct snd_timer_id tid;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_timer_id tid;
- unsigned int flags;
- int card;
- unsigned char id[64];
+  unsigned int flags;
+  int card;
+  unsigned char id[64];
+  unsigned char name[80];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char name[80];
- unsigned long reserved0;
- unsigned long resolution;
- unsigned long resolution_min;
+  unsigned long reserved0;
+  unsigned long resolution;
+  unsigned long resolution_min;
+  unsigned long resolution_max;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long resolution_max;
- unsigned int clients;
- unsigned char reserved[32];
+  unsigned int clients;
+  unsigned char reserved[32];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_timer_gparams {
- struct snd_timer_id tid;
- unsigned long period_num;
- unsigned long period_den;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char reserved[32];
+  struct snd_timer_id tid;
+  unsigned long period_num;
+  unsigned long period_den;
+  unsigned char reserved[32];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct snd_timer_gstatus {
- struct snd_timer_id tid;
+  struct snd_timer_id tid;
+  unsigned long resolution;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned long resolution;
- unsigned long resolution_num;
- unsigned long resolution_den;
- unsigned char reserved[32];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned long resolution_num;
+  unsigned long resolution_den;
+  unsigned char reserved[32];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_timer_select {
- struct snd_timer_id id;
- unsigned char reserved[32];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct snd_timer_id id;
+  unsigned char reserved[32];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_timer_info {
- unsigned int flags;
- int card;
+  unsigned int flags;
+  int card;
+  unsigned char id[64];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char id[64];
- unsigned char name[80];
- unsigned long reserved0;
- unsigned long resolution;
+  unsigned char name[80];
+  unsigned long reserved0;
+  unsigned long resolution;
+  unsigned char reserved[64];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char reserved[64];
 };
-#define SNDRV_TIMER_PSFLG_AUTO (1<<0)
-#define SNDRV_TIMER_PSFLG_EXCLUSIVE (1<<1)
+#define SNDRV_TIMER_PSFLG_AUTO (1 << 0)
+#define SNDRV_TIMER_PSFLG_EXCLUSIVE (1 << 1)
+#define SNDRV_TIMER_PSFLG_EARLY_EVENT (1 << 2)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_TIMER_PSFLG_EARLY_EVENT (1<<2)
 struct snd_timer_params {
- unsigned int flags;
- unsigned int ticks;
+  unsigned int flags;
+  unsigned int ticks;
+  unsigned int queue_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int queue_size;
- unsigned int reserved0;
- unsigned int filter;
- unsigned char reserved[60];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned int reserved0;
+  unsigned int filter;
+  unsigned char reserved[60];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_timer_status {
- struct timespec tstamp;
- unsigned int resolution;
+  struct timespec tstamp;
+  unsigned int resolution;
+  unsigned int lost;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int lost;
- unsigned int overrun;
- unsigned int queue;
- unsigned char reserved[64];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned int overrun;
+  unsigned int queue;
+  unsigned char reserved[64];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_TIMER_IOCTL_PVERSION _IOR('T', 0x00, int)
 #define SNDRV_TIMER_IOCTL_NEXT_DEVICE _IOWR('T', 0x01, struct snd_timer_id)
 #define SNDRV_TIMER_IOCTL_TREAD _IOW('T', 0x02, int)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_TIMER_IOCTL_GINFO _IOWR('T', 0x03, struct snd_timer_ginfo)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_TIMER_IOCTL_GPARAMS _IOW('T', 0x04, struct snd_timer_gparams)
 #define SNDRV_TIMER_IOCTL_GSTATUS _IOWR('T', 0x05, struct snd_timer_gstatus)
 #define SNDRV_TIMER_IOCTL_SELECT _IOW('T', 0x10, struct snd_timer_select)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_TIMER_IOCTL_INFO _IOR('T', 0x11, struct snd_timer_info)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_TIMER_IOCTL_PARAMS _IOW('T', 0x12, struct snd_timer_params)
 #define SNDRV_TIMER_IOCTL_STATUS _IOR('T', 0x14, struct snd_timer_status)
 #define SNDRV_TIMER_IOCTL_START _IO('T', 0xa0)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_TIMER_IOCTL_STOP _IO('T', 0xa1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_TIMER_IOCTL_CONTINUE _IO('T', 0xa2)
 #define SNDRV_TIMER_IOCTL_PAUSE _IO('T', 0xa3)
 struct snd_timer_read {
+  unsigned int resolution;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int resolution;
- unsigned int ticks;
+  unsigned int ticks;
 };
 enum {
+  SNDRV_TIMER_EVENT_RESOLUTION = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_TIMER_EVENT_RESOLUTION = 0,
- SNDRV_TIMER_EVENT_TICK,
- SNDRV_TIMER_EVENT_START,
- SNDRV_TIMER_EVENT_STOP,
+  SNDRV_TIMER_EVENT_TICK,
+  SNDRV_TIMER_EVENT_START,
+  SNDRV_TIMER_EVENT_STOP,
+  SNDRV_TIMER_EVENT_CONTINUE,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_TIMER_EVENT_CONTINUE,
- SNDRV_TIMER_EVENT_PAUSE,
- SNDRV_TIMER_EVENT_EARLY,
- SNDRV_TIMER_EVENT_SUSPEND,
+  SNDRV_TIMER_EVENT_PAUSE,
+  SNDRV_TIMER_EVENT_EARLY,
+  SNDRV_TIMER_EVENT_SUSPEND,
+  SNDRV_TIMER_EVENT_RESUME,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_TIMER_EVENT_RESUME,
- SNDRV_TIMER_EVENT_MSTART = SNDRV_TIMER_EVENT_START + 10,
- SNDRV_TIMER_EVENT_MSTOP = SNDRV_TIMER_EVENT_STOP + 10,
- SNDRV_TIMER_EVENT_MCONTINUE = SNDRV_TIMER_EVENT_CONTINUE + 10,
+  SNDRV_TIMER_EVENT_MSTART = SNDRV_TIMER_EVENT_START + 10,
+  SNDRV_TIMER_EVENT_MSTOP = SNDRV_TIMER_EVENT_STOP + 10,
+  SNDRV_TIMER_EVENT_MCONTINUE = SNDRV_TIMER_EVENT_CONTINUE + 10,
+  SNDRV_TIMER_EVENT_MPAUSE = SNDRV_TIMER_EVENT_PAUSE + 10,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_TIMER_EVENT_MPAUSE = SNDRV_TIMER_EVENT_PAUSE + 10,
- SNDRV_TIMER_EVENT_MSUSPEND = SNDRV_TIMER_EVENT_SUSPEND + 10,
- SNDRV_TIMER_EVENT_MRESUME = SNDRV_TIMER_EVENT_RESUME + 10,
+  SNDRV_TIMER_EVENT_MSUSPEND = SNDRV_TIMER_EVENT_SUSPEND + 10,
+  SNDRV_TIMER_EVENT_MRESUME = SNDRV_TIMER_EVENT_RESUME + 10,
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_timer_tread {
- int event;
- struct timespec tstamp;
- unsigned int val;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  int event;
+  struct timespec tstamp;
+  unsigned int val;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 7)
 struct snd_ctl_card_info {
- int card;
+  int card;
+  int pad;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int pad;
- unsigned char id[16];
- unsigned char driver[16];
- unsigned char name[32];
+  unsigned char id[16];
+  unsigned char driver[16];
+  unsigned char name[32];
+  unsigned char longname[80];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char longname[80];
- unsigned char reserved_[16];
- unsigned char mixername[80];
- unsigned char components[128];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned char reserved_[16];
+  unsigned char mixername[80];
+  unsigned char components[128];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef int __bitwise snd_ctl_elem_type_t;
 #define SNDRV_CTL_ELEM_TYPE_NONE ((__force snd_ctl_elem_type_t) 0)
 #define SNDRV_CTL_ELEM_TYPE_BOOLEAN ((__force snd_ctl_elem_type_t) 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_ELEM_TYPE_INTEGER ((__force snd_ctl_elem_type_t) 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_ELEM_TYPE_ENUMERATED ((__force snd_ctl_elem_type_t) 3)
 #define SNDRV_CTL_ELEM_TYPE_BYTES ((__force snd_ctl_elem_type_t) 4)
 #define SNDRV_CTL_ELEM_TYPE_IEC958 ((__force snd_ctl_elem_type_t) 5)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_ELEM_TYPE_INTEGER64 ((__force snd_ctl_elem_type_t) 6)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_ELEM_TYPE_LAST SNDRV_CTL_ELEM_TYPE_INTEGER64
 typedef int __bitwise snd_ctl_elem_iface_t;
 #define SNDRV_CTL_ELEM_IFACE_CARD ((__force snd_ctl_elem_iface_t) 0)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_ELEM_IFACE_HWDEP ((__force snd_ctl_elem_iface_t) 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_ELEM_IFACE_MIXER ((__force snd_ctl_elem_iface_t) 2)
 #define SNDRV_CTL_ELEM_IFACE_PCM ((__force snd_ctl_elem_iface_t) 3)
 #define SNDRV_CTL_ELEM_IFACE_RAWMIDI ((__force snd_ctl_elem_iface_t) 4)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_ELEM_IFACE_TIMER ((__force snd_ctl_elem_iface_t) 5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_ELEM_IFACE_SEQUENCER ((__force snd_ctl_elem_iface_t) 6)
 #define SNDRV_CTL_ELEM_IFACE_LAST SNDRV_CTL_ELEM_IFACE_SEQUENCER
-#define SNDRV_CTL_ELEM_ACCESS_READ (1<<0)
+#define SNDRV_CTL_ELEM_ACCESS_READ (1 << 0)
+#define SNDRV_CTL_ELEM_ACCESS_WRITE (1 << 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_CTL_ELEM_ACCESS_WRITE (1<<1)
-#define SNDRV_CTL_ELEM_ACCESS_READWRITE (SNDRV_CTL_ELEM_ACCESS_READ|SNDRV_CTL_ELEM_ACCESS_WRITE)
-#define SNDRV_CTL_ELEM_ACCESS_VOLATILE (1<<2)
-#define SNDRV_CTL_ELEM_ACCESS_TIMESTAMP (1<<3)
+#define SNDRV_CTL_ELEM_ACCESS_READWRITE (SNDRV_CTL_ELEM_ACCESS_READ | SNDRV_CTL_ELEM_ACCESS_WRITE)
+#define SNDRV_CTL_ELEM_ACCESS_VOLATILE (1 << 2)
+#define SNDRV_CTL_ELEM_ACCESS_TIMESTAMP (1 << 3)
+#define SNDRV_CTL_ELEM_ACCESS_TLV_READ (1 << 4)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_CTL_ELEM_ACCESS_TLV_READ (1<<4)
-#define SNDRV_CTL_ELEM_ACCESS_TLV_WRITE (1<<5)
-#define SNDRV_CTL_ELEM_ACCESS_TLV_READWRITE (SNDRV_CTL_ELEM_ACCESS_TLV_READ|SNDRV_CTL_ELEM_ACCESS_TLV_WRITE)
-#define SNDRV_CTL_ELEM_ACCESS_TLV_COMMAND (1<<6)
+#define SNDRV_CTL_ELEM_ACCESS_TLV_WRITE (1 << 5)
+#define SNDRV_CTL_ELEM_ACCESS_TLV_READWRITE (SNDRV_CTL_ELEM_ACCESS_TLV_READ | SNDRV_CTL_ELEM_ACCESS_TLV_WRITE)
+#define SNDRV_CTL_ELEM_ACCESS_TLV_COMMAND (1 << 6)
+#define SNDRV_CTL_ELEM_ACCESS_INACTIVE (1 << 8)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_CTL_ELEM_ACCESS_INACTIVE (1<<8)
-#define SNDRV_CTL_ELEM_ACCESS_LOCK (1<<9)
-#define SNDRV_CTL_ELEM_ACCESS_OWNER (1<<10)
-#define SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK (1<<28)
+#define SNDRV_CTL_ELEM_ACCESS_LOCK (1 << 9)
+#define SNDRV_CTL_ELEM_ACCESS_OWNER (1 << 10)
+#define SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK (1 << 28)
+#define SNDRV_CTL_ELEM_ACCESS_USER (1 << 29)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_CTL_ELEM_ACCESS_USER (1<<29)
 #define SNDRV_CTL_POWER_D0 0x0000
 #define SNDRV_CTL_POWER_D1 0x0100
 #define SNDRV_CTL_POWER_D2 0x0200
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_POWER_D3 0x0300
-#define SNDRV_CTL_POWER_D3hot (SNDRV_CTL_POWER_D3|0x0000)
-#define SNDRV_CTL_POWER_D3cold (SNDRV_CTL_POWER_D3|0x0001)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDRV_CTL_POWER_D3hot (SNDRV_CTL_POWER_D3 | 0x0000)
+#define SNDRV_CTL_POWER_D3cold (SNDRV_CTL_POWER_D3 | 0x0001)
 #define SNDRV_CTL_ELEM_ID_NAME_MAXLEN 44
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_ctl_elem_id {
- unsigned int numid;
- snd_ctl_elem_iface_t iface;
- unsigned int device;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int subdevice;
- unsigned char name[44];
- unsigned int index;
+  unsigned int numid;
+  snd_ctl_elem_iface_t iface;
+  unsigned int device;
+  unsigned int subdevice;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  unsigned char name[44];
+  unsigned int index;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_ctl_elem_list {
- unsigned int offset;
- unsigned int space;
- unsigned int used;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int count;
- struct snd_ctl_elem_id __user *pids;
- unsigned char reserved[50];
+  unsigned int offset;
+  unsigned int space;
+  unsigned int used;
+  unsigned int count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct snd_ctl_elem_id __user * pids;
+  unsigned char reserved[50];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_ctl_elem_info {
- struct snd_ctl_elem_id id;
- snd_ctl_elem_type_t type;
- unsigned int access;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int count;
- __kernel_pid_t owner;
- union {
- struct {
+  struct snd_ctl_elem_id id;
+  snd_ctl_elem_type_t type;
+  unsigned int access;
+  unsigned int count;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- long min;
- long max;
- long step;
- } integer;
+  __kernel_pid_t owner;
+  union {
+    struct {
+      long min;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct {
- long long min;
- long long max;
- long long step;
+      long max;
+      long step;
+    } integer;
+    struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } integer64;
- struct {
- unsigned int items;
- unsigned int item;
+      long long min;
+      long long max;
+      long long step;
+    } integer64;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char name[64];
- __u64 names_ptr;
- unsigned int names_length;
- } enumerated;
+    struct {
+      unsigned int items;
+      unsigned int item;
+      char name[64];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char reserved[128];
- } value;
- union {
- unsigned short d[4];
+      __u64 names_ptr;
+      unsigned int names_length;
+    } enumerated;
+    unsigned char reserved[128];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short *d_ptr;
- } dimen;
- unsigned char reserved[64-4*sizeof(unsigned short)];
+  } value;
+  union {
+    unsigned short d[4];
+    unsigned short * d_ptr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  } dimen;
+  unsigned char reserved[64 - 4 * sizeof(unsigned short)];
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_ctl_elem_value {
- struct snd_ctl_elem_id id;
- unsigned int indirect: 1;
- union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- long value[128];
- long *value_ptr;
- } integer;
+  struct snd_ctl_elem_id id;
+  unsigned int indirect : 1;
+  union {
+    union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- long long value[64];
- long long *value_ptr;
- } integer64;
+      long value[128];
+      long * value_ptr;
+    } integer;
+    union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- unsigned int item[128];
- unsigned int *item_ptr;
- } enumerated;
+      long long value[64];
+      long long * value_ptr;
+    } integer64;
+    union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- union {
- unsigned char data[512];
- unsigned char *data_ptr;
- } bytes;
+      unsigned int item[128];
+      unsigned int * item_ptr;
+    } enumerated;
+    union {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_aes_iec958 iec958;
- } value;
- struct timespec tstamp;
- unsigned char reserved[128-sizeof(struct timespec)];
+      unsigned char data[512];
+      unsigned char * data_ptr;
+    } bytes;
+    struct snd_aes_iec958 iec958;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  } value;
+  struct timespec tstamp;
+  unsigned char reserved[128 - sizeof(struct timespec)];
 };
-struct snd_ctl_tlv {
- unsigned int numid;
- unsigned int length;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int tlv[0];
+struct snd_ctl_tlv {
+  unsigned int numid;
+  unsigned int length;
+  unsigned int tlv[0];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define SNDRV_CTL_IOCTL_PVERSION _IOR('U', 0x00, int)
 #define SNDRV_CTL_IOCTL_CARD_INFO _IOR('U', 0x01, struct snd_ctl_card_info)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_IOCTL_ELEM_LIST _IOWR('U', 0x10, struct snd_ctl_elem_list)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_IOCTL_ELEM_INFO _IOWR('U', 0x11, struct snd_ctl_elem_info)
 #define SNDRV_CTL_IOCTL_ELEM_READ _IOWR('U', 0x12, struct snd_ctl_elem_value)
 #define SNDRV_CTL_IOCTL_ELEM_WRITE _IOWR('U', 0x13, struct snd_ctl_elem_value)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_IOCTL_ELEM_LOCK _IOW('U', 0x14, struct snd_ctl_elem_id)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_IOCTL_ELEM_UNLOCK _IOW('U', 0x15, struct snd_ctl_elem_id)
 #define SNDRV_CTL_IOCTL_SUBSCRIBE_EVENTS _IOWR('U', 0x16, int)
 #define SNDRV_CTL_IOCTL_ELEM_ADD _IOWR('U', 0x17, struct snd_ctl_elem_info)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_IOCTL_ELEM_REPLACE _IOWR('U', 0x18, struct snd_ctl_elem_info)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_IOCTL_ELEM_REMOVE _IOWR('U', 0x19, struct snd_ctl_elem_id)
 #define SNDRV_CTL_IOCTL_TLV_READ _IOWR('U', 0x1a, struct snd_ctl_tlv)
 #define SNDRV_CTL_IOCTL_TLV_WRITE _IOWR('U', 0x1b, struct snd_ctl_tlv)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_IOCTL_TLV_COMMAND _IOWR('U', 0x1c, struct snd_ctl_tlv)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_IOCTL_HWDEP_NEXT_DEVICE _IOWR('U', 0x20, int)
 #define SNDRV_CTL_IOCTL_HWDEP_INFO _IOR('U', 0x21, struct snd_hwdep_info)
 #define SNDRV_CTL_IOCTL_PCM_NEXT_DEVICE _IOR('U', 0x30, int)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_IOCTL_PCM_INFO _IOWR('U', 0x31, struct snd_pcm_info)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_IOCTL_PCM_PREFER_SUBDEVICE _IOW('U', 0x32, int)
 #define SNDRV_CTL_IOCTL_RAWMIDI_NEXT_DEVICE _IOWR('U', 0x40, int)
 #define SNDRV_CTL_IOCTL_RAWMIDI_INFO _IOWR('U', 0x41, struct snd_rawmidi_info)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_IOCTL_RAWMIDI_PREFER_SUBDEVICE _IOW('U', 0x42, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_IOCTL_POWER _IOWR('U', 0xd0, int)
 #define SNDRV_CTL_IOCTL_POWER_STATE _IOR('U', 0xd1, int)
 enum sndrv_ctl_event_type {
+  SNDRV_CTL_EVENT_ELEM = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SNDRV_CTL_EVENT_ELEM = 0,
- SNDRV_CTL_EVENT_LAST = SNDRV_CTL_EVENT_ELEM,
+  SNDRV_CTL_EVENT_LAST = SNDRV_CTL_EVENT_ELEM,
 };
-#define SNDRV_CTL_EVENT_MASK_VALUE (1<<0)
+#define SNDRV_CTL_EVENT_MASK_VALUE (1 << 0)
+#define SNDRV_CTL_EVENT_MASK_INFO (1 << 1)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_CTL_EVENT_MASK_INFO (1<<1)
-#define SNDRV_CTL_EVENT_MASK_ADD (1<<2)
-#define SNDRV_CTL_EVENT_MASK_TLV (1<<3)
+#define SNDRV_CTL_EVENT_MASK_ADD (1 << 2)
+#define SNDRV_CTL_EVENT_MASK_TLV (1 << 3)
 #define SNDRV_CTL_EVENT_MASK_REMOVE (~0U)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_ctl_event {
- int type;
- union {
- struct {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int mask;
- struct snd_ctl_elem_id id;
- } elem;
- unsigned char data8[60];
+  int type;
+  union {
+    struct {
+      unsigned int mask;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- } data;
+      struct snd_ctl_elem_id id;
+    } elem;
+    unsigned char data8[60];
+  } data;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define SNDRV_CTL_NAME_NONE ""
 #define SNDRV_CTL_NAME_PLAYBACK "Playback "
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_NAME_CAPTURE "Capture "
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_NAME_IEC958_NONE ""
 #define SNDRV_CTL_NAME_IEC958_SWITCH "Switch"
 #define SNDRV_CTL_NAME_IEC958_VOLUME "Volume"
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_NAME_IEC958_DEFAULT "Default"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_NAME_IEC958_MASK "Mask"
 #define SNDRV_CTL_NAME_IEC958_CON_MASK "Con Mask"
 #define SNDRV_CTL_NAME_IEC958_PRO_MASK "Pro Mask"
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_CTL_NAME_IEC958_PCM_STREAM "PCM Stream"
-#define SNDRV_CTL_NAME_IEC958(expl,direction,what) "IEC958 " expl SNDRV_CTL_NAME_##direction SNDRV_CTL_NAME_IEC958_##what
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SNDRV_CTL_NAME_IEC958(expl,direction,what) "IEC958 " expl SNDRV_CTL_NAME_ ##direction SNDRV_CTL_NAME_IEC958_ ##what
 #endif
diff --git a/libc/kernel/uapi/sound/asound_fm.h b/libc/kernel/uapi/sound/asound_fm.h
index 51a03f1..0819efe 100644
--- a/libc/kernel/uapi/sound/asound_fm.h
+++ b/libc/kernel/uapi/sound/asound_fm.h
@@ -22,58 +22,58 @@
 #define SNDRV_DM_FM_MODE_OPL3 0x01
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_dm_fm_info {
- unsigned char fm_mode;
- unsigned char rhythm;
+  unsigned char fm_mode;
+  unsigned char rhythm;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_dm_fm_voice {
- unsigned char op;
- unsigned char voice;
- unsigned char am;
+  unsigned char op;
+  unsigned char voice;
+  unsigned char am;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char vibrato;
- unsigned char do_sustain;
- unsigned char kbd_scale;
- unsigned char harmonic;
+  unsigned char vibrato;
+  unsigned char do_sustain;
+  unsigned char kbd_scale;
+  unsigned char harmonic;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char scale_level;
- unsigned char volume;
- unsigned char attack;
- unsigned char decay;
+  unsigned char scale_level;
+  unsigned char volume;
+  unsigned char attack;
+  unsigned char decay;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char sustain;
- unsigned char release;
- unsigned char feedback;
- unsigned char connection;
+  unsigned char sustain;
+  unsigned char release;
+  unsigned char feedback;
+  unsigned char connection;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char left;
- unsigned char right;
- unsigned char waveform;
+  unsigned char left;
+  unsigned char right;
+  unsigned char waveform;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_dm_fm_note {
- unsigned char voice;
- unsigned char octave;
- unsigned int fnum;
+  unsigned char voice;
+  unsigned char octave;
+  unsigned int fnum;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char key_on;
+  unsigned char key_on;
 };
 struct snd_dm_fm_params {
- unsigned char am_depth;
+  unsigned char am_depth;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char vib_depth;
- unsigned char kbd_split;
- unsigned char rhythm;
- unsigned char bass;
+  unsigned char vib_depth;
+  unsigned char kbd_split;
+  unsigned char rhythm;
+  unsigned char bass;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char snare;
- unsigned char tomtom;
- unsigned char cymbal;
- unsigned char hihat;
+  unsigned char snare;
+  unsigned char tomtom;
+  unsigned char cymbal;
+  unsigned char hihat;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define SNDRV_DM_FM_IOCTL_INFO _IOR('H', 0x20, struct snd_dm_fm_info)
-#define SNDRV_DM_FM_IOCTL_RESET _IO ('H', 0x21)
+#define SNDRV_DM_FM_IOCTL_RESET _IO('H', 0x21)
 #define SNDRV_DM_FM_IOCTL_PLAY_NOTE _IOW('H', 0x22, struct snd_dm_fm_note)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_DM_FM_IOCTL_SET_VOICE _IOW('H', 0x23, struct snd_dm_fm_voice)
@@ -81,7 +81,7 @@
 #define SNDRV_DM_FM_IOCTL_SET_MODE _IOW('H', 0x25, int)
 #define SNDRV_DM_FM_IOCTL_SET_CONNECTION _IOW('H', 0x26, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_DM_FM_IOCTL_CLEAR_PATCHES _IO ('H', 0x40)
+#define SNDRV_DM_FM_IOCTL_CLEAR_PATCHES _IO('H', 0x40)
 #define SNDRV_DM_FM_OSS_IOCTL_RESET 0x20
 #define SNDRV_DM_FM_OSS_IOCTL_PLAY_NOTE 0x21
 #define SNDRV_DM_FM_OSS_IOCTL_SET_VOICE 0x22
@@ -94,13 +94,13 @@
 #define FM_KEY_2OP "2OP\032"
 #define FM_KEY_4OP "4OP\032"
 struct sbi_patch {
- unsigned char prog;
+  unsigned char prog;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char bank;
- char key[4];
- char name[25];
- char extension[7];
+  unsigned char bank;
+  char key[4];
+  char name[25];
+  char extension[7];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char data[32];
+  unsigned char data[32];
 };
 #endif
diff --git a/libc/kernel/uapi/sound/compress_offload.h b/libc/kernel/uapi/sound/compress_offload.h
index 0120502..8928cbf 100644
--- a/libc/kernel/uapi/sound/compress_offload.h
+++ b/libc/kernel/uapi/sound/compress_offload.h
@@ -24,72 +24,72 @@
 #include <sound/compress_params.h>
 #define SNDRV_COMPRESS_VERSION SNDRV_PROTOCOL_VERSION(0, 1, 2)
 struct snd_compressed_buffer {
- __u32 fragment_size;
+  __u32 fragment_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 fragments;
+  __u32 fragments;
 } __attribute__((packed, aligned(4)));
 struct snd_compr_params {
- struct snd_compressed_buffer buffer;
+  struct snd_compressed_buffer buffer;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_codec codec;
- __u8 no_wake_mode;
+  struct snd_codec codec;
+  __u8 no_wake_mode;
 } __attribute__((packed, aligned(4)));
 struct snd_compr_tstamp {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 byte_offset;
- __u32 copied_total;
- __u32 pcm_frames;
- __u32 pcm_io_frames;
+  __u32 byte_offset;
+  __u32 copied_total;
+  __u32 pcm_frames;
+  __u32 pcm_io_frames;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 sampling_rate;
+  __u32 sampling_rate;
 } __attribute__((packed, aligned(4)));
 struct snd_compr_avail {
- __u64 avail;
+  __u64 avail;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_compr_tstamp tstamp;
+  struct snd_compr_tstamp tstamp;
 } __attribute__((packed, aligned(4)));
 enum snd_compr_direction {
- SND_COMPRESS_PLAYBACK = 0,
+  SND_COMPRESS_PLAYBACK = 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- SND_COMPRESS_CAPTURE
+  SND_COMPRESS_CAPTURE
 };
 struct snd_compr_caps {
- __u32 num_codecs;
+  __u32 num_codecs;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 direction;
- __u32 min_fragment_size;
- __u32 max_fragment_size;
- __u32 min_fragments;
+  __u32 direction;
+  __u32 min_fragment_size;
+  __u32 max_fragment_size;
+  __u32 min_fragments;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 max_fragments;
- __u32 codecs[MAX_NUM_CODECS];
- __u32 reserved[11];
+  __u32 max_fragments;
+  __u32 codecs[MAX_NUM_CODECS];
+  __u32 reserved[11];
 } __attribute__((packed, aligned(4)));
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_compr_codec_caps {
- __u32 codec;
- __u32 num_descriptors;
- struct snd_codec_desc descriptor[MAX_NUM_CODEC_DESCRIPTORS];
+  __u32 codec;
+  __u32 num_descriptors;
+  struct snd_codec_desc descriptor[MAX_NUM_CODEC_DESCRIPTORS];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed, aligned(4)));
 enum {
- SNDRV_COMPRESS_ENCODER_PADDING = 1,
- SNDRV_COMPRESS_ENCODER_DELAY = 2,
+  SNDRV_COMPRESS_ENCODER_PADDING = 1,
+  SNDRV_COMPRESS_ENCODER_DELAY = 2,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct snd_compr_metadata {
- __u32 key;
- __u32 value[8];
+  __u32 key;
+  __u32 value[8];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed, aligned(4)));
 #define SNDRV_COMPRESS_IOCTL_VERSION _IOR('C', 0x00, int)
 #define SNDRV_COMPRESS_GET_CAPS _IOWR('C', 0x10, struct snd_compr_caps)
-#define SNDRV_COMPRESS_GET_CODEC_CAPS _IOWR('C', 0x11,  struct snd_compr_codec_caps)
+#define SNDRV_COMPRESS_GET_CODEC_CAPS _IOWR('C', 0x11, struct snd_compr_codec_caps)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_COMPRESS_SET_PARAMS _IOW('C', 0x12, struct snd_compr_params)
 #define SNDRV_COMPRESS_GET_PARAMS _IOR('C', 0x13, struct snd_codec)
-#define SNDRV_COMPRESS_SET_METADATA _IOW('C', 0x14,  struct snd_compr_metadata)
-#define SNDRV_COMPRESS_GET_METADATA _IOWR('C', 0x15,  struct snd_compr_metadata)
+#define SNDRV_COMPRESS_SET_METADATA _IOW('C', 0x14, struct snd_compr_metadata)
+#define SNDRV_COMPRESS_GET_METADATA _IOWR('C', 0x15, struct snd_compr_metadata)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_COMPRESS_TSTAMP _IOR('C', 0x20, struct snd_compr_tstamp)
 #define SNDRV_COMPRESS_AVAIL _IOR('C', 0x21, struct snd_compr_avail)
diff --git a/libc/kernel/uapi/sound/compress_params.h b/libc/kernel/uapi/sound/compress_params.h
index e884e9a..b1703dc 100644
--- a/libc/kernel/uapi/sound/compress_params.h
+++ b/libc/kernel/uapi/sound/compress_params.h
@@ -171,75 +171,75 @@
 #define SND_RATECONTROLMODE_VARIABLEBITRATE ((__u32) 0x00000002)
 struct snd_enc_wma {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 super_block_align;
+  __u32 super_block_align;
 };
 struct snd_enc_vorbis {
- __s32 quality;
+  __s32 quality;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 managed;
- __u32 max_bit_rate;
- __u32 min_bit_rate;
- __u32 downmix;
+  __u32 managed;
+  __u32 max_bit_rate;
+  __u32 min_bit_rate;
+  __u32 downmix;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed, aligned(4)));
 struct snd_enc_real {
- __u32 quant_bits;
- __u32 start_region;
+  __u32 quant_bits;
+  __u32 start_region;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 num_regions;
+  __u32 num_regions;
 } __attribute__((packed, aligned(4)));
 struct snd_enc_flac {
- __u32 num;
+  __u32 num;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 gain;
+  __u32 gain;
 } __attribute__((packed, aligned(4)));
 struct snd_enc_generic {
- __u32 bw;
+  __u32 bw;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __s32 reserved[15];
+  __s32 reserved[15];
 } __attribute__((packed, aligned(4)));
 union snd_codec_options {
- struct snd_enc_wma wma;
+  struct snd_enc_wma wma;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_enc_vorbis vorbis;
- struct snd_enc_real real;
- struct snd_enc_flac flac;
- struct snd_enc_generic generic;
+  struct snd_enc_vorbis vorbis;
+  struct snd_enc_real real;
+  struct snd_enc_flac flac;
+  struct snd_enc_generic generic;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed, aligned(4)));
 struct snd_codec_desc {
- __u32 max_ch;
- __u32 sample_rates[MAX_NUM_SAMPLE_RATES];
+  __u32 max_ch;
+  __u32 sample_rates[MAX_NUM_SAMPLE_RATES];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 num_sample_rates;
- __u32 bit_rate[MAX_NUM_BITRATES];
- __u32 num_bitrates;
- __u32 rate_control;
+  __u32 num_sample_rates;
+  __u32 bit_rate[MAX_NUM_BITRATES];
+  __u32 num_bitrates;
+  __u32 rate_control;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 profiles;
- __u32 modes;
- __u32 formats;
- __u32 min_buffer;
+  __u32 profiles;
+  __u32 modes;
+  __u32 formats;
+  __u32 min_buffer;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 reserved[15];
+  __u32 reserved[15];
 } __attribute__((packed, aligned(4)));
 struct snd_codec {
- __u32 id;
+  __u32 id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 ch_in;
- __u32 ch_out;
- __u32 sample_rate;
- __u32 bit_rate;
+  __u32 ch_in;
+  __u32 ch_out;
+  __u32 sample_rate;
+  __u32 bit_rate;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 rate_control;
- __u32 profile;
- __u32 level;
- __u32 ch_mode;
+  __u32 rate_control;
+  __u32 profile;
+  __u32 level;
+  __u32 ch_mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 format;
- __u32 align;
- union snd_codec_options options;
- __u32 reserved[3];
+  __u32 format;
+  __u32 align;
+  union snd_codec_options options;
+  __u32 reserved[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed, aligned(4)));
 #endif
diff --git a/libc/kernel/uapi/sound/emu10k1.h b/libc/kernel/uapi/sound/emu10k1.h
index cbfc9f9..9701227 100644
--- a/libc/kernel/uapi/sound/emu10k1.h
+++ b/libc/kernel/uapi/sound/emu10k1.h
@@ -269,14 +269,14 @@
 #define TANKMEMADDRREG_WRITE 0x00200000
 #define TANKMEMADDRREG_READ 0x00100000
 struct snd_emu10k1_fx8010_info {
- unsigned int internal_tram_size;
+  unsigned int internal_tram_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int external_tram_size;
- char fxbus_names[16][32];
- char extin_names[16][32];
- char extout_names[32][32];
+  unsigned int external_tram_size;
+  char fxbus_names[16][32];
+  char extin_names[16][32];
+  char extout_names[32][32];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int gpr_controls;
+  unsigned int gpr_controls;
 };
 #define EMU10K1_GPR_TRANSLATION_NONE 0
 #define EMU10K1_GPR_TRANSLATION_TABLE100 1
@@ -286,97 +286,97 @@
 #define EMU10K1_GPR_TRANSLATION_ONOFF 4
 struct snd_emu10k1_fx8010_control_gpr {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_ctl_elem_id id;
- unsigned int vcount;
- unsigned int count;
- unsigned short gpr[32];
+  struct snd_ctl_elem_id id;
+  unsigned int vcount;
+  unsigned int count;
+  unsigned short gpr[32];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int value[32];
- unsigned int min;
- unsigned int max;
- unsigned int translation;
+  unsigned int value[32];
+  unsigned int min;
+  unsigned int max;
+  unsigned int translation;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- const unsigned int *tlv;
+  const unsigned int * tlv;
 };
 struct snd_emu10k1_fx8010_control_old_gpr {
- struct snd_ctl_elem_id id;
+  struct snd_ctl_elem_id id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int vcount;
- unsigned int count;
- unsigned short gpr[32];
- unsigned int value[32];
+  unsigned int vcount;
+  unsigned int count;
+  unsigned short gpr[32];
+  unsigned int value[32];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int min;
- unsigned int max;
- unsigned int translation;
+  unsigned int min;
+  unsigned int max;
+  unsigned int translation;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_emu10k1_fx8010_code {
- char name[128];
- DECLARE_BITMAP(gpr_valid, 0x200);
- __u32 __user *gpr_map;
+  char name[128];
+  DECLARE_BITMAP(gpr_valid, 0x200);
+  __u32 __user * gpr_map;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int gpr_add_control_count;
- struct snd_emu10k1_fx8010_control_gpr __user *gpr_add_controls;
- unsigned int gpr_del_control_count;
- struct snd_ctl_elem_id __user *gpr_del_controls;
+  unsigned int gpr_add_control_count;
+  struct snd_emu10k1_fx8010_control_gpr __user * gpr_add_controls;
+  unsigned int gpr_del_control_count;
+  struct snd_ctl_elem_id __user * gpr_del_controls;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int gpr_list_control_count;
- unsigned int gpr_list_control_total;
- struct snd_emu10k1_fx8010_control_gpr __user *gpr_list_controls;
- DECLARE_BITMAP(tram_valid, 0x100);
+  unsigned int gpr_list_control_count;
+  unsigned int gpr_list_control_total;
+  struct snd_emu10k1_fx8010_control_gpr __user * gpr_list_controls;
+  DECLARE_BITMAP(tram_valid, 0x100);
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u32 __user *tram_data_map;
- __u32 __user *tram_addr_map;
- DECLARE_BITMAP(code_valid, 1024);
- __u32 __user *code;
+  __u32 __user * tram_data_map;
+  __u32 __user * tram_addr_map;
+  DECLARE_BITMAP(code_valid, 1024);
+  __u32 __user * code;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct snd_emu10k1_fx8010_tram {
- unsigned int address;
- unsigned int size;
+  unsigned int address;
+  unsigned int size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int *samples;
+  unsigned int * samples;
 };
 struct snd_emu10k1_fx8010_pcm_rec {
- unsigned int substream;
+  unsigned int substream;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int res1;
- unsigned int channels;
- unsigned int tram_start;
- unsigned int buffer_size;
+  unsigned int res1;
+  unsigned int channels;
+  unsigned int tram_start;
+  unsigned int buffer_size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short gpr_size;
- unsigned short gpr_ptr;
- unsigned short gpr_count;
- unsigned short gpr_tmpcount;
+  unsigned short gpr_size;
+  unsigned short gpr_ptr;
+  unsigned short gpr_count;
+  unsigned short gpr_tmpcount;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short gpr_trigger;
- unsigned short gpr_running;
- unsigned char pad;
- unsigned char etram[32];
+  unsigned short gpr_trigger;
+  unsigned short gpr_running;
+  unsigned char pad;
+  unsigned char etram[32];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int res2;
+  unsigned int res2;
 };
 #define SNDRV_EMU10K1_VERSION SNDRV_PROTOCOL_VERSION(1, 0, 1)
-#define SNDRV_EMU10K1_IOCTL_INFO _IOR ('H', 0x10, struct snd_emu10k1_fx8010_info)
+#define SNDRV_EMU10K1_IOCTL_INFO _IOR('H', 0x10, struct snd_emu10k1_fx8010_info)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_EMU10K1_IOCTL_CODE_POKE _IOW ('H', 0x11, struct snd_emu10k1_fx8010_code)
+#define SNDRV_EMU10K1_IOCTL_CODE_POKE _IOW('H', 0x11, struct snd_emu10k1_fx8010_code)
 #define SNDRV_EMU10K1_IOCTL_CODE_PEEK _IOWR('H', 0x12, struct snd_emu10k1_fx8010_code)
-#define SNDRV_EMU10K1_IOCTL_TRAM_SETUP _IOW ('H', 0x20, int)
-#define SNDRV_EMU10K1_IOCTL_TRAM_POKE _IOW ('H', 0x21, struct snd_emu10k1_fx8010_tram)
+#define SNDRV_EMU10K1_IOCTL_TRAM_SETUP _IOW('H', 0x20, int)
+#define SNDRV_EMU10K1_IOCTL_TRAM_POKE _IOW('H', 0x21, struct snd_emu10k1_fx8010_tram)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_EMU10K1_IOCTL_TRAM_PEEK _IOWR('H', 0x22, struct snd_emu10k1_fx8010_tram)
-#define SNDRV_EMU10K1_IOCTL_PCM_POKE _IOW ('H', 0x30, struct snd_emu10k1_fx8010_pcm_rec)
+#define SNDRV_EMU10K1_IOCTL_PCM_POKE _IOW('H', 0x30, struct snd_emu10k1_fx8010_pcm_rec)
 #define SNDRV_EMU10K1_IOCTL_PCM_PEEK _IOWR('H', 0x31, struct snd_emu10k1_fx8010_pcm_rec)
-#define SNDRV_EMU10K1_IOCTL_PVERSION _IOR ('H', 0x40, int)
+#define SNDRV_EMU10K1_IOCTL_PVERSION _IOR('H', 0x40, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_EMU10K1_IOCTL_STOP _IO ('H', 0x80)
-#define SNDRV_EMU10K1_IOCTL_CONTINUE _IO ('H', 0x81)
-#define SNDRV_EMU10K1_IOCTL_ZERO_TRAM_COUNTER _IO ('H', 0x82)
-#define SNDRV_EMU10K1_IOCTL_SINGLE_STEP _IOW ('H', 0x83, int)
+#define SNDRV_EMU10K1_IOCTL_STOP _IO('H', 0x80)
+#define SNDRV_EMU10K1_IOCTL_CONTINUE _IO('H', 0x81)
+#define SNDRV_EMU10K1_IOCTL_ZERO_TRAM_COUNTER _IO('H', 0x82)
+#define SNDRV_EMU10K1_IOCTL_SINGLE_STEP _IOW('H', 0x83, int)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_EMU10K1_IOCTL_DBG_READ _IOR ('H', 0x84, int)
+#define SNDRV_EMU10K1_IOCTL_DBG_READ _IOR('H', 0x84, int)
 typedef struct snd_emu10k1_fx8010_info emu10k1_fx8010_info_t;
 typedef struct snd_emu10k1_fx8010_control_gpr emu10k1_fx8010_control_gpr_t;
 typedef struct snd_emu10k1_fx8010_code emu10k1_fx8010_code_t;
diff --git a/libc/kernel/uapi/sound/firewire.h b/libc/kernel/uapi/sound/firewire.h
index 55f729e..7965fc4 100644
--- a/libc/kernel/uapi/sound/firewire.h
+++ b/libc/kernel/uapi/sound/firewire.h
@@ -26,42 +26,42 @@
 #define SNDRV_FIREWIRE_EVENT_EFW_RESPONSE 0x4e617475
 struct snd_firewire_event_common {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int type;
+  unsigned int type;
 };
 struct snd_firewire_event_lock_status {
- unsigned int type;
+  unsigned int type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int status;
+  unsigned int status;
 };
 struct snd_firewire_event_dice_notification {
- unsigned int type;
+  unsigned int type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int notification;
+  unsigned int notification;
 };
-#define SND_EFW_TRANSACTION_USER_SEQNUM_MAX ((__u32)((__u16)~0) - 1)
+#define SND_EFW_TRANSACTION_USER_SEQNUM_MAX ((__u32) ((__u16) ~0) - 1)
 struct snd_efw_transaction {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 length;
- __be32 version;
- __be32 seqnum;
- __be32 category;
+  __be32 length;
+  __be32 version;
+  __be32 seqnum;
+  __be32 category;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __be32 command;
- __be32 status;
- __be32 params[0];
+  __be32 command;
+  __be32 status;
+  __be32 params[0];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_firewire_event_efw_response {
- unsigned int type;
- __be32 response[0];
+  unsigned int type;
+  __be32 response[0];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 union snd_firewire_event {
- struct snd_firewire_event_common common;
- struct snd_firewire_event_lock_status lock_status;
- struct snd_firewire_event_dice_notification dice_notification;
+  struct snd_firewire_event_common common;
+  struct snd_firewire_event_lock_status lock_status;
+  struct snd_firewire_event_dice_notification dice_notification;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct snd_firewire_event_efw_response efw_response;
+  struct snd_firewire_event_efw_response efw_response;
 };
 #define SNDRV_FIREWIRE_IOCTL_GET_INFO _IOR('H', 0xf8, struct snd_firewire_get_info)
 #define SNDRV_FIREWIRE_IOCTL_LOCK _IO('H', 0xf9)
@@ -72,10 +72,10 @@
 #define SNDRV_FIREWIRE_TYPE_BEBOB 3
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct snd_firewire_get_info {
- unsigned int type;
- unsigned int card;
- unsigned char guid[8];
+  unsigned int type;
+  unsigned int card;
+  unsigned char guid[8];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char device_name[16];
+  char device_name[16];
 };
 #endif
diff --git a/libc/kernel/uapi/sound/hdsp.h b/libc/kernel/uapi/sound/hdsp.h
index 81855b7..d2155e4 100644
--- a/libc/kernel/uapi/sound/hdsp.h
+++ b/libc/kernel/uapi/sound/hdsp.h
@@ -22,78 +22,78 @@
 #define HDSP_MATRIX_MIXER_SIZE 2048
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum HDSP_IO_Type {
- Digiface,
- Multiface,
- H9652,
+  Digiface,
+  Multiface,
+  H9652,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- H9632,
- RPM,
- Undefined,
+  H9632,
+  RPM,
+  Undefined,
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct hdsp_peak_rms {
- __u32 input_peaks[26];
- __u32 playback_peaks[26];
- __u32 output_peaks[28];
+  __u32 input_peaks[26];
+  __u32 playback_peaks[26];
+  __u32 output_peaks[28];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- __u64 input_rms[26];
- __u64 playback_rms[26];
- __u64 output_rms[26];
+  __u64 input_rms[26];
+  __u64 playback_rms[26];
+  __u64 output_rms[26];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_HDSP_IOCTL_GET_PEAK_RMS _IOR('H', 0x40, struct hdsp_peak_rms)
 struct hdsp_config_info {
- unsigned char pref_sync_ref;
- unsigned char wordclock_sync_check;
+  unsigned char pref_sync_ref;
+  unsigned char wordclock_sync_check;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char spdif_sync_check;
- unsigned char adatsync_sync_check;
- unsigned char adat_sync_check[3];
- unsigned char spdif_in;
+  unsigned char spdif_sync_check;
+  unsigned char adatsync_sync_check;
+  unsigned char adat_sync_check[3];
+  unsigned char spdif_in;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char spdif_out;
- unsigned char spdif_professional;
- unsigned char spdif_emphasis;
- unsigned char spdif_nonaudio;
+  unsigned char spdif_out;
+  unsigned char spdif_professional;
+  unsigned char spdif_emphasis;
+  unsigned char spdif_nonaudio;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int spdif_sample_rate;
- unsigned int system_sample_rate;
- unsigned int autosync_sample_rate;
- unsigned char system_clock_mode;
+  unsigned int spdif_sample_rate;
+  unsigned int system_sample_rate;
+  unsigned int autosync_sample_rate;
+  unsigned char system_clock_mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char clock_source;
- unsigned char autosync_ref;
- unsigned char line_out;
- unsigned char passthru;
+  unsigned char clock_source;
+  unsigned char autosync_ref;
+  unsigned char line_out;
+  unsigned char passthru;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char da_gain;
- unsigned char ad_gain;
- unsigned char phone_gain;
- unsigned char xlr_breakout_cable;
+  unsigned char da_gain;
+  unsigned char ad_gain;
+  unsigned char phone_gain;
+  unsigned char xlr_breakout_cable;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char analog_extension_board;
+  unsigned char analog_extension_board;
 };
 #define SNDRV_HDSP_IOCTL_GET_CONFIG_INFO _IOR('H', 0x41, struct hdsp_config_info)
 struct hdsp_firmware {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- void __user *firmware_data;
+  void __user * firmware_data;
 };
 #define SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE _IOW('H', 0x42, struct hdsp_firmware)
 struct hdsp_version {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- enum HDSP_IO_Type io_type;
- unsigned short firmware_rev;
+  enum HDSP_IO_Type io_type;
+  unsigned short firmware_rev;
 };
 #define SNDRV_HDSP_IOCTL_GET_VERSION _IOR('H', 0x43, struct hdsp_version)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct hdsp_mixer {
- unsigned short matrix[HDSP_MATRIX_MIXER_SIZE];
+  unsigned short matrix[HDSP_MATRIX_MIXER_SIZE];
 };
 #define SNDRV_HDSP_IOCTL_GET_MIXER _IOR('H', 0x44, struct hdsp_mixer)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct hdsp_9632_aeb {
- int aebi;
- int aebo;
+  int aebi;
+  int aebo;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_HDSP_IOCTL_GET_9632_AEB _IOR('H', 0x45, struct hdsp_9632_aeb)
diff --git a/libc/kernel/uapi/sound/hdspm.h b/libc/kernel/uapi/sound/hdspm.h
index 8b3688f..16d03ba 100644
--- a/libc/kernel/uapi/sound/hdspm.h
+++ b/libc/kernel/uapi/sound/hdspm.h
@@ -21,157 +21,157 @@
 #define HDSPM_MAX_CHANNELS 64
 enum hdspm_io_type {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- MADI,
- MADIface,
- AIO,
- AES32,
+  MADI,
+  MADIface,
+  AIO,
+  AES32,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- RayDAT
+  RayDAT
 };
 enum hdspm_speed {
- ss,
+  ss,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- ds,
- qs
+  ds,
+  qs
 };
 struct hdspm_peak_rms {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t input_peaks[64];
- uint32_t playback_peaks[64];
- uint32_t output_peaks[64];
- uint64_t input_rms[64];
+  uint32_t input_peaks[64];
+  uint32_t playback_peaks[64];
+  uint32_t output_peaks[64];
+  uint64_t input_rms[64];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint64_t playback_rms[64];
- uint64_t output_rms[64];
- uint8_t speed;
- int status2;
+  uint64_t playback_rms[64];
+  uint64_t output_rms[64];
+  uint8_t speed;
+  int status2;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define SNDRV_HDSPM_IOCTL_GET_PEAK_RMS   _IOR('H', 0x42, struct hdspm_peak_rms)
+#define SNDRV_HDSPM_IOCTL_GET_PEAK_RMS _IOR('H', 0x42, struct hdspm_peak_rms)
 struct hdspm_config {
- unsigned char pref_sync_ref;
+  unsigned char pref_sync_ref;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char wordclock_sync_check;
- unsigned char madi_sync_check;
- unsigned int system_sample_rate;
- unsigned int autosync_sample_rate;
+  unsigned char wordclock_sync_check;
+  unsigned char madi_sync_check;
+  unsigned int system_sample_rate;
+  unsigned int autosync_sample_rate;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char system_clock_mode;
- unsigned char clock_source;
- unsigned char autosync_ref;
- unsigned char line_out;
+  unsigned char system_clock_mode;
+  unsigned char clock_source;
+  unsigned char autosync_ref;
+  unsigned char line_out;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int passthru;
- unsigned int analog_out;
+  unsigned int passthru;
+  unsigned int analog_out;
 };
-#define SNDRV_HDSPM_IOCTL_GET_CONFIG   _IOR('H', 0x41, struct hdspm_config)
+#define SNDRV_HDSPM_IOCTL_GET_CONFIG _IOR('H', 0x41, struct hdspm_config)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum hdspm_ltc_format {
- format_invalid,
- fps_24,
- fps_25,
+  format_invalid,
+  fps_24,
+  fps_25,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- fps_2997,
- fps_30
+  fps_2997,
+  fps_30
 };
 enum hdspm_ltc_frame {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- frame_invalid,
- drop_frame,
- full_frame
+  frame_invalid,
+  drop_frame,
+  full_frame
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum hdspm_ltc_input_format {
- ntsc,
- pal,
- no_video
+  ntsc,
+  pal,
+  no_video
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct hdspm_ltc {
- unsigned int ltc;
- enum hdspm_ltc_format format;
+  unsigned int ltc;
+  enum hdspm_ltc_format format;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- enum hdspm_ltc_frame frame;
- enum hdspm_ltc_input_format input_format;
+  enum hdspm_ltc_frame frame;
+  enum hdspm_ltc_input_format input_format;
 };
 #define SNDRV_HDSPM_IOCTL_GET_LTC _IOR('H', 0x46, struct hdspm_ltc)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum hdspm_sync {
- hdspm_sync_no_lock = 0,
- hdspm_sync_lock = 1,
- hdspm_sync_sync = 2
+  hdspm_sync_no_lock = 0,
+  hdspm_sync_lock = 1,
+  hdspm_sync_sync = 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum hdspm_madi_input {
- hdspm_input_optical = 0,
- hdspm_input_coax = 1
+  hdspm_input_optical = 0,
+  hdspm_input_coax = 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum hdspm_madi_channel_format {
- hdspm_format_ch_64 = 0,
- hdspm_format_ch_56 = 1
+  hdspm_format_ch_64 = 0,
+  hdspm_format_ch_56 = 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum hdspm_madi_frame_format {
- hdspm_frame_48 = 0,
- hdspm_frame_96 = 1
+  hdspm_frame_48 = 0,
+  hdspm_frame_96 = 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 enum hdspm_syncsource {
- syncsource_wc = 0,
- syncsource_madi = 1,
+  syncsource_wc = 0,
+  syncsource_madi = 1,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- syncsource_tco = 2,
- syncsource_sync = 3,
- syncsource_none = 4
+  syncsource_tco = 2,
+  syncsource_sync = 3,
+  syncsource_none = 4
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct hdspm_status {
- uint8_t card_type;
- enum hdspm_syncsource autosync_source;
- uint64_t card_clock;
+  uint8_t card_type;
+  enum hdspm_syncsource autosync_source;
+  uint64_t card_clock;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint32_t master_period;
- union {
- struct {
- uint8_t sync_wc;
+  uint32_t master_period;
+  union {
+    struct {
+      uint8_t sync_wc;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint8_t sync_madi;
- uint8_t sync_tco;
- uint8_t sync_in;
- uint8_t madi_input;
+      uint8_t sync_madi;
+      uint8_t sync_tco;
+      uint8_t sync_in;
+      uint8_t madi_input;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint8_t channel_format;
- uint8_t frame_format;
- } madi;
- } card_specific;
+      uint8_t channel_format;
+      uint8_t frame_format;
+    } madi;
+  } card_specific;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-#define SNDRV_HDSPM_IOCTL_GET_STATUS   _IOR('H', 0x47, struct hdspm_status)
+#define SNDRV_HDSPM_IOCTL_GET_STATUS _IOR('H', 0x47, struct hdspm_status)
 #define HDSPM_ADDON_TCO 1
 struct hdspm_version {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint8_t card_type;
- char cardname[20];
- unsigned int serial;
- unsigned short firmware_rev;
+  uint8_t card_type;
+  char cardname[20];
+  unsigned int serial;
+  unsigned short firmware_rev;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int addons;
+  int addons;
 };
 #define SNDRV_HDSPM_IOCTL_GET_VERSION _IOR('H', 0x48, struct hdspm_version)
 #define HDSPM_MIXER_CHANNELS HDSPM_MAX_CHANNELS
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct hdspm_channelfader {
- unsigned int in[HDSPM_MIXER_CHANNELS];
- unsigned int pb[HDSPM_MIXER_CHANNELS];
+  unsigned int in[HDSPM_MIXER_CHANNELS];
+  unsigned int pb[HDSPM_MIXER_CHANNELS];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct hdspm_mixer {
- struct hdspm_channelfader ch[HDSPM_MIXER_CHANNELS];
+  struct hdspm_channelfader ch[HDSPM_MIXER_CHANNELS];
 };
 struct hdspm_mixer_ioctl {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- struct hdspm_mixer *mixer;
+  struct hdspm_mixer * mixer;
 };
 #define SNDRV_HDSPM_IOCTL_GET_MIXER _IOR('H', 0x44, struct hdspm_mixer_ioctl)
 typedef struct hdspm_peak_rms hdspm_peak_rms_t;
diff --git a/libc/kernel/uapi/sound/sb16_csp.h b/libc/kernel/uapi/sound/sb16_csp.h
index 29c1a01..a02e6bc 100644
--- a/libc/kernel/uapi/sound/sb16_csp.h
+++ b/libc/kernel/uapi/sound/sb16_csp.h
@@ -48,38 +48,38 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SB_CSP_MAX_MICROCODE_FILE_SIZE 0x3000
 struct snd_sb_csp_mc_header {
- char codec_name[16];
- unsigned short func_req;
+  char codec_name[16];
+  unsigned short func_req;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct snd_sb_csp_microcode {
- struct snd_sb_csp_mc_header info;
- unsigned char data[SNDRV_SB_CSP_MAX_MICROCODE_FILE_SIZE];
+  struct snd_sb_csp_mc_header info;
+  unsigned char data[SNDRV_SB_CSP_MAX_MICROCODE_FILE_SIZE];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct snd_sb_csp_start {
- int sample_width;
- int channels;
+  int sample_width;
+  int channels;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct snd_sb_csp_info {
- char codec_name[16];
- unsigned short func_nr;
+  char codec_name[16];
+  unsigned short func_nr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned int acc_format;
- unsigned short acc_channels;
- unsigned short acc_width;
- unsigned short acc_rates;
+  unsigned int acc_format;
+  unsigned short acc_channels;
+  unsigned short acc_width;
+  unsigned short acc_rates;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short csp_mode;
- unsigned short run_channels;
- unsigned short run_width;
- unsigned short version;
+  unsigned short csp_mode;
+  unsigned short run_channels;
+  unsigned short run_width;
+  unsigned short version;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short state;
+  unsigned short state;
 };
 #define SNDRV_SB_CSP_IOCTL_INFO _IOR('H', 0x10, struct snd_sb_csp_info)
-#define SNDRV_SB_CSP_IOCTL_LOAD_CODE   _IOC(_IOC_WRITE, 'H', 0x11, sizeof(struct snd_sb_csp_microcode))
+#define SNDRV_SB_CSP_IOCTL_LOAD_CODE _IOC(_IOC_WRITE, 'H', 0x11, sizeof(struct snd_sb_csp_microcode))
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SB_CSP_IOCTL_UNLOAD_CODE _IO('H', 0x12)
 #define SNDRV_SB_CSP_IOCTL_START _IOW('H', 0x13, struct snd_sb_csp_start)
diff --git a/libc/kernel/uapi/sound/sfnt_info.h b/libc/kernel/uapi/sound/sfnt_info.h
index abe6a55..e4d31c8 100644
--- a/libc/kernel/uapi/sound/sfnt_info.h
+++ b/libc/kernel/uapi/sound/sfnt_info.h
@@ -21,20 +21,20 @@
 #include <sound/asound.h>
 #ifdef SNDRV_BIG_ENDIAN
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-#define SNDRV_OSS_PATCHKEY(id) (0xfd00|id)
+#define SNDRV_OSS_PATCHKEY(id) (0xfd00 | id)
 #else
-#define SNDRV_OSS_PATCHKEY(id) ((id<<8)|0xfd)
+#define SNDRV_OSS_PATCHKEY(id) ((id << 8) | 0xfd)
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct soundfont_patch_info {
- unsigned short key;
+  unsigned short key;
 #define SNDRV_OSS_SOUNDFONT_PATCH SNDRV_OSS_PATCHKEY(0x07)
- short device_no;
+  short device_no;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short sf_id;
- short optarg;
- int len;
- short type;
+  unsigned short sf_id;
+  short optarg;
+  int len;
+  short type;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SFNT_LOAD_INFO 0
 #define SNDRV_SFNT_LOAD_DATA 1
@@ -46,59 +46,59 @@
 #define SNDRV_SFNT_PROBE_DATA 8
 #define SNDRV_SFNT_REMOVE_INFO 9
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- short reserved;
+  short reserved;
 };
 #define SNDRV_SFNT_PATCH_NAME_LEN 32
 struct soundfont_open_parm {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short type;
+  unsigned short type;
 #define SNDRV_SFNT_PAT_TYPE_MISC 0
 #define SNDRV_SFNT_PAT_TYPE_GUS 6
 #define SNDRV_SFNT_PAT_TYPE_MAP 7
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SFNT_PAT_LOCKED 0x100
 #define SNDRV_SFNT_PAT_SHARED 0x200
- short reserved;
- char name[SNDRV_SFNT_PATCH_NAME_LEN];
+  short reserved;
+  char name[SNDRV_SFNT_PATCH_NAME_LEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct soundfont_voice_parm {
- unsigned short moddelay;
- unsigned short modatkhld;
+  unsigned short moddelay;
+  unsigned short modatkhld;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short moddcysus;
- unsigned short modrelease;
- short modkeyhold, modkeydecay;
- unsigned short voldelay;
+  unsigned short moddcysus;
+  unsigned short modrelease;
+  short modkeyhold, modkeydecay;
+  unsigned short voldelay;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short volatkhld;
- unsigned short voldcysus;
- unsigned short volrelease;
- short volkeyhold, volkeydecay;
+  unsigned short volatkhld;
+  unsigned short voldcysus;
+  unsigned short volrelease;
+  short volkeyhold, volkeydecay;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short lfo1delay;
- unsigned short lfo2delay;
- unsigned short pefe;
- unsigned short fmmod;
+  unsigned short lfo1delay;
+  unsigned short lfo2delay;
+  unsigned short pefe;
+  unsigned short fmmod;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short tremfrq;
- unsigned short fm2frq2;
- unsigned char cutoff;
- unsigned char filterQ;
+  unsigned short tremfrq;
+  unsigned short fm2frq2;
+  unsigned char cutoff;
+  unsigned char filterQ;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char chorus;
- unsigned char reverb;
- unsigned short reserved[4];
+  unsigned char chorus;
+  unsigned char reverb;
+  unsigned short reserved[4];
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct soundfont_voice_info {
- unsigned short sf_id;
- unsigned short sample;
- int start, end;
+  unsigned short sf_id;
+  unsigned short sample;
+  int start, end;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int loopstart, loopend;
- short rate_offset;
- unsigned short mode;
+  int loopstart, loopend;
+  short rate_offset;
+  unsigned short mode;
 #define SNDRV_SFNT_MODE_ROMSOUND 0x8000
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SFNT_MODE_STEREO 1
@@ -106,43 +106,43 @@
 #define SNDRV_SFNT_MODE_NORELEASE 4
 #define SNDRV_SFNT_MODE_INIT_PARM 8
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- short root;
- short tune;
- unsigned char low, high;
- unsigned char vellow, velhigh;
+  short root;
+  short tune;
+  unsigned char low, high;
+  unsigned char vellow, velhigh;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- signed char fixkey, fixvel;
- signed char pan, fixpan;
- short exclusiveClass;
- unsigned char amplitude;
+  signed char fixkey, fixvel;
+  signed char pan, fixpan;
+  short exclusiveClass;
+  unsigned char amplitude;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned char attenuation;
- short scaleTuning;
- struct soundfont_voice_parm parm;
- unsigned short sample_mode;
+  unsigned char attenuation;
+  short scaleTuning;
+  struct soundfont_voice_parm parm;
+  unsigned short sample_mode;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct soundfont_voice_rec_hdr {
- unsigned char bank;
- unsigned char instr;
+  unsigned char bank;
+  unsigned char instr;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- char nvoices;
- char write_mode;
+  char nvoices;
+  char write_mode;
 #define SNDRV_SFNT_WR_APPEND 0
 #define SNDRV_SFNT_WR_EXCLUSIVE 1
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SFNT_WR_REPLACE 2
 };
 struct soundfont_sample_info {
- unsigned short sf_id;
+  unsigned short sf_id;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- unsigned short sample;
- int start, end;
- int loopstart, loopend;
- int size;
+  unsigned short sample;
+  int start, end;
+  int loopstart, loopend;
+  int size;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- short dummy;
- unsigned short mode_flags;
+  short dummy;
+  unsigned short mode_flags;
 #define SNDRV_SFNT_SAMPLE_8BITS 1
 #define SNDRV_SFNT_SAMPLE_UNSIGNED 2
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
@@ -153,22 +153,22 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_SFNT_SAMPLE_STEREO_RIGHT 64
 #define SNDRV_SFNT_SAMPLE_REVERSE_LOOP 128
- unsigned int truesize;
+  unsigned int truesize;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct soundfont_voice_map {
- int map_bank, map_instr, map_key;
- int src_bank, src_instr, src_key;
+  int map_bank, map_instr, map_key;
+  int src_bank, src_instr, src_key;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_EMUX_HWDEP_NAME "Emux WaveTable"
 #define SNDRV_EMUX_VERSION ((1 << 16) | (0 << 8) | 0)
 struct snd_emux_misc_mode {
- int port;
+  int port;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- int mode;
- int value;
- int value2;
+  int mode;
+  int value;
+  int value2;
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDRV_EMUX_IOCTL_VERSION _IOR('H', 0x80, unsigned int)
