mirror of https://gitee.com/openkylin/linux.git
drm: omapdrm: Infer the OMAP version from the SoC family
The omapdrm exposes the SoC version to userspace through an integer that contains the OMAP model (e.g. 0x3430 for the OMAP3430). This is an unfortunate choice of userspace API as it's both conceptually wrong (userspace nowadays should use /sys/bus/soc/ for that purpose) and inaccurate as many models with different features are reported with the same version number. The only known user of this API is the xomap X11 driver. Even if it has been deprecated for some time we can't drop the kernel API yet. We can, however, infer the version number from the SoC family to avoid the need to pass the version number through platform data. Do this, which makes the omapdrm platform data not needed anymore, and ready to be removed. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
This commit is contained in:
parent
278cba7eaf
commit
6e471faba3
|
@ -17,6 +17,8 @@
|
|||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <linux/sys_soc.h>
|
||||
|
||||
#include <drm/drm_atomic.h>
|
||||
#include <drm/drm_atomic_helper.h>
|
||||
#include <drm/drm_crtc_helper.h>
|
||||
|
@ -518,9 +520,17 @@ static struct drm_driver omap_drm_driver = {
|
|||
.patchlevel = DRIVER_PATCHLEVEL,
|
||||
};
|
||||
|
||||
static const struct soc_device_attribute omapdrm_soc_devices[] = {
|
||||
{ .family = "OMAP3", .data = (void *)0x3430 },
|
||||
{ .family = "OMAP4", .data = (void *)0x4430 },
|
||||
{ .family = "OMAP5", .data = (void *)0x5430 },
|
||||
{ .family = "DRA7", .data = (void *)0x0752 },
|
||||
{ /* sentinel */ }
|
||||
};
|
||||
|
||||
static int pdev_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct omap_drm_platform_data *pdata = pdev->dev.platform_data;
|
||||
const struct soc_device_attribute *soc;
|
||||
struct omap_drm_private *priv;
|
||||
struct drm_device *ddev;
|
||||
unsigned int i;
|
||||
|
@ -546,7 +556,8 @@ static int pdev_probe(struct platform_device *pdev)
|
|||
|
||||
priv->dispc_ops = dispc_get_ops();
|
||||
|
||||
priv->omaprev = pdata->omaprev;
|
||||
soc = soc_device_match(omapdrm_soc_devices);
|
||||
priv->omaprev = soc ? (unsigned int)soc->data : 0;
|
||||
priv->wq = alloc_ordered_workqueue("omapdrm", 0);
|
||||
|
||||
spin_lock_init(&priv->list_lock);
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
#define __OMAP_DRV_H__
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/platform_data/omap_drm.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/workqueue.h>
|
||||
|
||||
|
|
Loading…
Reference in New Issue