|
@@ -68,15 +68,6 @@ struct rk3399_dmcfreq {
|
|
|
struct devfreq_event_dev *edev;
|
|
|
struct mutex lock;
|
|
|
struct dram_timing timing;
|
|
|
-
|
|
|
- /*
|
|
|
- * DDR Converser of Frequency (DCF) is used to implement DDR frequency
|
|
|
- * conversion without the participation of CPU, we will implement and
|
|
|
- * control it in arm trust firmware.
|
|
|
- */
|
|
|
- wait_queue_head_t wait_dcf_queue;
|
|
|
- int irq;
|
|
|
- int wait_dcf_flag;
|
|
|
struct regulator *vdd_center;
|
|
|
unsigned long rate, target_rate;
|
|
|
unsigned long volt, target_volt;
|
|
@@ -117,7 +108,6 @@ static int rk3399_dmcfreq_target(struct device *dev, unsigned long *freq,
|
|
|
goto out;
|
|
|
}
|
|
|
}
|
|
|
- dmcfreq->wait_dcf_flag = 1;
|
|
|
|
|
|
err = clk_set_rate(dmcfreq->dmc_clk, target_rate);
|
|
|
if (err) {
|
|
@@ -128,14 +118,6 @@ static int rk3399_dmcfreq_target(struct device *dev, unsigned long *freq,
|
|
|
goto out;
|
|
|
}
|
|
|
|
|
|
- /*
|
|
|
- * Wait until bcf irq happen, it means freq scaling finish in
|
|
|
- * arm trust firmware, use 100ms as timeout time.
|
|
|
- */
|
|
|
- if (!wait_event_timeout(dmcfreq->wait_dcf_queue,
|
|
|
- !dmcfreq->wait_dcf_flag, HZ / 10))
|
|
|
- dev_warn(dev, "Timeout waiting for dcf interrupt\n");
|
|
|
-
|
|
|
/*
|
|
|
* Check the dpll rate,
|
|
|
* There only two result we will get,
|
|
@@ -241,22 +223,6 @@ static __maybe_unused int rk3399_dmcfreq_resume(struct device *dev)
|
|
|
static SIMPLE_DEV_PM_OPS(rk3399_dmcfreq_pm, rk3399_dmcfreq_suspend,
|
|
|
rk3399_dmcfreq_resume);
|
|
|
|
|
|
-static irqreturn_t rk3399_dmc_irq(int irq, void *dev_id)
|
|
|
-{
|
|
|
- struct rk3399_dmcfreq *dmcfreq = dev_id;
|
|
|
- struct arm_smccc_res res;
|
|
|
-
|
|
|
- dmcfreq->wait_dcf_flag = 0;
|
|
|
- wake_up(&dmcfreq->wait_dcf_queue);
|
|
|
-
|
|
|
- /* Clear the DCF interrupt */
|
|
|
- arm_smccc_smc(ROCKCHIP_SIP_DRAM_FREQ, 0, 0,
|
|
|
- ROCKCHIP_SIP_CONFIG_DRAM_CLR_IRQ,
|
|
|
- 0, 0, 0, 0, &res);
|
|
|
-
|
|
|
- return IRQ_HANDLED;
|
|
|
-}
|
|
|
-
|
|
|
static int of_get_ddr_timings(struct dram_timing *timing,
|
|
|
struct device_node *np)
|
|
|
{
|
|
@@ -330,16 +296,10 @@ static int rk3399_dmcfreq_probe(struct platform_device *pdev)
|
|
|
struct device *dev = &pdev->dev;
|
|
|
struct device_node *np = pdev->dev.of_node;
|
|
|
struct rk3399_dmcfreq *data;
|
|
|
- int ret, irq, index, size;
|
|
|
+ int ret, index, size;
|
|
|
uint32_t *timing;
|
|
|
struct dev_pm_opp *opp;
|
|
|
|
|
|
- irq = platform_get_irq(pdev, 0);
|
|
|
- if (irq < 0) {
|
|
|
- dev_err(&pdev->dev,
|
|
|
- "Cannot get the dmc interrupt resource: %d\n", irq);
|
|
|
- return irq;
|
|
|
- }
|
|
|
data = devm_kzalloc(dev, sizeof(struct rk3399_dmcfreq), GFP_KERNEL);
|
|
|
if (!data)
|
|
|
return -ENOMEM;
|
|
@@ -358,17 +318,6 @@ static int rk3399_dmcfreq_probe(struct platform_device *pdev)
|
|
|
return PTR_ERR(data->dmc_clk);
|
|
|
};
|
|
|
|
|
|
- data->irq = irq;
|
|
|
- ret = devm_request_irq(dev, irq, rk3399_dmc_irq, 0,
|
|
|
- dev_name(dev), data);
|
|
|
- if (ret) {
|
|
|
- dev_err(dev, "Failed to request dmc irq: %d\n", ret);
|
|
|
- return ret;
|
|
|
- }
|
|
|
-
|
|
|
- init_waitqueue_head(&data->wait_dcf_queue);
|
|
|
- data->wait_dcf_flag = 0;
|
|
|
-
|
|
|
data->edev = devfreq_event_get_edev_by_phandle(dev, 0);
|
|
|
if (IS_ERR(data->edev))
|
|
|
return -EPROBE_DEFER;
|