Skip to content

Commit

Permalink
drm/sti: remove deprecated legacy vtg slave
Browse files Browse the repository at this point in the history
stih416 chip family is no more supported in Linux v4.9.
It is then useless to keep vtg slave field since it not used at all for
the stih407/10 chip family supported by sti driver.

Signed-off-by: Vincent Abriou <vincent.abriou@st.com>
  • Loading branch information
Vincent Abriou committed Feb 10, 2017
1 parent e6d50dc commit 0c7ff84
Showing 1 changed file with 14 additions and 44 deletions.
58 changes: 14 additions & 44 deletions drivers/gpu/drm/sti/sti_vtg.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
#include "sti_vtg.h"

#define VTG_MODE_MASTER 0
#define VTG_MODE_SLAVE_BY_EXT0 1

/* registers offset */
#define VTG_MODE 0x0000
Expand Down Expand Up @@ -132,7 +131,6 @@ struct sti_vtg_sync_params {
* @irq_status: store the IRQ status value
* @notifier_list: notifier callback
* @crtc: the CRTC for vblank event
* @slave: slave vtg
* @link: List node to link the structure in lookup list
*/
struct sti_vtg {
Expand All @@ -144,7 +142,6 @@ struct sti_vtg {
u32 irq_status;
struct raw_notifier_head notifier_list;
struct drm_crtc *crtc;
struct sti_vtg *slave;
struct list_head link;
};

Expand All @@ -166,10 +163,6 @@ struct sti_vtg *of_vtg_find(struct device_node *np)

static void vtg_reset(struct sti_vtg *vtg)
{
/* reset slave and then master */
if (vtg->slave)
vtg_reset(vtg->slave);

writel(1, vtg->regs + VTG_DRST_AUTOC);
}

Expand Down Expand Up @@ -259,10 +252,6 @@ static void vtg_set_mode(struct sti_vtg *vtg,
{
unsigned int i;

if (vtg->slave)
vtg_set_mode(vtg->slave, VTG_MODE_SLAVE_BY_EXT0,
vtg->sync_params, mode);

/* Set the number of clock cycles per line */
writel(mode->htotal, vtg->regs + VTG_CLKLN);

Expand Down Expand Up @@ -318,11 +307,7 @@ void sti_vtg_set_config(struct sti_vtg *vtg,

vtg_reset(vtg);

/* enable irq for the vtg vblank synchro */
if (vtg->slave)
vtg_enable_irq(vtg->slave);
else
vtg_enable_irq(vtg);
vtg_enable_irq(vtg);
}

/**
Expand Down Expand Up @@ -365,18 +350,12 @@ u32 sti_vtg_get_pixel_number(struct drm_display_mode mode, int x)
int sti_vtg_register_client(struct sti_vtg *vtg, struct notifier_block *nb,
struct drm_crtc *crtc)
{
if (vtg->slave)
return sti_vtg_register_client(vtg->slave, nb, crtc);

vtg->crtc = crtc;
return raw_notifier_chain_register(&vtg->notifier_list, nb);
}

int sti_vtg_unregister_client(struct sti_vtg *vtg, struct notifier_block *nb)
{
if (vtg->slave)
return sti_vtg_unregister_client(vtg->slave, nb);

return raw_notifier_chain_unregister(&vtg->notifier_list, nb);
}

Expand Down Expand Up @@ -434,29 +413,20 @@ static int vtg_probe(struct platform_device *pdev)
return -ENOMEM;
}

np = of_parse_phandle(pdev->dev.of_node, "st,slave", 0);
if (np) {
vtg->slave = of_vtg_find(np);
of_node_put(np);
vtg->irq = platform_get_irq(pdev, 0);
if (vtg->irq < 0) {
DRM_ERROR("Failed to get VTG interrupt\n");
return vtg->irq;
}

if (!vtg->slave)
return -EPROBE_DEFER;
} else {
vtg->irq = platform_get_irq(pdev, 0);
if (vtg->irq < 0) {
DRM_ERROR("Failed to get VTG interrupt\n");
return vtg->irq;
}

RAW_INIT_NOTIFIER_HEAD(&vtg->notifier_list);

ret = devm_request_threaded_irq(dev, vtg->irq, vtg_irq,
vtg_irq_thread, IRQF_ONESHOT,
dev_name(dev), vtg);
if (ret < 0) {
DRM_ERROR("Failed to register VTG interrupt\n");
return ret;
}
RAW_INIT_NOTIFIER_HEAD(&vtg->notifier_list);

ret = devm_request_threaded_irq(dev, vtg->irq, vtg_irq,
vtg_irq_thread, IRQF_ONESHOT,
dev_name(dev), vtg);
if (ret < 0) {
DRM_ERROR("Failed to register VTG interrupt\n");
return ret;
}

vtg_register(vtg);
Expand Down

0 comments on commit 0c7ff84

Please sign in to comment.