diff --git a/drivers/gpu/drm/xe/regs/xe_reg_defs.h b/drivers/gpu/drm/xe/regs/xe_reg_defs.h index 478787c75e292e7d6c2a470bae171b4e437d2e47..5078a9e698599b6018fec4a7e8fe51be85a1ba19 100644 --- a/drivers/gpu/drm/xe/regs/xe_reg_defs.h +++ b/drivers/gpu/drm/xe/regs/xe_reg_defs.h @@ -19,7 +19,7 @@ struct xe_reg { union { struct { /** @addr: address */ - u32 addr:22; + u32 addr:28; /** * @masked: register is "masked", with upper 16bits used * to identify the bits that are updated on the lower @@ -35,6 +35,10 @@ struct xe_reg { * value can inspect it. */ u32 mcr:1; + /** + * @ext: access MMIO extension space for current register. + */ + u32 ext:1; }; /** @raw: Raw value with both address and options */ u32 raw; @@ -84,6 +88,16 @@ struct xe_reg_mcr { */ #define XE_REG(r_, ...) ((const struct xe_reg)XE_REG_INITIALIZER(r_, ##__VA_ARGS__)) +/** + * XE_REG_EXT - Create a struct xe_reg from extension offset and additional + * flags + * @r_: Register extension offset + * @...: Additional options like access mode. See struct xe_reg for available + * options. + */ +#define XE_REG_EXT(r_, ...) \ + ((const struct xe_reg)XE_REG_INITIALIZER(r_, ##__VA_ARGS__, .ext = 1)) + /** * XE_REG_MCR - Create a struct xe_reg_mcr from offset and additional flags * @r_: Register offset diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h index dd52d112d58fa8f0291122ed7ae21f8061db413d..f7c7d44a64652f07333eaa4227427ca768fe14ba 100644 --- a/drivers/gpu/drm/xe/xe_device_types.h +++ b/drivers/gpu/drm/xe/xe_device_types.h @@ -140,6 +140,19 @@ struct xe_tile { void *regs; } mmio; + /** + * @mmio_ext: MMIO-extension info for a tile. + * + * Each tile has its own additional 256MB (28-bit) MMIO-extension space. + */ + struct { + /** @size: size of tile's additional MMIO-extension space */ + size_t size; + + /** @regs: pointer to tile's additional MMIO-extension space */ + void *regs; + } mmio_ext; + /** @mem: memory management info for tile */ struct { /**