| .. | .. |
|---|
| 1 | +/* SPDX-License-Identifier: GPL-2.0-only */ |
|---|
| 1 | 2 | /* |
|---|
| 2 | 3 | * linux/include/linux/mmc/card.h |
|---|
| 3 | | - * |
|---|
| 4 | | - * This program is free software; you can redistribute it and/or modify |
|---|
| 5 | | - * it under the terms of the GNU General Public License version 2 as |
|---|
| 6 | | - * published by the Free Software Foundation. |
|---|
| 7 | 4 | * |
|---|
| 8 | 5 | * Card driver specific definitions. |
|---|
| 9 | 6 | */ |
|---|
| .. | .. |
|---|
| 12 | 9 | |
|---|
| 13 | 10 | #include <linux/device.h> |
|---|
| 14 | 11 | #include <linux/mod_devicetable.h> |
|---|
| 12 | +#include <linux/android_kabi.h> |
|---|
| 15 | 13 | |
|---|
| 16 | 14 | struct mmc_cid { |
|---|
| 17 | 15 | unsigned int manfid; |
|---|
| .. | .. |
|---|
| 51 | 49 | u8 sec_feature_support; |
|---|
| 52 | 50 | u8 rel_sectors; |
|---|
| 53 | 51 | u8 rel_param; |
|---|
| 52 | + bool enhanced_rpmb_supported; |
|---|
| 54 | 53 | u8 part_config; |
|---|
| 55 | 54 | u8 cache_ctrl; |
|---|
| 56 | 55 | u8 rst_n_function; |
|---|
| .. | .. |
|---|
| 133 | 132 | struct sd_scr { |
|---|
| 134 | 133 | unsigned char sda_vsn; |
|---|
| 135 | 134 | unsigned char sda_spec3; |
|---|
| 135 | + unsigned char sda_spec4; |
|---|
| 136 | + unsigned char sda_specx; |
|---|
| 136 | 137 | unsigned char bus_widths; |
|---|
| 137 | 138 | #define SD_SCR_BUS_WIDTH_1 (1<<0) |
|---|
| 138 | 139 | #define SD_SCR_BUS_WIDTH_4 (1<<2) |
|---|
| .. | .. |
|---|
| 236 | 237 | #define MMC_BLK_DATA_AREA_BOOT (1<<1) |
|---|
| 237 | 238 | #define MMC_BLK_DATA_AREA_GP (1<<2) |
|---|
| 238 | 239 | #define MMC_BLK_DATA_AREA_RPMB (1<<3) |
|---|
| 240 | + |
|---|
| 241 | + ANDROID_KABI_RESERVE(1); |
|---|
| 239 | 242 | }; |
|---|
| 240 | 243 | |
|---|
| 241 | 244 | /* |
|---|
| .. | .. |
|---|
| 270 | 273 | #define MMC_QUIRK_BROKEN_IRQ_POLLING (1<<11) /* Polling SDIO_CCCR_INTx could create a fake interrupt */ |
|---|
| 271 | 274 | #define MMC_QUIRK_TRIM_BROKEN (1<<12) /* Skip trim */ |
|---|
| 272 | 275 | #define MMC_QUIRK_BROKEN_HPI (1<<13) /* Disable broken HPI support */ |
|---|
| 276 | +#define MMC_QUIRK_BROKEN_SD_DISCARD (1<<14) /* Disable broken SD discard support */ |
|---|
| 273 | 277 | |
|---|
| 274 | 278 | bool reenable_cmdq; /* Re-enable Command Queue */ |
|---|
| 275 | 279 | |
|---|
| .. | .. |
|---|
| 277 | 281 | unsigned int erase_shift; /* if erase unit is power 2 */ |
|---|
| 278 | 282 | unsigned int pref_erase; /* in sectors */ |
|---|
| 279 | 283 | unsigned int eg_boundary; /* don't cross erase-group boundaries */ |
|---|
| 284 | + unsigned int erase_arg; /* erase / trim / discard */ |
|---|
| 280 | 285 | u8 erased_byte; /* value of erased bytes */ |
|---|
| 281 | 286 | |
|---|
| 282 | 287 | u32 raw_cid[4]; /* raw card CID */ |
|---|
| .. | .. |
|---|
| 291 | 296 | struct sd_switch_caps sw_caps; /* switch (CMD6) caps */ |
|---|
| 292 | 297 | |
|---|
| 293 | 298 | unsigned int sdio_funcs; /* number of SDIO functions */ |
|---|
| 299 | + atomic_t sdio_funcs_probed; /* number of probed SDIO funcs */ |
|---|
| 294 | 300 | struct sdio_cccr cccr; /* common card info */ |
|---|
| 295 | 301 | struct sdio_cis cis; /* common tuple info */ |
|---|
| 296 | 302 | struct sdio_func *sdio_func[SDIO_MAX_FUNCS]; /* SDIO functions (devices) */ |
|---|
| 297 | 303 | struct sdio_func *sdio_single_irq; /* SDIO function when only one IRQ active */ |
|---|
| 304 | + u8 major_rev; /* major revision number */ |
|---|
| 305 | + u8 minor_rev; /* minor revision number */ |
|---|
| 298 | 306 | unsigned num_info; /* number of info strings */ |
|---|
| 299 | 307 | const char **info; /* info strings */ |
|---|
| 300 | 308 | struct sdio_func_tuple *tuples; /* unknown common tuples */ |
|---|
| .. | .. |
|---|
| 309 | 317 | |
|---|
| 310 | 318 | unsigned int bouncesz; /* Bounce buffer size */ |
|---|
| 311 | 319 | struct workqueue_struct *complete_wq; /* Private workqueue */ |
|---|
| 320 | + |
|---|
| 321 | + ANDROID_KABI_RESERVE(1); |
|---|
| 322 | + ANDROID_KABI_RESERVE(2); |
|---|
| 323 | + ANDROID_VENDOR_DATA(1); |
|---|
| 312 | 324 | }; |
|---|
| 313 | 325 | |
|---|
| 314 | 326 | static inline bool mmc_large_sector(struct mmc_card *card) |
|---|