diff options
| author | David S. Miller <davem@davemloft.net> | 2018-04-21 16:31:52 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2018-04-21 16:32:48 -0400 |
| commit | e0ada51db907ed2db5d46ad7ff86a8b5df68e59b (patch) | |
| tree | 858966cee69ad8a50e59c4e02dcbde6ba2916151 /tools/include | |
| parent | 0638eb573cde5888c0886c7f35da604e5db209a6 (diff) | |
| parent | 83beed7b2b26f232d782127792dd0cd4362fdc41 (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts were simple overlapping changes in microchip
driver.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'tools/include')
| -rw-r--r-- | tools/include/tools/config.h | 34 | ||||
| -rw-r--r-- | tools/include/uapi/drm/i915_drm.h | 112 |
2 files changed, 142 insertions, 4 deletions
diff --git a/tools/include/tools/config.h b/tools/include/tools/config.h new file mode 100644 index 000000000000..08ade7df8132 --- /dev/null +++ b/tools/include/tools/config.h | |||
| @@ -0,0 +1,34 @@ | |||
| 1 | /* SPDX-License-Identifier: GPL-2.0 */ | ||
| 2 | #ifndef _TOOLS_CONFIG_H | ||
| 3 | #define _TOOLS_CONFIG_H | ||
| 4 | |||
| 5 | /* Subset of include/linux/kconfig.h */ | ||
| 6 | |||
| 7 | #define __ARG_PLACEHOLDER_1 0, | ||
| 8 | #define __take_second_arg(__ignored, val, ...) val | ||
| 9 | |||
| 10 | /* | ||
| 11 | * Helper macros to use CONFIG_ options in C/CPP expressions. Note that | ||
| 12 | * these only work with boolean and tristate options. | ||
| 13 | */ | ||
| 14 | |||
| 15 | /* | ||
| 16 | * Getting something that works in C and CPP for an arg that may or may | ||
| 17 | * not be defined is tricky. Here, if we have "#define CONFIG_BOOGER 1" | ||
| 18 | * we match on the placeholder define, insert the "0," for arg1 and generate | ||
| 19 | * the triplet (0, 1, 0). Then the last step cherry picks the 2nd arg (a one). | ||
| 20 | * When CONFIG_BOOGER is not defined, we generate a (... 1, 0) pair, and when | ||
| 21 | * the last step cherry picks the 2nd arg, we get a zero. | ||
| 22 | */ | ||
| 23 | #define __is_defined(x) ___is_defined(x) | ||
| 24 | #define ___is_defined(val) ____is_defined(__ARG_PLACEHOLDER_##val) | ||
| 25 | #define ____is_defined(arg1_or_junk) __take_second_arg(arg1_or_junk 1, 0) | ||
| 26 | |||
| 27 | /* | ||
| 28 | * IS_BUILTIN(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y', 0 | ||
| 29 | * otherwise. For boolean options, this is equivalent to | ||
| 30 | * IS_ENABLED(CONFIG_FOO). | ||
| 31 | */ | ||
| 32 | #define IS_BUILTIN(option) __is_defined(option) | ||
| 33 | |||
| 34 | #endif /* _TOOLS_CONFIG_H */ | ||
diff --git a/tools/include/uapi/drm/i915_drm.h b/tools/include/uapi/drm/i915_drm.h index 536ee4febd74..7f5634ce8e88 100644 --- a/tools/include/uapi/drm/i915_drm.h +++ b/tools/include/uapi/drm/i915_drm.h | |||
| @@ -318,6 +318,7 @@ typedef struct _drm_i915_sarea { | |||
| 318 | #define DRM_I915_PERF_OPEN 0x36 | 318 | #define DRM_I915_PERF_OPEN 0x36 |
| 319 | #define DRM_I915_PERF_ADD_CONFIG 0x37 | 319 | #define DRM_I915_PERF_ADD_CONFIG 0x37 |
| 320 | #define DRM_I915_PERF_REMOVE_CONFIG 0x38 | 320 | #define DRM_I915_PERF_REMOVE_CONFIG 0x38 |
| 321 | #define DRM_I915_QUERY 0x39 | ||
| 321 | 322 | ||
| 322 | #define DRM_IOCTL_I915_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_I915_INIT, drm_i915_init_t) | 323 | #define DRM_IOCTL_I915_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_I915_INIT, drm_i915_init_t) |
| 323 | #define DRM_IOCTL_I915_FLUSH DRM_IO ( DRM_COMMAND_BASE + DRM_I915_FLUSH) | 324 | #define DRM_IOCTL_I915_FLUSH DRM_IO ( DRM_COMMAND_BASE + DRM_I915_FLUSH) |
| @@ -375,6 +376,7 @@ typedef struct _drm_i915_sarea { | |||
| 375 | #define DRM_IOCTL_I915_PERF_OPEN DRM_IOW(DRM_COMMAND_BASE + DRM_I915_PERF_OPEN, struct drm_i915_perf_open_param) | 376 | #define DRM_IOCTL_I915_PERF_OPEN DRM_IOW(DRM_COMMAND_BASE + DRM_I915_PERF_OPEN, struct drm_i915_perf_open_param) |
| 376 | #define DRM_IOCTL_I915_PERF_ADD_CONFIG DRM_IOW(DRM_COMMAND_BASE + DRM_I915_PERF_ADD_CONFIG, struct drm_i915_perf_oa_config) | 377 | #define DRM_IOCTL_I915_PERF_ADD_CONFIG DRM_IOW(DRM_COMMAND_BASE + DRM_I915_PERF_ADD_CONFIG, struct drm_i915_perf_oa_config) |
| 377 | #define DRM_IOCTL_I915_PERF_REMOVE_CONFIG DRM_IOW(DRM_COMMAND_BASE + DRM_I915_PERF_REMOVE_CONFIG, __u64) | 378 | #define DRM_IOCTL_I915_PERF_REMOVE_CONFIG DRM_IOW(DRM_COMMAND_BASE + DRM_I915_PERF_REMOVE_CONFIG, __u64) |
| 379 | #define DRM_IOCTL_I915_QUERY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_QUERY, struct drm_i915_query) | ||
| 378 | 380 | ||
| 379 | /* Allow drivers to submit batchbuffers directly to hardware, relying | 381 | /* Allow drivers to submit batchbuffers directly to hardware, relying |
| 380 | * on the security mechanisms provided by hardware. | 382 | * on the security mechanisms provided by hardware. |
| @@ -1358,7 +1360,9 @@ struct drm_intel_overlay_attrs { | |||
| 1358 | * active on a given plane. | 1360 | * active on a given plane. |
| 1359 | */ | 1361 | */ |
| 1360 | 1362 | ||
| 1361 | #define I915_SET_COLORKEY_NONE (1<<0) /* disable color key matching */ | 1363 | #define I915_SET_COLORKEY_NONE (1<<0) /* Deprecated. Instead set |
| 1364 | * flags==0 to disable colorkeying. | ||
| 1365 | */ | ||
| 1362 | #define I915_SET_COLORKEY_DESTINATION (1<<1) | 1366 | #define I915_SET_COLORKEY_DESTINATION (1<<1) |
| 1363 | #define I915_SET_COLORKEY_SOURCE (1<<2) | 1367 | #define I915_SET_COLORKEY_SOURCE (1<<2) |
| 1364 | struct drm_intel_sprite_colorkey { | 1368 | struct drm_intel_sprite_colorkey { |
| @@ -1604,15 +1608,115 @@ struct drm_i915_perf_oa_config { | |||
| 1604 | __u32 n_flex_regs; | 1608 | __u32 n_flex_regs; |
| 1605 | 1609 | ||
| 1606 | /* | 1610 | /* |
| 1607 | * These fields are pointers to tuples of u32 values (register | 1611 | * These fields are pointers to tuples of u32 values (register address, |
| 1608 | * address, value). For example the expected length of the buffer | 1612 | * value). For example the expected length of the buffer pointed by |
| 1609 | * pointed by mux_regs_ptr is (2 * sizeof(u32) * n_mux_regs). | 1613 | * mux_regs_ptr is (2 * sizeof(u32) * n_mux_regs). |
| 1610 | */ | 1614 | */ |
| 1611 | __u64 mux_regs_ptr; | 1615 | __u64 mux_regs_ptr; |
| 1612 | __u64 boolean_regs_ptr; | 1616 | __u64 boolean_regs_ptr; |
| 1613 | __u64 flex_regs_ptr; | 1617 | __u64 flex_regs_ptr; |
| 1614 | }; | 1618 | }; |
| 1615 | 1619 | ||
| 1620 | struct drm_i915_query_item { | ||
| 1621 | __u64 query_id; | ||
| 1622 | #define DRM_I915_QUERY_TOPOLOGY_INFO 1 | ||
| 1623 | |||
| 1624 | /* | ||
| 1625 | * When set to zero by userspace, this is filled with the size of the | ||
| 1626 | * data to be written at the data_ptr pointer. The kernel sets this | ||
| 1627 | * value to a negative value to signal an error on a particular query | ||
| 1628 | * item. | ||
| 1629 | */ | ||
| 1630 | __s32 length; | ||
| 1631 | |||
| 1632 | /* | ||
| 1633 | * Unused for now. Must be cleared to zero. | ||
| 1634 | */ | ||
| 1635 | __u32 flags; | ||
| 1636 | |||
| 1637 | /* | ||
| 1638 | * Data will be written at the location pointed by data_ptr when the | ||
| 1639 | * value of length matches the length of the data to be written by the | ||
| 1640 | * kernel. | ||
| 1641 | */ | ||
| 1642 | __u64 data_ptr; | ||
| 1643 | }; | ||
| 1644 | |||
| 1645 | struct drm_i915_query { | ||
| 1646 | __u32 num_items; | ||
| 1647 | |||
| 1648 | /* | ||
| 1649 | * Unused for now. Must be cleared to zero. | ||
| 1650 | */ | ||
| 1651 | __u32 flags; | ||
| 1652 | |||
| 1653 | /* | ||
| 1654 | * This points to an array of num_items drm_i915_query_item structures. | ||
| 1655 | */ | ||
| 1656 | __u64 items_ptr; | ||
| 1657 | }; | ||
| 1658 | |||
| 1659 | /* | ||
| 1660 | * Data written by the kernel with query DRM_I915_QUERY_TOPOLOGY_INFO : | ||
| 1661 | * | ||
| 1662 | * data: contains the 3 pieces of information : | ||
| 1663 | * | ||
| 1664 | * - the slice mask with one bit per slice telling whether a slice is | ||
| 1665 | * available. The availability of slice X can be queried with the following | ||
| 1666 | * formula : | ||
| 1667 | * | ||
| 1668 | * (data[X / 8] >> (X % 8)) & 1 | ||
| 1669 | * | ||
| 1670 | * - the subslice mask for each slice with one bit per subslice telling | ||
| 1671 | * whether a subslice is available. The availability of subslice Y in slice | ||
| 1672 | * X can be queried with the following formula : | ||
| 1673 | * | ||
| 1674 | * (data[subslice_offset + | ||
| 1675 | * X * subslice_stride + | ||
| 1676 | * Y / 8] >> (Y % 8)) & 1 | ||
| 1677 | * | ||
| 1678 | * - the EU mask for each subslice in each slice with one bit per EU telling | ||
| 1679 | * whether an EU is available. The availability of EU Z in subslice Y in | ||
| 1680 | * slice X can be queried with the following formula : | ||
| 1681 | * | ||
| 1682 | * (data[eu_offset + | ||
| 1683 | * (X * max_subslices + Y) * eu_stride + | ||
| 1684 | * Z / 8] >> (Z % 8)) & 1 | ||
| 1685 | */ | ||
| 1686 | struct drm_i915_query_topology_info { | ||
| 1687 | /* | ||
| 1688 | * Unused for now. Must be cleared to zero. | ||
| 1689 | */ | ||
| 1690 | __u16 flags; | ||
| 1691 | |||
| 1692 | __u16 max_slices; | ||
| 1693 | __u16 max_subslices; | ||
| 1694 | __u16 max_eus_per_subslice; | ||
| 1695 | |||
| 1696 | /* | ||
| 1697 | * Offset in data[] at which the subslice masks are stored. | ||
| 1698 | */ | ||
| 1699 | __u16 subslice_offset; | ||
| 1700 | |||
| 1701 | /* | ||
| 1702 | * Stride at which each of the subslice masks for each slice are | ||
| 1703 | * stored. | ||
| 1704 | */ | ||
| 1705 | __u16 subslice_stride; | ||
| 1706 | |||
| 1707 | /* | ||
| 1708 | * Offset in data[] at which the EU masks are stored. | ||
| 1709 | */ | ||
| 1710 | __u16 eu_offset; | ||
| 1711 | |||
| 1712 | /* | ||
| 1713 | * Stride at which each of the EU masks for each subslice are stored. | ||
| 1714 | */ | ||
| 1715 | __u16 eu_stride; | ||
| 1716 | |||
| 1717 | __u8 data[]; | ||
| 1718 | }; | ||
| 1719 | |||
| 1616 | #if defined(__cplusplus) | 1720 | #if defined(__cplusplus) |
| 1617 | } | 1721 | } |
| 1618 | #endif | 1722 | #endif |
