.gpio_a1026_wakeup = A1026_WAKEUP_GPIO,
.gpio_a1026_reset = A1026_RESET_GPIO,
.request_resources = audience_request_resources,
+ .free_resources = audience_free_resources,
.wakeup = audience_wake_up,
.reset = audience_reset,
};
},
};
-static void register_board_i2c_devs()
+static void register_board_i2c_devs(void)
{
i2c_register_board_info(5, pr2_i2c_bus5_devs,
ARRAY_SIZE(pr2_i2c_bus5_devs));
#include <linux/uaccess.h>
#include <linux/delay.h>
#include <linux/firmware.h>
-#include <sound/intel_sst.h> */
+#include <sound/intel_sst.h>
#include <linux/a1026.h>
#include <linux/i2c.h>
static int a1026_remove(struct i2c_client *client)
{
+ struct a1026_platform_data *pdata;
+
+ pdata = client->dev.platform_data;
misc_deregister(&a1026_device);
mutex_destroy(&es305->mutex);
+ pdata->free_resources(client);
kfree(i2c_get_clientdata(client));
i2c_set_clientdata(client, NULL);
return 0;
uint32_t gpio_a1026_wakeup;
uint32_t gpio_a1026_reset;
int (*request_resources) (struct i2c_client *client);
+ void (*free_resources) (struct i2c_client *client);
void (*reset) (bool state);
void (*wakeup) (bool state);
char firmware_name[128];