diff --git a/libc/kernel/common/linux/mtd/bbm.h b/libc/kernel/common/linux/mtd/bbm.h
index cde3903..e311b23 100644
--- a/libc/kernel/common/linux/mtd/bbm.h
+++ b/libc/kernel/common/linux/mtd/bbm.h
@@ -7,64 +7,69 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_MTD_BBM_H
 #define __LINUX_MTD_BBM_H
+
 #define NAND_MAX_CHIPS 8
+
 struct nand_bbt_descr {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int options;
  int pages[NAND_MAX_CHIPS];
  int offs;
  int veroffs;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t version[NAND_MAX_CHIPS];
  int len;
  int maxblocks;
  int reserved_block_code;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t *pattern;
 };
+
 #define NAND_BBT_NRBITS_MSK 0x0000000F
 #define NAND_BBT_1BIT 0x00000001
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_BBT_2BIT 0x00000002
 #define NAND_BBT_4BIT 0x00000004
 #define NAND_BBT_8BIT 0x00000008
+
 #define NAND_BBT_LASTBLOCK 0x00000010
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 #define NAND_BBT_ABSPAGE 0x00000020
+
 #define NAND_BBT_SEARCH 0x00000040
+
 #define NAND_BBT_PERCHIP 0x00000080
+
 #define NAND_BBT_VERSION 0x00000100
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 #define NAND_BBT_CREATE 0x00000200
+
 #define NAND_BBT_SCANALLPAGES 0x00000400
+
 #define NAND_BBT_SCANEMPTY 0x00000800
+
 #define NAND_BBT_WRITE 0x00001000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 #define NAND_BBT_SAVECONTENT 0x00002000
+
 #define NAND_BBT_SCAN2NDPAGE 0x00004000
+
 #define NAND_BBT_SCAN_MAXBLOCKS 4
+
 #define ONENAND_BADBLOCK_POS 0
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 struct bbm_info {
  int bbt_erase_shift;
  int badblockpos;
  int options;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
  uint8_t *bbt;
+
  int (*isbad_bbt)(struct mtd_info *mtd, loff_t ofs, int allowbbt);
+
  struct nand_bbt_descr *badblock_pattern;
+
  void *priv;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
+
 #endif
diff --git a/libc/kernel/common/linux/mtd/blktrans.h b/libc/kernel/common/linux/mtd/blktrans.h
index e258698..7c40724 100644
--- a/libc/kernel/common/linux/mtd/blktrans.h
+++ b/libc/kernel/common/linux/mtd/blktrans.h
@@ -7,62 +7,57 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __MTD_TRANS_H__
 #define __MTD_TRANS_H__
+
 #include <linux/mutex.h>
+
 struct hd_geometry;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mtd_info;
 struct mtd_blktrans_ops;
 struct file;
 struct inode;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 struct mtd_blktrans_dev {
  struct mtd_blktrans_ops *tr;
  struct list_head list;
  struct mtd_info *mtd;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct mutex lock;
  int devnum;
  int blksize;
  unsigned long size;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int readonly;
  void *blkcore_priv;
 };
+
 struct blkcore_priv;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 struct mtd_blktrans_ops {
  char *name;
  int major;
  int part_bits;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
  int (*readsect)(struct mtd_blktrans_dev *dev,
  unsigned long block, char *buffer);
  int (*writesect)(struct mtd_blktrans_dev *dev,
  unsigned long block, char *buffer);
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
  int (*getgeo)(struct mtd_blktrans_dev *dev, struct hd_geometry *geo);
  int (*flush)(struct mtd_blktrans_dev *dev);
+
  int (*open)(struct mtd_blktrans_dev *dev);
  int (*release)(struct mtd_blktrans_dev *dev);
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
  void (*add_mtd)(struct mtd_blktrans_ops *tr, struct mtd_info *mtd);
  void (*remove_dev)(struct mtd_blktrans_dev *dev);
+
  struct list_head devs;
  struct list_head list;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct module *owner;
+
  struct mtd_blkcore_priv *blkcore_priv;
 };
+
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/mtd/cfi.h b/libc/kernel/common/linux/mtd/cfi.h
index 944bbfa..d7f1ba1 100644
--- a/libc/kernel/common/linux/mtd/cfi.h
+++ b/libc/kernel/common/linux/mtd/cfi.h
@@ -7,233 +7,181 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __MTD_CFI_H__
 #define __MTD_CFI_H__
+
 #include <linux/delay.h>
 #include <linux/types.h>
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/interrupt.h>
 #include <linux/mtd/flashchip.h>
 #include <linux/mtd/map.h>
 #include <linux/mtd/cfi_endian.h>
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 #define cfi_interleave_is_1(cfi) (0)
+
 #define cfi_interleave_is_2(cfi) (0)
+
 #define cfi_interleave_is_4(cfi) (0)
+
 #define cfi_interleave_is_8(cfi) (0)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 #define CFI_DEVICETYPE_X8 (8 / 8)
 #define CFI_DEVICETYPE_X16 (16 / 8)
 #define CFI_DEVICETYPE_X32 (32 / 8)
 #define CFI_DEVICETYPE_X64 (64 / 8)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-struct cfi_ident {
- uint8_t qry[3];
- uint16_t P_ID;
- uint16_t P_ADR;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint16_t A_ID;
- uint16_t A_ADR;
- uint8_t VccMin;
- uint8_t VccMax;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint8_t VppMin;
- uint8_t VppMax;
- uint8_t WordWriteTimeoutTyp;
- uint8_t BufWriteTimeoutTyp;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint8_t BlockEraseTimeoutTyp;
- uint8_t ChipEraseTimeoutTyp;
- uint8_t WordWriteTimeoutMax;
- uint8_t BufWriteTimeoutMax;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint8_t BlockEraseTimeoutMax;
- uint8_t ChipEraseTimeoutMax;
- uint8_t DevSize;
- uint16_t InterfaceDesc;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
- uint16_t MaxBufWriteSize;
- uint8_t NumEraseRegions;
- uint32_t EraseRegionInfo[0];
-} __attribute__((packed));
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 struct cfi_extquery {
  uint8_t pri[3];
  uint8_t MajorVersion;
  uint8_t MinorVersion;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
+
 struct cfi_pri_intelext {
  uint8_t pri[3];
  uint8_t MajorVersion;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t MinorVersion;
  uint32_t FeatureSupport;
  uint8_t SuspendCmdSupport;
  uint16_t BlkStatusRegMask;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t VccOptimal;
  uint8_t VppOptimal;
  uint8_t NumProtectionFields;
  uint16_t ProtRegAddr;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t FactProtRegSize;
  uint8_t UserProtRegSize;
  uint8_t extra[0];
 } __attribute__((packed));
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 struct cfi_intelext_otpinfo {
  uint32_t ProtRegAddr;
  uint16_t FactGroups;
  uint8_t FactProtRegSize;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t UserGroups;
  uint8_t UserProtRegSize;
 } __attribute__((packed));
+
 struct cfi_intelext_blockinfo {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t NumIdentBlocks;
  uint16_t BlockSize;
  uint16_t MinBlockEraseCycles;
  uint8_t BitsPerCell;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t BlockCap;
 } __attribute__((packed));
+
 struct cfi_intelext_regioninfo {
  uint16_t NumIdentPartitions;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t NumOpAllowed;
  uint8_t NumOpAllowedSimProgMode;
  uint8_t NumOpAllowedSimEraMode;
  uint8_t NumBlockTypes;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct cfi_intelext_blockinfo BlockTypes[1];
 } __attribute__((packed));
+
 struct cfi_intelext_programming_regioninfo {
  uint8_t ProgRegShift;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t Reserved1;
  uint8_t ControlValid;
  uint8_t Reserved2;
  uint8_t ControlInvalid;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t Reserved3;
 } __attribute__((packed));
+
 struct cfi_pri_amdstd {
  uint8_t pri[3];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t MajorVersion;
  uint8_t MinorVersion;
  uint8_t SiliconRevision;
  uint8_t EraseSuspend;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t BlkProt;
  uint8_t TmpBlkUnprotect;
  uint8_t BlkProtUnprot;
  uint8_t SimultaneousOps;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t BurstMode;
  uint8_t PageMode;
  uint8_t VppMin;
  uint8_t VppMax;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t TopBottom;
 } __attribute__((packed));
+
 struct cfi_pri_atmel {
  uint8_t pri[3];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t MajorVersion;
  uint8_t MinorVersion;
  uint8_t Features;
  uint8_t BottomBoot;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t BurstMode;
  uint8_t PageMode;
 } __attribute__((packed));
+
 struct cfi_pri_query {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t NumFields;
  uint32_t ProtField[1];
 } __attribute__((packed));
+
 struct cfi_bri_query {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t PageModeReadCap;
  uint8_t NumFields;
  uint32_t ConfField[1];
 } __attribute__((packed));
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 #define P_ID_NONE 0x0000
 #define P_ID_INTEL_EXT 0x0001
 #define P_ID_AMD_STD 0x0002
 #define P_ID_INTEL_STD 0x0003
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define P_ID_AMD_EXT 0x0004
 #define P_ID_WINBOND 0x0006
 #define P_ID_ST_ADV 0x0020
 #define P_ID_MITSUBISHI_STD 0x0100
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define P_ID_MITSUBISHI_EXT 0x0101
 #define P_ID_SST_PAGE 0x0102
 #define P_ID_INTEL_PERFORMANCE 0x0200
 #define P_ID_INTEL_DATA 0x0210
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define P_ID_RESERVED 0xffff
+
 #define CFI_MODE_CFI 1
 #define CFI_MODE_JEDEC 0
+
 struct cfi_private {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t cmdset;
  void *cmdset_priv;
  int interleave;
  int device_type;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int cfi_mode;
  int addr_unlock1;
  int addr_unlock2;
  struct mtd_info *(*cmdset_setup)(struct map_info *);
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct cfi_ident *cfiq;
  int mfr, id;
  int numchips;
  unsigned long chipshift;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  const char *im_name;
  struct flchip chips[0];
 };
+
 #if BITS_PER_LONG >= 64
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #define CMD(x) cfi_build_cmd((x), map, cfi)
 #if BITS_PER_LONG >= 64
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MERGESTATUS(x) cfi_merge_status((x), map, cfi)
-struct cfi_extquery *cfi_read_pri(struct map_info *map, uint16_t adr, uint16_t size,
- const char* name);
+
 struct cfi_fixup {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t mfr;
  uint16_t id;
  void (*fixup)(struct mtd_info *mtd, void* param);
  void* param;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
+
 #define CFI_MFR_ANY 0xffff
 #define CFI_ID_ANY 0xffff
+
 #define CFI_MFR_AMD 0x0001
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CFI_MFR_ATMEL 0x001F
 #define CFI_MFR_ST 0x0020  
+
 typedef int (*varsize_frob_t)(struct map_info *map, struct flchip *chip,
  unsigned long adr, int len, void *thunk);
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 #endif
diff --git a/libc/kernel/common/linux/mtd/cfi_endian.h b/libc/kernel/common/linux/mtd/cfi_endian.h
index 46ab5dc..452091e 100644
--- a/libc/kernel/common/linux/mtd/cfi_endian.h
+++ b/libc/kernel/common/linux/mtd/cfi_endian.h
@@ -7,52 +7,39 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
  ****************************************************************************
  ****************************************************************************/
 #include <asm/byteorder.h>
+
 #define CFI_HOST_ENDIAN
+
 #ifdef CFI_LITTLE_ENDIAN
 #define cpu_to_cfi8(x) (x)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cfi8_to_cpu(x) (x)
 #define cpu_to_cfi16(x) cpu_to_le16(x)
 #define cpu_to_cfi32(x) cpu_to_le32(x)
 #define cpu_to_cfi64(x) cpu_to_le64(x)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cfi16_to_cpu(x) le16_to_cpu(x)
 #define cfi32_to_cpu(x) le32_to_cpu(x)
 #define cfi64_to_cpu(x) le64_to_cpu(x)
 #elif defined (CFI_BIG_ENDIAN)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_to_cfi8(x) (x)
 #define cfi8_to_cpu(x) (x)
 #define cpu_to_cfi16(x) cpu_to_be16(x)
 #define cpu_to_cfi32(x) cpu_to_be32(x)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_to_cfi64(x) cpu_to_be64(x)
 #define cfi16_to_cpu(x) be16_to_cpu(x)
 #define cfi32_to_cpu(x) be32_to_cpu(x)
 #define cfi64_to_cpu(x) be64_to_cpu(x)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #elif defined (CFI_HOST_ENDIAN)
 #define cpu_to_cfi8(x) (x)
 #define cfi8_to_cpu(x) (x)
 #define cpu_to_cfi16(x) (x)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_to_cfi32(x) (x)
 #define cpu_to_cfi64(x) (x)
 #define cfi16_to_cpu(x) (x)
 #define cfi32_to_cpu(x) (x)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cfi64_to_cpu(x) (x)
 #else
 #error No CFI endianness defined
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/mtd/compatmac.h b/libc/kernel/common/linux/mtd/compatmac.h
index 24904ce..143f46a 100644
--- a/libc/kernel/common/linux/mtd/compatmac.h
+++ b/libc/kernel/common/linux/mtd/compatmac.h
@@ -7,15 +7,9 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_MTD_COMPATMAC_H__
 #define __LINUX_MTD_COMPATMAC_H__
+
 #endif
diff --git a/libc/kernel/common/linux/mtd/flashchip.h b/libc/kernel/common/linux/mtd/flashchip.h
index 91eaea8..e441048 100644
--- a/libc/kernel/common/linux/mtd/flashchip.h
+++ b/libc/kernel/common/linux/mtd/flashchip.h
@@ -7,72 +7,62 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __MTD_FLASHCHIP_H__
 #define __MTD_FLASHCHIP_H__
+
 #include <linux/sched.h>
+
 typedef enum {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FL_READY,
  FL_STATUS,
  FL_CFI_QUERY,
  FL_JEDEC_QUERY,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FL_ERASING,
  FL_ERASE_SUSPENDING,
  FL_ERASE_SUSPENDED,
  FL_WRITING,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FL_WRITING_TO_BUFFER,
  FL_OTP_WRITE,
  FL_WRITE_SUSPENDING,
  FL_WRITE_SUSPENDED,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FL_PM_SUSPENDED,
  FL_SYNCING,
  FL_UNLOADING,
  FL_LOCKING,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FL_UNLOCKING,
  FL_POINT,
  FL_XIP_WHILE_ERASING,
  FL_XIP_WHILE_WRITING,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FL_UNKNOWN
 } flstate_t;
+
 struct flchip {
  unsigned long start;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
  int ref_point_counter;
  flstate_t state;
  flstate_t oldstate;
+
  unsigned int write_suspended:1;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int erase_suspended:1;
  unsigned long in_progress_block_addr;
+
  spinlock_t *mutex;
  spinlock_t _spinlock;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  wait_queue_head_t wq;
  int word_write_time;
  int buffer_write_time;
  int erase_time;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
  void *priv;
 };
+
 struct flchip_shared {
  spinlock_t lock;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct flchip *writing;
  struct flchip *erasing;
 };
+
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/mtd/map.h b/libc/kernel/common/linux/mtd/map.h
index 803772f..87124bc 100644
--- a/libc/kernel/common/linux/mtd/map.h
+++ b/libc/kernel/common/linux/mtd/map.h
@@ -7,100 +7,96 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_MTD_MAP_H__
 #define __LINUX_MTD_MAP_H__
+
 #include <linux/types.h>
 #include <linux/list.h>
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/string.h>
+
 #include <linux/mtd/compatmac.h>
+
 #include <asm/unaligned.h>
 #include <asm/system.h>
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/io.h>
+
 #define map_bankwidth_is_1(map) (0)
+
 #define map_bankwidth_is_2(map) (0)
+
 #define map_bankwidth_is_4(map) (0)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 #define map_calc_words(map) ((map_bankwidth(map) + (sizeof(unsigned long)-1))/ sizeof(unsigned long))
+
 #define map_bankwidth_is_8(map) (0)
+
 #define map_bankwidth_is_16(map) (0)
+
 #define map_bankwidth_is_32(map) (0)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 #ifndef map_bankwidth
 #error "No bus width supported. What's the point?"
 #endif
+
 #define MAX_MAP_LONGS ( ((MAX_MAP_BANKWIDTH*8) + BITS_PER_LONG - 1) / BITS_PER_LONG )
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-typedef union {
- unsigned long x[MAX_MAP_LONGS];
-} map_word;
+
 struct map_info {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char *name;
  unsigned long size;
  unsigned long phys;
 #define NO_XIP (-1UL)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
  void __iomem *virt;
  void *cached;
+
  int bankwidth;
+
  void (*inval_cache)(struct map_info *, unsigned long, ssize_t);
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
  void (*set_vpp)(struct map_info *, int);
+
  unsigned long map_priv_1;
  unsigned long map_priv_2;
  void *fldrv_priv;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct mtd_chip_driver *fldrv;
 };
+
 struct mtd_chip_driver {
  struct mtd_info *(*probe)(struct map_info *map);
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*destroy)(struct mtd_info *);
  struct module *module;
  char *name;
  struct list_head list;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
+
 struct mtd_info *do_map_probe(const char *name, struct map_info *map);
+
 #define ENABLE_VPP(map) do { if(map->set_vpp) map->set_vpp(map, 1); } while(0)
 #define DISABLE_VPP(map) do { if(map->set_vpp) map->set_vpp(map, 0); } while(0)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 #define INVALIDATE_CACHED_RANGE(map, from, size)   do { if(map->inval_cache) map->inval_cache(map, from, size); } while(0)
+
 #define map_word_andequal(m, a, b, z) map_word_equal(m, z, map_word_and(m, a, b))
 #if BITS_PER_LONG >= 64
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __LITTLE_ENDIAN
 #else
 #endif
 #if BITS_PER_LONG < 64
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAP_FF_LIMIT 4
 #else
 #define MAP_FF_LIMIT 8
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #if BITS_PER_LONG >= 64
 #endif
 #if BITS_PER_LONG >= 64
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define map_read(map, ofs) inline_map_read(map, ofs)
 #define map_copy_from(map, to, from, len) inline_map_copy_from(map, to, from, len)
 #define map_write(map, datum, ofs) inline_map_write(map, datum, ofs)
 #define map_copy_to(map, to, from, len) inline_map_copy_to(map, to, from, len)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define simple_map_init(map) BUG_ON(!map_bankwidth_supported((map)->bankwidth))
 #define map_is_linear(map) ({ (void)(map); 1; })
 #endif
diff --git a/libc/kernel/common/linux/mtd/mtd.h b/libc/kernel/common/linux/mtd/mtd.h
index 90ffcfc..300813c 100644
--- a/libc/kernel/common/linux/mtd/mtd.h
+++ b/libc/kernel/common/linux/mtd/mtd.h
@@ -7,145 +7,147 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __MTD_MTD_H__
 #define __MTD_MTD_H__
+
 #error This is a kernel header. Perhaps include mtd-user.h instead?
+
 #include <linux/types.h>
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/module.h>
 #include <linux/uio.h>
 #include <linux/notifier.h>
+
 #include <linux/mtd/compatmac.h>
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <mtd/mtd-abi.h>
+
 #define MTD_CHAR_MAJOR 90
 #define MTD_BLOCK_MAJOR 31
 #define MAX_MTD_DEVICES 16
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 #define MTD_ERASE_PENDING 0x01
 #define MTD_ERASING 0x02
 #define MTD_ERASE_SUSPEND 0x04
 #define MTD_ERASE_DONE 0x08
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTD_ERASE_FAILED 0x10
+
 struct erase_info {
  struct mtd_info *mtd;
  u_int32_t addr;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t len;
  u_int32_t fail_addr;
  u_long time;
  u_long retries;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int dev;
  u_int cell;
  void (*callback) (struct erase_info *self);
  u_long priv;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_char state;
  struct erase_info *next;
 };
+
 struct mtd_erase_region_info {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t offset;
  u_int32_t erasesize;
  u_int32_t numblocks;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 typedef enum {
  MTD_OOB_PLACE,
  MTD_OOB_AUTO,
  MTD_OOB_RAW,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } mtd_oob_mode_t;
+
 struct mtd_oob_ops {
  mtd_oob_mode_t mode;
  size_t len;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  size_t retlen;
  size_t ooblen;
  uint32_t ooboffs;
  uint8_t *datbuf;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t *oobbuf;
 };
+
 struct mtd_info {
  u_char type;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t flags;
  u_int32_t size;
+
  u_int32_t erasesize;
+
  u_int32_t writesize;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
  u_int32_t oobsize;
  u_int32_t ecctype;
  u_int32_t eccsize;
+
 #define MTD_PROGREGION_CTRLMODE_VALID(mtd) (mtd)->oobsize
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTD_PROGREGION_CTRLMODE_INVALID(mtd) (mtd)->ecctype
+
  char *name;
  int index;
+
  struct nand_ecclayout *ecclayout;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
  int numeraseregions;
  struct mtd_erase_region_info *eraseregions;
+
  u_int32_t bank_size;
+
  int (*erase) (struct mtd_info *mtd, struct erase_info *instr);
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
  int (*point) (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char **mtdbuf);
+
  void (*unpoint) (struct mtd_info *mtd, u_char * addr, loff_t from, size_t len);
+
  int (*read) (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf);
  int (*write) (struct mtd_info *mtd, loff_t to, size_t len, size_t *retlen, const u_char *buf);
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
  int (*read_oob) (struct mtd_info *mtd, loff_t from,
  struct mtd_oob_ops *ops);
  int (*write_oob) (struct mtd_info *mtd, loff_t to,
  struct mtd_oob_ops *ops);
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
  int (*get_fact_prot_info) (struct mtd_info *mtd, struct otp_info *buf, size_t len);
  int (*read_fact_prot_reg) (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf);
  int (*get_user_prot_info) (struct mtd_info *mtd, struct otp_info *buf, size_t len);
  int (*read_user_prot_reg) (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf);
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*write_user_prot_reg) (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf);
  int (*lock_user_prot_reg) (struct mtd_info *mtd, loff_t from, size_t len);
+
  int (*writev) (struct mtd_info *mtd, const struct kvec *vecs, unsigned long count, loff_t to, size_t *retlen);
+
  void (*sync) (struct mtd_info *mtd);
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
  int (*lock) (struct mtd_info *mtd, loff_t ofs, size_t len);
  int (*unlock) (struct mtd_info *mtd, loff_t ofs, size_t len);
+
  int (*suspend) (struct mtd_info *mtd);
  void (*resume) (struct mtd_info *mtd);
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
  int (*block_isbad) (struct mtd_info *mtd, loff_t ofs);
  int (*block_markbad) (struct mtd_info *mtd, loff_t ofs);
+
  struct notifier_block reboot_notifier;
+
  struct mtd_ecc_stats ecc_stats;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
  void *priv;
+
  struct module *owner;
  int usecount;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 struct mtd_notifier {
  void (*add)(struct mtd_info *mtd);
  void (*remove)(struct mtd_info *mtd);
  struct list_head list;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
+
 #define MTD_DEBUG_LEVEL0 (0)  
 #define MTD_DEBUG_LEVEL1 (1)  
 #define MTD_DEBUG_LEVEL2 (2)  
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTD_DEBUG_LEVEL3 (3)  
 #define DEBUG(n, args...) do { } while(0)
 #endif
diff --git a/libc/kernel/common/linux/mtd/nand.h b/libc/kernel/common/linux/mtd/nand.h
index cb9b13a..36e9fb4 100644
--- a/libc/kernel/common/linux/mtd/nand.h
+++ b/libc/kernel/common/linux/mtd/nand.h
@@ -7,308 +7,313 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_MTD_NAND_H
 #define __LINUX_MTD_NAND_H
+
 #include <linux/wait.h>
 #include <linux/spinlock.h>
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/mtd/mtd.h>
+
 struct mtd_info;
+
 #define NAND_MAX_CHIPS 8
+
 #define NAND_MAX_OOBSIZE 64
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_MAX_PAGESIZE 2048
+
 #define NAND_NCE 0x01
+
 #define NAND_CLE 0x02
+
 #define NAND_ALE 0x04
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 #define NAND_CTRL_CLE (NAND_NCE | NAND_CLE)
 #define NAND_CTRL_ALE (NAND_NCE | NAND_ALE)
 #define NAND_CTRL_CHANGE 0x80
+
 #define NAND_CMD_READ0 0
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_CMD_READ1 1
 #define NAND_CMD_RNDOUT 5
 #define NAND_CMD_PAGEPROG 0x10
 #define NAND_CMD_READOOB 0x50
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_CMD_ERASE1 0x60
 #define NAND_CMD_STATUS 0x70
 #define NAND_CMD_STATUS_MULTI 0x71
 #define NAND_CMD_SEQIN 0x80
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_CMD_RNDIN 0x85
 #define NAND_CMD_READID 0x90
 #define NAND_CMD_ERASE2 0xd0
 #define NAND_CMD_RESET 0xff
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 #define NAND_CMD_READSTART 0x30
 #define NAND_CMD_RNDOUTSTART 0xE0
 #define NAND_CMD_CACHEDPROG 0x15
+
 #define NAND_CMD_DEPLETE1 0x100
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_CMD_DEPLETE2 0x38
 #define NAND_CMD_STATUS_MULTI 0x71
 #define NAND_CMD_STATUS_ERROR 0x72
+
 #define NAND_CMD_STATUS_ERROR0 0x73
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_CMD_STATUS_ERROR1 0x74
 #define NAND_CMD_STATUS_ERROR2 0x75
 #define NAND_CMD_STATUS_ERROR3 0x76
 #define NAND_CMD_STATUS_RESET 0x7f
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_CMD_STATUS_CLEAR 0xff
+
 #define NAND_CMD_NONE -1
+
 #define NAND_STATUS_FAIL 0x01
 #define NAND_STATUS_FAIL_N1 0x02
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_STATUS_TRUE_READY 0x20
 #define NAND_STATUS_READY 0x40
 #define NAND_STATUS_WP 0x80
+
 typedef enum {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NAND_ECC_NONE,
  NAND_ECC_SOFT,
  NAND_ECC_HW,
  NAND_ECC_HW_SYNDROME,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } nand_ecc_modes_t;
+
 #define NAND_ECC_READ 0
+
 #define NAND_ECC_WRITE 1
+
 #define NAND_ECC_READSYN 2
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 #define NAND_GET_DEVICE 0x80
+
 #define NAND_NO_AUTOINCR 0x00000001
+
 #define NAND_BUSWIDTH_16 0x00000002
+
 #define NAND_NO_PADDING 0x00000004
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 #define NAND_CACHEPRG 0x00000008
+
 #define NAND_COPYBACK 0x00000010
+
 #define NAND_IS_AND 0x00000020
+
 #define NAND_4PAGE_ARRAY 0x00000040
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 #define BBT_AUTO_REFRESH 0x00000080
+
 #define NAND_NO_READRDY 0x00000100
+
 #define NAND_SAMSUNG_LP_OPTIONS   (NAND_NO_PADDING | NAND_CACHEPRG | NAND_COPYBACK)
+
 #define NAND_CANAUTOINCR(chip) (!(chip->options & NAND_NO_AUTOINCR))
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_MUST_PAD(chip) (!(chip->options & NAND_NO_PADDING))
 #define NAND_HAS_CACHEPROG(chip) ((chip->options & NAND_CACHEPRG))
 #define NAND_HAS_COPYBACK(chip) ((chip->options & NAND_COPYBACK))
+
 #define NAND_CHIPOPTIONS_MSK (0x0000ffff & ~NAND_NO_AUTOINCR)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 #define NAND_USE_FLASH_BBT 0x00010000
+
 #define NAND_SKIP_BBTSCAN 0x00020000
+
 #define NAND_CONTROLLER_ALLOC 0x80000000
+
 typedef enum {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FL_READY,
  FL_READING,
  FL_WRITING,
  FL_ERASING,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FL_SYNCING,
  FL_CACHEDPRG,
  FL_PM_SUSPENDED,
 } nand_state_t;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 struct nand_chip;
+
 struct nand_hw_control {
  spinlock_t lock;
  struct nand_chip *active;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  wait_queue_head_t wq;
 };
+
 struct nand_ecc_ctrl {
  nand_ecc_modes_t mode;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int steps;
  int size;
  int bytes;
  int total;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int prepad;
  int postpad;
  struct nand_ecclayout *layout;
  void (*hwctl)(struct mtd_info *mtd, int mode);
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*calculate)(struct mtd_info *mtd,
  const uint8_t *dat,
  uint8_t *ecc_code);
  int (*correct)(struct mtd_info *mtd, uint8_t *dat,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t *read_ecc,
  uint8_t *calc_ecc);
  int (*read_page)(struct mtd_info *mtd,
  struct nand_chip *chip,
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t *buf);
  void (*write_page)(struct mtd_info *mtd,
  struct nand_chip *chip,
  const uint8_t *buf);
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*read_oob)(struct mtd_info *mtd,
  struct nand_chip *chip,
  int page,
  int sndcmd);
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*write_oob)(struct mtd_info *mtd,
  struct nand_chip *chip,
  int page);
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 struct nand_buffers {
  uint8_t ecccalc[NAND_MAX_OOBSIZE];
  uint8_t ecccode[NAND_MAX_OOBSIZE];
  uint8_t oobwbuf[NAND_MAX_OOBSIZE];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t databuf[NAND_MAX_PAGESIZE];
  uint8_t oobrbuf[NAND_MAX_OOBSIZE];
 };
+
 struct nand_chip {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void __iomem *IO_ADDR_R;
  void __iomem *IO_ADDR_W;
+
  uint8_t (*read_byte)(struct mtd_info *mtd);
  u16 (*read_word)(struct mtd_info *mtd);
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*write_buf)(struct mtd_info *mtd, const uint8_t *buf, int len);
  void (*read_buf)(struct mtd_info *mtd, uint8_t *buf, int len);
  int (*verify_buf)(struct mtd_info *mtd, const uint8_t *buf, int len);
  void (*select_chip)(struct mtd_info *mtd, int chip);
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*block_bad)(struct mtd_info *mtd, loff_t ofs, int getchip);
  int (*block_markbad)(struct mtd_info *mtd, loff_t ofs);
  void (*cmd_ctrl)(struct mtd_info *mtd, int dat,
  unsigned int ctrl);
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*dev_ready)(struct mtd_info *mtd);
  void (*cmdfunc)(struct mtd_info *mtd, unsigned command, int column, int page_addr);
  int (*waitfunc)(struct mtd_info *mtd, struct nand_chip *this);
  void (*erase_cmd)(struct mtd_info *mtd, int page);
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*scan_bbt)(struct mtd_info *mtd);
  int (*errstat)(struct mtd_info *mtd, struct nand_chip *this, int state, int status, int page);
+
  int chip_delay;
  unsigned int options;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
  int page_shift;
  int phys_erase_shift;
  int bbt_erase_shift;
  int chip_shift;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int numchips;
  unsigned long chipsize;
  int pagemask;
  int pagebuf;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int badblockpos;
+
  nand_state_t state;
+
  uint8_t *oob_poi;
  struct nand_hw_control *controller;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nand_ecclayout *ecclayout;
+
  struct nand_ecc_ctrl ecc;
  struct nand_buffers buffers;
  struct nand_hw_control hwcontrol;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
  struct mtd_oob_ops ops;
+
  uint8_t *bbt;
  struct nand_bbt_descr *bbt_td;
  struct nand_bbt_descr *bbt_md;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
  struct nand_bbt_descr *badblock_pattern;
+
  void *priv;
 };
+
 #define NAND_MFR_TOSHIBA 0x98
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_MFR_SAMSUNG 0xec
 #define NAND_MFR_FUJITSU 0x04
 #define NAND_MFR_NATIONAL 0x8f
 #define NAND_MFR_RENESAS 0x07
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_MFR_STMICRO 0x20
 #define NAND_MFR_HYNIX 0xad
+
 struct nand_flash_dev {
  char *name;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int id;
  unsigned long pagesize;
  unsigned long chipsize;
  unsigned long erasesize;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long options;
 };
+
 struct nand_manufacturers {
  int id;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char * name;
 };
+
 struct nand_bbt_descr {
  int options;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int pages[NAND_MAX_CHIPS];
  int offs;
  int veroffs;
  uint8_t version[NAND_MAX_CHIPS];
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int len;
  int maxblocks;
  int reserved_block_code;
  uint8_t *pattern;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
+
 #define NAND_BBT_NRBITS_MSK 0x0000000F
 #define NAND_BBT_1BIT 0x00000001
 #define NAND_BBT_2BIT 0x00000002
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_BBT_4BIT 0x00000004
 #define NAND_BBT_8BIT 0x00000008
+
 #define NAND_BBT_LASTBLOCK 0x00000010
+
 #define NAND_BBT_ABSPAGE 0x00000020
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 #define NAND_BBT_SEARCH 0x00000040
+
 #define NAND_BBT_PERCHIP 0x00000080
+
 #define NAND_BBT_VERSION 0x00000100
+
 #define NAND_BBT_CREATE 0x00000200
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 #define NAND_BBT_SCANALLPAGES 0x00000400
+
 #define NAND_BBT_SCANEMPTY 0x00000800
+
 #define NAND_BBT_WRITE 0x00001000
+
 #define NAND_BBT_SAVECONTENT 0x00002000
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 #define NAND_BBT_SCAN2NDPAGE 0x00004000
+
 #define NAND_BBT_SCAN_MAXBLOCKS 4
+
 #define NAND_SMALL_BADBLOCK_POS 5
 #define NAND_LARGE_BADBLOCK_POS 0
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 struct platform_nand_chip {
  int nr_chips;
  int chip_offset;
  int nr_partitions;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct mtd_partition *partitions;
  struct nand_ecclayout *ecclayout;
  int chip_delay;
  unsigned int options;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *priv;
 };
+
 struct platform_nand_ctrl {
  void (*hwcontrol)(struct mtd_info *mtd, int cmd);
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*dev_ready)(struct mtd_info *mtd);
  void (*select_chip)(struct mtd_info *mtd, int chip);
  void *priv;
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 #endif
diff --git a/libc/kernel/common/linux/mtd/nand_ecc.h b/libc/kernel/common/linux/mtd/nand_ecc.h
index e7dbe1a..3e817f4 100644
--- a/libc/kernel/common/linux/mtd/nand_ecc.h
+++ b/libc/kernel/common/linux/mtd/nand_ecc.h
@@ -7,17 +7,11 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __MTD_NAND_ECC_H__
 #define __MTD_NAND_ECC_H__
+
 struct mtd_info;
+
 #endif
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/mtd/nftl.h b/libc/kernel/common/linux/mtd/nftl.h
index 75cdf54..da7320e 100644
--- a/libc/kernel/common/linux/mtd/nftl.h
+++ b/libc/kernel/common/linux/mtd/nftl.h
@@ -7,58 +7,49 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __MTD_NFTL_H__
 #define __MTD_NFTL_H__
+
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/blktrans.h>
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 #include <mtd/nftl-user.h>
+
 #define BLOCK_NIL 0xffff  
 #define BLOCK_FREE 0xfffe  
 #define BLOCK_NOTEXPLORED 0xfffd  
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BLOCK_RESERVED 0xfffc  
+
 struct NFTLrecord {
  struct mtd_blktrans_dev mbd;
  __u16 MediaUnit, SpareMediaUnit;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 EraseSize;
  struct NFTLMediaHeader MediaHdr;
  int usecount;
  unsigned char heads;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char sectors;
  unsigned short cylinders;
  __u16 numvunits;
  __u16 lastEUN;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 numfreeEUNs;
  __u16 LastFreeEUN;
  int head,sect,cyl;
  __u16 *EUNtable;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 *ReplUnitTable;
  unsigned int nb_blocks;
  unsigned int nb_boot_blocks;
  struct erase_info instr;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nand_ecclayout oobinfo;
 };
+
 #ifndef NFTL_MAJOR
 #define NFTL_MAJOR 93
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
+
 #define MAX_NFTLS 16
 #define MAX_SECTORS_PER_UNIT 64
 #define NFTL_PARTN_BITS 4
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 #endif
diff --git a/libc/kernel/common/linux/mtd/onenand_regs.h b/libc/kernel/common/linux/mtd/onenand_regs.h
index 662ffc9..a39c78f 100644
--- a/libc/kernel/common/linux/mtd/onenand_regs.h
+++ b/libc/kernel/common/linux/mtd/onenand_regs.h
@@ -7,150 +7,137 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ONENAND_REG_H
 #define __ONENAND_REG_H
+
 #define ONENAND_MEMORY_MAP(x) ((x) << 1)
+
 #define ONENAND_BOOTRAM ONENAND_MEMORY_MAP(0x0000)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_DATARAM ONENAND_MEMORY_MAP(0x0200)
 #define ONENAND_SPARERAM ONENAND_MEMORY_MAP(0x8010)
+
 #define ONENAND_REG_MANUFACTURER_ID ONENAND_MEMORY_MAP(0xF000)
 #define ONENAND_REG_DEVICE_ID ONENAND_MEMORY_MAP(0xF001)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_REG_VERSION_ID ONENAND_MEMORY_MAP(0xF002)
 #define ONENAND_REG_DATA_BUFFER_SIZE ONENAND_MEMORY_MAP(0xF003)
 #define ONENAND_REG_BOOT_BUFFER_SIZE ONENAND_MEMORY_MAP(0xF004)
 #define ONENAND_REG_NUM_BUFFERS ONENAND_MEMORY_MAP(0xF005)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_REG_TECHNOLOGY ONENAND_MEMORY_MAP(0xF006)
+
 #define ONENAND_REG_START_ADDRESS1 ONENAND_MEMORY_MAP(0xF100)
 #define ONENAND_REG_START_ADDRESS2 ONENAND_MEMORY_MAP(0xF101)
 #define ONENAND_REG_START_ADDRESS3 ONENAND_MEMORY_MAP(0xF102)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_REG_START_ADDRESS4 ONENAND_MEMORY_MAP(0xF103)
 #define ONENAND_REG_START_ADDRESS5 ONENAND_MEMORY_MAP(0xF104)
 #define ONENAND_REG_START_ADDRESS6 ONENAND_MEMORY_MAP(0xF105)
 #define ONENAND_REG_START_ADDRESS7 ONENAND_MEMORY_MAP(0xF106)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_REG_START_ADDRESS8 ONENAND_MEMORY_MAP(0xF107)
+
 #define ONENAND_REG_START_BUFFER ONENAND_MEMORY_MAP(0xF200)
 #define ONENAND_REG_COMMAND ONENAND_MEMORY_MAP(0xF220)
 #define ONENAND_REG_SYS_CFG1 ONENAND_MEMORY_MAP(0xF221)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_REG_SYS_CFG2 ONENAND_MEMORY_MAP(0xF222)
 #define ONENAND_REG_CTRL_STATUS ONENAND_MEMORY_MAP(0xF240)
 #define ONENAND_REG_INTERRUPT ONENAND_MEMORY_MAP(0xF241)
 #define ONENAND_REG_START_BLOCK_ADDRESS ONENAND_MEMORY_MAP(0xF24C)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_REG_END_BLOCK_ADDRESS ONENAND_MEMORY_MAP(0xF24D)
 #define ONENAND_REG_WP_STATUS ONENAND_MEMORY_MAP(0xF24E)
+
 #define ONENAND_REG_ECC_STATUS ONENAND_MEMORY_MAP(0xFF00)
 #define ONENAND_REG_ECC_M0 ONENAND_MEMORY_MAP(0xFF01)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_REG_ECC_S0 ONENAND_MEMORY_MAP(0xFF02)
 #define ONENAND_REG_ECC_M1 ONENAND_MEMORY_MAP(0xFF03)
 #define ONENAND_REG_ECC_S1 ONENAND_MEMORY_MAP(0xFF04)
 #define ONENAND_REG_ECC_M2 ONENAND_MEMORY_MAP(0xFF05)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_REG_ECC_S2 ONENAND_MEMORY_MAP(0xFF06)
 #define ONENAND_REG_ECC_M3 ONENAND_MEMORY_MAP(0xFF07)
 #define ONENAND_REG_ECC_S3 ONENAND_MEMORY_MAP(0xFF08)
+
 #define ONENAND_DEVICE_DENSITY_SHIFT (4)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_DEVICE_IS_DDP (1 << 3)
 #define ONENAND_DEVICE_IS_DEMUX (1 << 2)
 #define ONENAND_DEVICE_VCC_MASK (0x3)
+
 #define ONENAND_DEVICE_DENSITY_512Mb (0x002)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 #define ONENAND_VERSION_PROCESS_SHIFT (8)
+
 #define ONENAND_DDP_SHIFT (15)
+
 #define ONENAND_FPA_MASK (0x3f)
 #define ONENAND_FPA_SHIFT (2)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_FSA_MASK (0x03)
+
 #define ONENAND_BSA_MASK (0x03)
 #define ONENAND_BSA_SHIFT (8)
 #define ONENAND_BSA_BOOTRAM (0 << 2)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_BSA_DATARAM0 (2 << 2)
 #define ONENAND_BSA_DATARAM1 (3 << 2)
 #define ONENAND_BSC_MASK (0x03)
+
 #define ONENAND_CMD_READ (0x00)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_CMD_READOOB (0x13)
 #define ONENAND_CMD_PROG (0x80)
 #define ONENAND_CMD_PROGOOB (0x1A)
 #define ONENAND_CMD_UNLOCK (0x23)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_CMD_LOCK (0x2A)
 #define ONENAND_CMD_LOCK_TIGHT (0x2C)
 #define ONENAND_CMD_ERASE (0x94)
 #define ONENAND_CMD_RESET (0xF0)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_CMD_OTP_ACCESS (0x65)
 #define ONENAND_CMD_READID (0x90)
+
 #define ONENAND_CMD_BUFFERRAM (0x1978)
+
 #define ONENAND_SYS_CFG1_SYNC_READ (1 << 15)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_SYS_CFG1_BRL_7 (7 << 12)
 #define ONENAND_SYS_CFG1_BRL_6 (6 << 12)
 #define ONENAND_SYS_CFG1_BRL_5 (5 << 12)
 #define ONENAND_SYS_CFG1_BRL_4 (4 << 12)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_SYS_CFG1_BRL_3 (3 << 12)
 #define ONENAND_SYS_CFG1_BRL_10 (2 << 12)
 #define ONENAND_SYS_CFG1_BRL_9 (1 << 12)
 #define ONENAND_SYS_CFG1_BRL_8 (0 << 12)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_SYS_CFG1_BRL_SHIFT (12)
 #define ONENAND_SYS_CFG1_BL_32 (4 << 9)
 #define ONENAND_SYS_CFG1_BL_16 (3 << 9)
 #define ONENAND_SYS_CFG1_BL_8 (2 << 9)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_SYS_CFG1_BL_4 (1 << 9)
 #define ONENAND_SYS_CFG1_BL_CONT (0 << 9)
 #define ONENAND_SYS_CFG1_BL_SHIFT (9)
 #define ONENAND_SYS_CFG1_NO_ECC (1 << 8)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_SYS_CFG1_RDY (1 << 7)
 #define ONENAND_SYS_CFG1_INT (1 << 6)
 #define ONENAND_SYS_CFG1_IOBE (1 << 5)
 #define ONENAND_SYS_CFG1_RDY_CONF (1 << 4)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 #define ONENAND_CTRL_ONGO (1 << 15)
 #define ONENAND_CTRL_LOCK (1 << 14)
 #define ONENAND_CTRL_LOAD (1 << 13)
 #define ONENAND_CTRL_PROGRAM (1 << 12)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_CTRL_ERASE (1 << 11)
 #define ONENAND_CTRL_ERROR (1 << 10)
 #define ONENAND_CTRL_RSTB (1 << 7)
 #define ONENAND_CTRL_OTP_L (1 << 6)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_CTRL_OTP_BL (1 << 5)
+
 #define ONENAND_INT_MASTER (1 << 15)
 #define ONENAND_INT_READ (1 << 7)
 #define ONENAND_INT_WRITE (1 << 6)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_INT_ERASE (1 << 5)
 #define ONENAND_INT_RESET (1 << 4)
 #define ONENAND_INT_CLEAR (0 << 0)
+
 #define ONENAND_WP_US (1 << 2)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_WP_LS (1 << 1)
 #define ONENAND_WP_LTS (1 << 0)
+
 #define ONENAND_ECC_1BIT (1 << 0)
 #define ONENAND_ECC_2BIT (1 << 1)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_ECC_2BIT_ALL (0xAAAA)
+
 #define ONENAND_OTP_LOCK_OFFSET (14)
+
 #endif
diff --git a/libc/kernel/common/linux/mtd/partitions.h b/libc/kernel/common/linux/mtd/partitions.h
index c1f106e..aeb15e1 100644
--- a/libc/kernel/common/linux/mtd/partitions.h
+++ b/libc/kernel/common/linux/mtd/partitions.h
@@ -7,39 +7,34 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef MTD_PARTITIONS_H
 #define MTD_PARTITIONS_H
+
 #include <linux/types.h>
+
 struct mtd_partition {
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char *name;
  u_int32_t size;
  u_int32_t offset;
  u_int32_t mask_flags;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nand_ecclayout *ecclayout;
  struct mtd_info **mtdp;
 };
+
 #define MTDPART_OFS_NXTBLK (-2)
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTDPART_OFS_APPEND (-1)
 #define MTDPART_SIZ_FULL (0)
+
 struct mtd_part_parser {
  struct list_head list;
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct module *owner;
  const char *name;
  int (*parse_fn)(struct mtd_info *, struct mtd_partition **, unsigned long);
 };
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+
 #define put_partition_parser(p) do { module_put((p)->owner); } while(0)
+
 #endif
+
