[PATCH 1/7] Add a mfd IPUv3 driver
From: Jason Chen <hidden>
Date: 2011-02-21 05:38:35
Also in:
linux-fbdev, lkml
hi, Sascha, I have few comments for this patch.
+#define MX51_IPU_CHANNEL_CSI0 ? ? ? ? ? ? ? ? ? 0 +#define MX51_IPU_CHANNEL_CSI1 ? ? ? ? ? ? ? ? ? 1 +#define MX51_IPU_CHANNEL_CSI2 ? ? ? ? ? ? ? ? ? 2 +#define MX51_IPU_CHANNEL_CSI3 ? ? ? ? ? ? ? ? ? 3 +#define MX51_IPU_CHANNEL_MEM_BG_SYNC ? ? ? ? ? 23 +#define MX51_IPU_CHANNEL_MEM_FG_SYNC ? ? ? ? ? 27 +#define MX51_IPU_CHANNEL_MEM_DC_SYNC ? ? ? ? ? 28 +#define MX51_IPU_CHANNEL_MEM_FG_SYNC_ALPHA ? ? 31 +#define MX51_IPU_CHANNEL_MEM_DC_ASYNC ? ? ? ? ?41 +#define MX51_IPU_CHANNEL_ROT_ENC_MEM ? ? ? ? ? 45 +#define MX51_IPU_CHANNEL_ROT_VF_MEM ? ? ? ? ? ?46 +#define MX51_IPU_CHANNEL_ROT_PP_MEM ? ? ? ? ? ?47 +#define MX51_IPU_CHANNEL_ROT_ENC_MEM_OUT ? ? ? 48 +#define MX51_IPU_CHANNEL_ROT_VF_MEM_OUT ? ? ? ? ? ? ? ?49 +#define MX51_IPU_CHANNEL_ROT_PP_MEM_OUT ? ? ? ? ? ? ? ?50 +#define MX51_IPU_CHANNEL_MEM_BG_SYNC_ALPHA ? ? 51
Had better use MX5_IPU as prefix because it's same value in MX5X.
+
+ ? ? ? ipu_idmac_reg = ioremap(ipu_base + IPU_IDMAC_REG_BASE, PAGE_SIZE);
+ ? ? ? if (!ipu_idmac_reg) {
+ ? ? ? ? ? ? ? ret = -ENOMEM;
+ ? ? ? ? ? ? ? goto failed_ioremap2;
+ ? ? ? }
+
+ ? ? ? ret = ipu_mipi_setup();
+ ? ? ? if (ret)
+ ? ? ? ? ? ? ? goto failed_mipi_setup;I dont know what's the best way to do it, but I think you had better consider mx53 platform, so maybe this mipi_setup function and also below ipu hw reset could be set in platform data.
+
+ ? ? ? ipu_clk = clk_get(&pdev->dev, "ipu");
+ ? ? ? if (IS_ERR(ipu_clk)) {
+ ? ? ? ? ? ? ? ret = PTR_ERR(ipu_clk);
+ ? ? ? ? ? ? ? dev_err(&pdev->dev, "clk_get failed with %d", ret);
+ ? ? ? ? ? ? ? goto failed_clk_get;
+ ? ? ? }
+
+ ? ? ? ipu_get();
+
+ ? ? ? ret = request_irq(irq1, ipu_irq_handler, IRQF_DISABLED, pdev->name,
+ ? ? ? ? ? ? ? ? ? ? ? &pdev->dev);
+ ? ? ? if (ret) {
+ ? ? ? ? ? ? ? dev_err(&pdev->dev, "request irq %d failed with: %d\n", irq1, ret);
+ ? ? ? ? ? ? ? goto failed_request_irq1;
+ ? ? ? }
+
+ ? ? ? ret = request_irq(irq2, ipu_irq_handler, IRQF_DISABLED, pdev->name,
+ ? ? ? ? ? ? ? ? ? ? ? &pdev->dev);
+ ? ? ? if (ret) {
+ ? ? ? ? ? ? ? dev_err(&pdev->dev, "request irq %d failed with: %d\n", irq2, ret);
+ ? ? ? ? ? ? ? goto failed_request_irq2;
+ ? ? ? }
+
+ ? ? ? ipu_reset();