Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit add41cb4 authored by Mark Brown's avatar Mark Brown Committed by Liam Girdwood
Browse files

mfd: Add placeholders for WM8350 client devices



In order to avoid merge problems further down the line add placeholders
for several of the WM8350 client devices and register them, otherwise
the patches adding the client devices will all try to update the same
code.

Also remove redundant checks for null regulator platform devices while
we're at it.

Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: default avatarSamuel Ortiz <sameo@openedhand.com>
Signed-off-by: default avatarLiam Girdwood <lrg@slimlogic.co.uk>
parent 129eef96
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -1234,6 +1234,15 @@ int wm8350_device_init(struct wm8350 *wm8350, int irq,

	wm8350_reg_write(wm8350, WM8350_SYSTEM_INTERRUPTS_MASK, 0x0);

	wm8350_client_dev_register(wm8350, "wm8350-codec",
				   &(wm8350->codec.pdev));
	wm8350_client_dev_register(wm8350, "wm8350-gpio",
				   &(wm8350->gpio.pdev));
	wm8350_client_dev_register(wm8350, "wm8350-power",
				   &(wm8350->power.pdev));
	wm8350_client_dev_register(wm8350, "wm8350-rtc", &(wm8350->rtc.pdev));
	wm8350_client_dev_register(wm8350, "wm8350-wdt", &(wm8350->wdt.pdev));

	return 0;

err:
@@ -1247,9 +1256,14 @@ void wm8350_device_exit(struct wm8350 *wm8350)
	int i;

	for (i = 0; i < ARRAY_SIZE(wm8350->pmic.pdev); i++)
		if (wm8350->pmic.pdev[i] != NULL)
		platform_device_unregister(wm8350->pmic.pdev[i]);

	platform_device_unregister(wm8350->wdt.pdev);
	platform_device_unregister(wm8350->rtc.pdev);
	platform_device_unregister(wm8350->power.pdev);
	platform_device_unregister(wm8350->gpio.pdev);
	platform_device_unregister(wm8350->codec.pdev);

	free_irq(wm8350->chip_irq, wm8350);
	flush_work(&wm8350->irq_work);
	kfree(wm8350->reg_cache);
+6 −0
Original line number Diff line number Diff line
@@ -13,6 +13,8 @@
#ifndef __LINUX_MFD_WM8350_AUDIO_H_
#define __LINUX_MFD_WM8350_AUDIO_H_

#include <linux/platform_device.h>

#define WM8350_CLOCK_CONTROL_1                  0x28
#define WM8350_CLOCK_CONTROL_2                  0x29
#define WM8350_FLL_CONTROL_1                    0x2A
@@ -589,4 +591,8 @@
#define WM8350_IRQ_CODEC_MICSCD			41
#define WM8350_IRQ_CODEC_MICD			42

struct wm8350_codec {
	struct platform_device *pdev;
};

#endif
+10 −0
Original line number Diff line number Diff line
@@ -17,7 +17,12 @@
#include <linux/mutex.h>
#include <linux/workqueue.h>

#include <linux/mfd/wm8350/audio.h>
#include <linux/mfd/wm8350/gpio.h>
#include <linux/mfd/wm8350/pmic.h>
#include <linux/mfd/wm8350/rtc.h>
#include <linux/mfd/wm8350/supply.h>
#include <linux/mfd/wm8350/wdt.h>

/*
 * Register values.
@@ -574,7 +579,12 @@ struct wm8350 {
	int chip_irq;

	/* Client devices */
	struct wm8350_codec codec;
	struct wm8350_gpio gpio;
	struct wm8350_pmic pmic;
	struct wm8350_power power;
	struct wm8350_rtc rtc;
	struct wm8350_wdt wdt;
};

/**
+6 −0
Original line number Diff line number Diff line
@@ -13,6 +13,8 @@
#ifndef __LINUX_MFD_WM8350_GPIO_H_
#define __LINUX_MFD_WM8350_GPIO_H_

#include <linux/platform_device.h>

/*
 * GPIO Registers.
 */
@@ -328,6 +330,10 @@ struct wm8350;
int wm8350_gpio_config(struct wm8350 *wm8350, int gpio, int dir, int func,
		       int pol, int pull, int invert, int debounce);

struct wm8350_gpio {
	struct platform_device *pdev;
};

/*
 * GPIO Interrupts
 */
+6 −0
Original line number Diff line number Diff line
@@ -12,6 +12,8 @@
#ifndef __LINUX_MFD_WM8350_RTC_H
#define __LINUX_MFD_WM8350_RTC_H

#include <linux/platform_device.h>

/*
 * Register values.
 */
@@ -257,4 +259,8 @@
#define WM8350_IRQ_RTC_SEC			8
#define WM8350_IRQ_RTC_ALM			9

struct wm8350_rtc {
	struct platform_device *pdev;
};

#endif
Loading