drm/gma500: Embed struct drm_device in struct drm_psb_private
Embed struct drm_device in struct drm_psb_private. Replace the use of dev_private by an upcast operation. Switch to managed release of struct drm_psb_private. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com> Link: https://patchwork.freedesktop.org/patch/msgid/20210920141051.30988-4-tzimmermann@suse.de
This commit is contained in:
parent
2df94510c5
commit
c2f17e60cb
|
@ -429,7 +429,7 @@ static void cdv_hotplug_work_func(struct work_struct *work)
|
|||
{
|
||||
struct drm_psb_private *dev_priv = container_of(work, struct drm_psb_private,
|
||||
hotplug_work);
|
||||
struct drm_device *dev = dev_priv->dev;
|
||||
struct drm_device *dev = &dev_priv->dev;
|
||||
|
||||
/* Just fire off a uevent and let userspace tell us what to do */
|
||||
drm_helper_hpd_irq_event(dev);
|
||||
|
|
|
@ -207,7 +207,7 @@ static void parse_backlight_data(struct drm_psb_private *dev_priv,
|
|||
|
||||
lvds_bl = kmemdup(vbt_lvds_bl, sizeof(*vbt_lvds_bl), GFP_KERNEL);
|
||||
if (!lvds_bl) {
|
||||
dev_err(dev_priv->dev->dev, "out of memory for backlight data\n");
|
||||
dev_err(dev_priv->dev.dev, "out of memory for backlight data\n");
|
||||
return;
|
||||
}
|
||||
dev_priv->lvds_bl = lvds_bl;
|
||||
|
@ -248,7 +248,7 @@ static void parse_lfp_panel_data(struct drm_psb_private *dev_priv,
|
|||
panel_fixed_mode = kzalloc(sizeof(*panel_fixed_mode),
|
||||
GFP_KERNEL);
|
||||
if (panel_fixed_mode == NULL) {
|
||||
dev_err(dev_priv->dev->dev, "out of memory for fixed panel mode\n");
|
||||
dev_err(dev_priv->dev.dev, "out of memory for fixed panel mode\n");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -259,7 +259,7 @@ static void parse_lfp_panel_data(struct drm_psb_private *dev_priv,
|
|||
dev_priv->lfp_lvds_vbt_mode = panel_fixed_mode;
|
||||
drm_mode_debug_printmodeline(panel_fixed_mode);
|
||||
} else {
|
||||
dev_dbg(dev_priv->dev->dev, "ignoring invalid LVDS VBT\n");
|
||||
dev_dbg(dev_priv->dev.dev, "ignoring invalid LVDS VBT\n");
|
||||
dev_priv->lvds_vbt = 0;
|
||||
kfree(panel_fixed_mode);
|
||||
}
|
||||
|
|
|
@ -196,7 +196,7 @@ intel_gpio_create(struct drm_psb_private *dev_priv, u32 pin)
|
|||
"gma500 GPIO%c", "?BACDE?F"[pin]);
|
||||
gpio->adapter.owner = THIS_MODULE;
|
||||
gpio->adapter.algo_data = &gpio->algo;
|
||||
gpio->adapter.dev.parent = dev_priv->dev->dev;
|
||||
gpio->adapter.dev.parent = dev_priv->dev.dev;
|
||||
gpio->algo.setsda = set_data;
|
||||
gpio->algo.setscl = set_clock;
|
||||
gpio->algo.getsda = get_data;
|
||||
|
@ -226,7 +226,7 @@ intel_i2c_quirk_xfer(struct drm_psb_private *dev_priv,
|
|||
adapter);
|
||||
int ret;
|
||||
|
||||
gma_intel_i2c_reset(dev_priv->dev);
|
||||
gma_intel_i2c_reset(&dev_priv->dev);
|
||||
|
||||
intel_i2c_quirk_set(dev_priv, true);
|
||||
set_data(gpio, 1);
|
||||
|
@ -432,7 +432,7 @@ int gma_intel_setup_gmbus(struct drm_device *dev)
|
|||
bus->force_bit = intel_gpio_create(dev_priv, i);
|
||||
}
|
||||
|
||||
gma_intel_i2c_reset(dev_priv->dev);
|
||||
gma_intel_i2c_reset(&dev_priv->dev);
|
||||
|
||||
return 0;
|
||||
|
||||
|
|
|
@ -94,7 +94,7 @@ static void mid_get_fuse_settings(struct drm_device *dev)
|
|||
static void mid_get_pci_revID(struct drm_psb_private *dev_priv)
|
||||
{
|
||||
uint32_t platform_rev_id = 0;
|
||||
struct pci_dev *pdev = to_pci_dev(dev_priv->dev->dev);
|
||||
struct pci_dev *pdev = to_pci_dev(dev_priv->dev.dev);
|
||||
int domain = pci_domain_nr(pdev->bus);
|
||||
struct pci_dev *pci_gfx_root =
|
||||
pci_get_domain_bus_and_slot(domain, 0, PCI_DEVFN(2, 0));
|
||||
|
@ -106,8 +106,7 @@ static void mid_get_pci_revID(struct drm_psb_private *dev_priv)
|
|||
pci_read_config_dword(pci_gfx_root, 0x08, &platform_rev_id);
|
||||
dev_priv->platform_rev_id = (uint8_t) platform_rev_id;
|
||||
pci_dev_put(pci_gfx_root);
|
||||
dev_dbg(dev_priv->dev->dev, "platform_rev_id is %x\n",
|
||||
dev_priv->platform_rev_id);
|
||||
dev_dbg(dev_priv->dev.dev, "platform_rev_id is %x\n", dev_priv->platform_rev_id);
|
||||
}
|
||||
|
||||
struct mid_vbt_header {
|
||||
|
@ -270,7 +269,7 @@ out:
|
|||
|
||||
static void mid_get_vbt_data(struct drm_psb_private *dev_priv)
|
||||
{
|
||||
struct drm_device *dev = dev_priv->dev;
|
||||
struct drm_device *dev = &dev_priv->dev;
|
||||
struct pci_dev *pdev = to_pci_dev(dev->dev);
|
||||
u32 addr;
|
||||
u8 __iomem *vbt_virtual;
|
||||
|
|
|
@ -190,7 +190,7 @@ static void psb_intel_opregion_asle_work(struct work_struct *work)
|
|||
}
|
||||
|
||||
if (asle_req & ASLE_SET_BACKLIGHT)
|
||||
asle_stat |= asle_set_backlight(dev_priv->dev, asle->bclp);
|
||||
asle_stat |= asle_set_backlight(&dev_priv->dev, asle->bclp);
|
||||
|
||||
asle->aslc = asle_stat;
|
||||
|
||||
|
|
|
@ -217,9 +217,6 @@ static void psb_driver_unload(struct drm_device *dev)
|
|||
|
||||
/* Destroy VBT data */
|
||||
psb_intel_destroy_bios(dev);
|
||||
|
||||
kfree(dev_priv);
|
||||
dev->dev_private = NULL;
|
||||
}
|
||||
gma_power_uninit(dev);
|
||||
}
|
||||
|
@ -227,7 +224,7 @@ static void psb_driver_unload(struct drm_device *dev)
|
|||
static int psb_driver_load(struct drm_device *dev, unsigned long flags)
|
||||
{
|
||||
struct pci_dev *pdev = to_pci_dev(dev->dev);
|
||||
struct drm_psb_private *dev_priv;
|
||||
struct drm_psb_private *dev_priv = to_drm_psb_private(dev);
|
||||
unsigned long resource_start, resource_len;
|
||||
unsigned long irqflags;
|
||||
int ret = -ENOMEM;
|
||||
|
@ -235,14 +232,9 @@ static int psb_driver_load(struct drm_device *dev, unsigned long flags)
|
|||
struct gma_encoder *gma_encoder;
|
||||
struct psb_gtt *pg;
|
||||
|
||||
/* allocating and initializing driver private data */
|
||||
dev_priv = kzalloc(sizeof(*dev_priv), GFP_KERNEL);
|
||||
if (dev_priv == NULL)
|
||||
return -ENOMEM;
|
||||
/* initializing driver private data */
|
||||
|
||||
dev_priv->ops = (struct psb_ops *)flags;
|
||||
dev_priv->dev = dev;
|
||||
dev->dev_private = (void *) dev_priv;
|
||||
|
||||
pg = &dev_priv->gtt;
|
||||
|
||||
|
@ -445,6 +437,7 @@ static long psb_unlocked_ioctl(struct file *filp, unsigned int cmd,
|
|||
|
||||
static int psb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
{
|
||||
struct drm_psb_private *dev_priv;
|
||||
struct drm_device *dev;
|
||||
int ret;
|
||||
|
||||
|
@ -452,15 +445,16 @@ static int psb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
dev = drm_dev_alloc(&driver, &pdev->dev);
|
||||
if (IS_ERR(dev))
|
||||
dev_priv = devm_drm_dev_alloc(&pdev->dev, &driver, struct drm_psb_private, dev);
|
||||
if (IS_ERR(dev_priv))
|
||||
return PTR_ERR(dev);
|
||||
dev = &dev_priv->dev;
|
||||
|
||||
pci_set_drvdata(pdev, dev);
|
||||
|
||||
ret = psb_driver_load(dev, ent->driver_data);
|
||||
if (ret)
|
||||
goto err_drm_dev_put;
|
||||
return ret;
|
||||
|
||||
ret = drm_dev_register(dev, ent->driver_data);
|
||||
if (ret)
|
||||
|
@ -470,8 +464,6 @@ static int psb_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||
|
||||
err_psb_driver_unload:
|
||||
psb_driver_unload(dev);
|
||||
err_drm_dev_put:
|
||||
drm_dev_put(dev);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -481,7 +473,6 @@ static void psb_pci_remove(struct pci_dev *pdev)
|
|||
|
||||
drm_dev_unregister(dev);
|
||||
psb_driver_unload(dev);
|
||||
drm_dev_put(dev);
|
||||
}
|
||||
|
||||
static const struct dev_pm_ops psb_pm_ops = {
|
||||
|
|
|
@ -389,7 +389,8 @@ struct psb_ops;
|
|||
struct intel_scu_ipc_dev;
|
||||
|
||||
struct drm_psb_private {
|
||||
struct drm_device *dev;
|
||||
struct drm_device dev;
|
||||
|
||||
struct pci_dev *aux_pdev; /* Currently only used by mrst */
|
||||
struct pci_dev *lpc_pdev; /* Currently only used by mrst */
|
||||
const struct psb_ops *ops;
|
||||
|
@ -569,7 +570,7 @@ struct drm_psb_private {
|
|||
|
||||
static inline struct drm_psb_private *to_drm_psb_private(struct drm_device *dev)
|
||||
{
|
||||
return dev->dev_private;
|
||||
return container_of(dev, struct drm_psb_private, dev);
|
||||
}
|
||||
|
||||
/* Operations for each board type */
|
||||
|
|
|
@ -76,12 +76,12 @@ psb_enable_pipestat(struct drm_psb_private *dev_priv, int pipe, u32 mask)
|
|||
u32 reg = psb_pipestat(pipe);
|
||||
dev_priv->pipestat[pipe] |= mask;
|
||||
/* Enable the interrupt, clear any pending status */
|
||||
if (gma_power_begin(dev_priv->dev, false)) {
|
||||
if (gma_power_begin(&dev_priv->dev, false)) {
|
||||
u32 writeVal = PSB_RVDC32(reg);
|
||||
writeVal |= (mask | (mask >> 16));
|
||||
PSB_WVDC32(writeVal, reg);
|
||||
(void) PSB_RVDC32(reg);
|
||||
gma_power_end(dev_priv->dev);
|
||||
gma_power_end(&dev_priv->dev);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -92,12 +92,12 @@ psb_disable_pipestat(struct drm_psb_private *dev_priv, int pipe, u32 mask)
|
|||
if ((dev_priv->pipestat[pipe] & mask) != 0) {
|
||||
u32 reg = psb_pipestat(pipe);
|
||||
dev_priv->pipestat[pipe] &= ~mask;
|
||||
if (gma_power_begin(dev_priv->dev, false)) {
|
||||
if (gma_power_begin(&dev_priv->dev, false)) {
|
||||
u32 writeVal = PSB_RVDC32(reg);
|
||||
writeVal &= ~mask;
|
||||
PSB_WVDC32(writeVal, reg);
|
||||
(void) PSB_RVDC32(reg);
|
||||
gma_power_end(dev_priv->dev);
|
||||
gma_power_end(&dev_priv->dev);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
static void psb_lid_timer_func(struct timer_list *t)
|
||||
{
|
||||
struct drm_psb_private *dev_priv = from_timer(dev_priv, t, lid_timer);
|
||||
struct drm_device *dev = (struct drm_device *)dev_priv->dev;
|
||||
struct drm_device *dev = (struct drm_device *)&dev_priv->dev;
|
||||
struct timer_list *lid_timer = &dev_priv->lid_timer;
|
||||
unsigned long irq_flags;
|
||||
u32 __iomem *lid_state = dev_priv->opregion.lid_state;
|
||||
|
|
Loading…
Reference in New Issue