Unverified Commit a1ae6400 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!14751 mfd: intel_soc_pmic_bxtwc: Use IRQ domain for USB Type-C device

parents c58dad41 48dee9b3
Loading
Loading
Loading
Loading
+40 −21
Original line number Diff line number Diff line
@@ -240,16 +240,6 @@ static struct mfd_cell bxt_wc_dev[] = {
		.num_resources = ARRAY_SIZE(thermal_resources),
		.resources = thermal_resources,
	},
	{
		.name = "bxt_wcove_usbc",
		.num_resources = ARRAY_SIZE(usbc_resources),
		.resources = usbc_resources,
	},
	{
		.name = "bxt_wcove_ext_charger",
		.num_resources = ARRAY_SIZE(charger_resources),
		.resources = charger_resources,
	},
	{
		.name = "bxt_wcove_bcu",
		.num_resources = ARRAY_SIZE(bcu_resources),
@@ -271,6 +261,19 @@ static struct mfd_cell bxt_wc_dev[] = {
	},
};

static struct mfd_cell bxt_wc_chgr_dev[] = {
	{
		.name = "bxt_wcove_usbc",
		.num_resources = ARRAY_SIZE(usbc_resources),
		.resources = usbc_resources,
	},
	{
		.name = "bxt_wcove_ext_charger",
		.num_resources = ARRAY_SIZE(charger_resources),
		.resources = charger_resources,
	},
};

static int regmap_ipc_byte_reg_read(void *context, unsigned int reg,
				    unsigned int *val)
{
@@ -421,6 +424,26 @@ static int bxtwc_add_chained_irq_chip(struct intel_soc_pmic *pmic,
					0, chip, data);
}

static int bxtwc_add_chained_devices(struct intel_soc_pmic *pmic,
				     const struct mfd_cell *cells, int n_devs,
				     struct regmap_irq_chip_data *pdata,
				     int pirq, int irq_flags,
				     const struct regmap_irq_chip *chip,
				     struct regmap_irq_chip_data **data)
{
	struct device *dev = pmic->dev;
	struct irq_domain *domain;
	int ret;

	ret = bxtwc_add_chained_irq_chip(pmic, pdata, pirq, irq_flags, chip, data);
	if (ret)
		return dev_err_probe(dev, ret, "Failed to add %s IRQ chip\n", chip->name);

	domain = regmap_irq_get_domain(*data);

	return devm_mfd_add_devices(dev, PLATFORM_DEVID_NONE, cells, n_devs, NULL, 0, domain);
}

static int bxtwc_probe(struct platform_device *pdev)
{
	int ret;
@@ -520,18 +543,14 @@ static int bxtwc_probe(struct platform_device *pdev)
		return ret;
	}

	/* Add chained IRQ handler for CHGR IRQs */
	ret = bxtwc_add_chained_irq_chip(pmic, pmic->irq_chip_data,
	ret = bxtwc_add_chained_devices(pmic, bxt_wc_chgr_dev, ARRAY_SIZE(bxt_wc_chgr_dev),
					pmic->irq_chip_data,
					BXTWC_CHGR_LVL1_IRQ,
					IRQF_ONESHOT,
					&bxtwc_regmap_irq_chip_chgr,
					&pmic->irq_chip_data_chgr);


	if (ret) {
		dev_err(&pdev->dev, "Failed to add CHGR IRQ chip\n");
	if (ret)
		return ret;
	}

	/* Add chained IRQ handler for CRIT IRQs */
	ret = bxtwc_add_chained_irq_chip(pmic, pmic->irq_chip_data,
+0 −4
Original line number Diff line number Diff line
@@ -620,10 +620,6 @@ static int wcove_typec_probe(struct platform_device *pdev)
	if (irq < 0)
		return irq;

	irq = regmap_irq_get_virq(pmic->irq_chip_data_chgr, irq);
	if (irq < 0)
		return irq;

	ret = guid_parse(WCOVE_DSM_UUID, &wcove->guid);
	if (ret)
		return ret;