On Tue, Aug 1, 2017 at 9:13 PM,I will follow the model used in lpc_ich.c. Will fix it in next version.
<sathyanarayanan.kuppuswamy@xxxxxxxxxxxxxxx> wrote:
Currently, we have lot of repetitive code in dependent device resourcePlease, use static variables instead of allocated on a heap.
allocation and device creation handling code. This logic can be improved if
we use MFD framework for dependent device creation. This patch adds this
support.
+static int ipc_create_pmc_devices(struct platform_device *pdev)
{
- int ret;
-
- /* If we have ACPI based watchdog use that instead */
+ u8 n = 0;
+ struct mfd_cell *pmc_mfd_cells;
+
+ pmc_mfd_cells = devm_kzalloc(&pdev->dev,
+ (sizeof(*pmc_mfd_cells) * PMC_IPC_MAX_MFD_BLOCK),
+ GFP_KERNEL);
+ if (!pmc_mfd_cells)
+ return -ENOMEM;
+
+ /* Create PUNIT IPC MFD cell */
+ pmc_mfd_cells[n].name = PUNIT_DEVICE_NAME;
+ pmc_mfd_cells[n].id = -1;
+ pmc_mfd_cells[n].num_resources = ARRAY_SIZE(punit_ipc_resources);
+ pmc_mfd_cells[n].resources = punit_ipc_resources;
+ pmc_mfd_cells[n].ignore_resource_conflicts = 1;
Will fix it in next version.
+ n++;...and here you do mfd_add_devices() instead of this stuff.
+
+ /* If we have ACPI based watchdog use that instead, othewise create
+ * a MFD cell for iTCO watchdog*/
if (!acpi_has_watchdog()) {
+ pmc_mfd_cells[n].name = TCO_DEVICE_NAME;
+ pmc_mfd_cells[n].id = -1;
+ pmc_mfd_cells[n].platform_data = &tco_info;
+ pmc_mfd_cells[n].pdata_size = sizeof(tco_info);
+ pmc_mfd_cells[n].num_resources =
+ ARRAY_SIZE(watchdog_ipc_resources);
+ pmc_mfd_cells[n].resources = watchdog_ipc_resources;
+ pmc_mfd_cells[n].ignore_resource_conflicts = 1;
+ n++;
}
Check how lpc_ich.c designed.