omap24xx: Fix n810bm compilation

SVN-Revision: 28766
lede-17.01
Michael Büsch 2011-11-05 16:01:53 +00:00
parent 3c96dee342
commit 6288ac7ed4
1 changed files with 58 additions and 60 deletions

View File

@ -1,7 +1,7 @@
Index: linux-3.1/drivers/cbus/Kconfig Index: linux-3.1/drivers/cbus/Kconfig
=================================================================== ===================================================================
--- linux-3.1.orig/drivers/cbus/Kconfig 2011-10-30 19:14:57.000000000 +0100 --- linux-3.1.orig/drivers/cbus/Kconfig 2011-11-05 15:02:39.041041166 +0100
+++ linux-3.1/drivers/cbus/Kconfig 2011-10-30 19:32:58.263510754 +0100 +++ linux-3.1/drivers/cbus/Kconfig 2011-11-05 15:02:39.177041045 +0100
@@ -83,4 +83,12 @@ config CBUS_RETU_HEADSET @@ -83,4 +83,12 @@ config CBUS_RETU_HEADSET
endif # CBUS_RETU endif # CBUS_RETU
@ -17,8 +17,8 @@ Index: linux-3.1/drivers/cbus/Kconfig
endmenu endmenu
Index: linux-3.1/drivers/cbus/Makefile Index: linux-3.1/drivers/cbus/Makefile
=================================================================== ===================================================================
--- linux-3.1.orig/drivers/cbus/Makefile 2011-10-30 19:14:57.000000000 +0100 --- linux-3.1.orig/drivers/cbus/Makefile 2011-11-05 15:02:39.041041166 +0100
+++ linux-3.1/drivers/cbus/Makefile 2011-10-30 19:32:58.263510754 +0100 +++ linux-3.1/drivers/cbus/Makefile 2011-11-05 15:02:39.177041045 +0100
@@ -11,3 +11,6 @@ obj-$(CONFIG_CBUS_RETU_POWERBUTTON) += r @@ -11,3 +11,6 @@ obj-$(CONFIG_CBUS_RETU_POWERBUTTON) += r
obj-$(CONFIG_CBUS_RETU_RTC) += retu-rtc.o obj-$(CONFIG_CBUS_RETU_RTC) += retu-rtc.o
obj-$(CONFIG_CBUS_RETU_WDT) += retu-wdt.o obj-$(CONFIG_CBUS_RETU_WDT) += retu-wdt.o
@ -29,8 +29,8 @@ Index: linux-3.1/drivers/cbus/Makefile
Index: linux-3.1/drivers/cbus/n810bm_main.c Index: linux-3.1/drivers/cbus/n810bm_main.c
=================================================================== ===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-3.1/drivers/cbus/n810bm_main.c 2011-10-30 19:32:58.263510754 +0100 +++ linux-3.1/drivers/cbus/n810bm_main.c 2011-11-05 16:42:53.033998545 +0100
@@ -0,0 +1,1586 @@ @@ -0,0 +1,1572 @@
+/* +/*
+ * Nokia n810 battery management + * Nokia n810 battery management
+ * + *
@ -63,6 +63,7 @@ Index: linux-3.1/drivers/cbus/n810bm_main.c
+#include <linux/bitops.h> +#include <linux/bitops.h>
+#include <linux/workqueue.h> +#include <linux/workqueue.h>
+#include <linux/delay.h> +#include <linux/delay.h>
+#include <linux/interrupt.h>
+ +
+#include "cbus.h" +#include "cbus.h"
+#include "retu.h" +#include "retu.h"
@ -165,6 +166,9 @@ Index: linux-3.1/drivers/cbus/n810bm_main.c
+}; +};
+ +
+struct n810bm { +struct n810bm {
+ int tahvo_irq;
+ bool tahvo_irq_enabled;
+
+ bool battery_present; /* A battery is inserted */ + bool battery_present; /* A battery is inserted */
+ bool charger_present; /* The charger is connected */ + bool charger_present; /* The charger is connected */
+ enum n810bm_capacity capacity; /* The capacity of the inserted battery (if any) */ + enum n810bm_capacity capacity; /* The capacity of the inserted battery (if any) */
@ -181,7 +185,6 @@ Index: linux-3.1/drivers/cbus/n810bm_main.c
+ +
+ unsigned long notify_flags; + unsigned long notify_flags;
+ struct work_struct notify_work; + struct work_struct notify_work;
+ struct work_struct currmeas_irq_work;
+ struct delayed_work periodic_check_work; + struct delayed_work periodic_check_work;
+ +
+ bool initialized; /* The hardware was initialized */ + bool initialized; /* The hardware was initialized */
@ -221,31 +224,27 @@ Index: linux-3.1/drivers/cbus/n810bm_main.c
+ +
+static u16 tahvo_read(struct n810bm *bm, unsigned int reg) +static u16 tahvo_read(struct n810bm *bm, unsigned int reg)
+{ +{
+ return tahvo_read_reg(reg); + return tahvo_read_reg(&n810bm_tahvo_device->dev, reg);
+} +}
+ +
+static void tahvo_maskset(struct n810bm *bm, unsigned int reg, u16 mask, u16 set) +static void tahvo_maskset(struct n810bm *bm, unsigned int reg, u16 mask, u16 set)
+{ +{
+ tahvo_set_clear_reg_bits(reg, set, mask); + tahvo_set_clear_reg_bits(&n810bm_tahvo_device->dev, reg, set, mask);
+} +}
+ +
+static inline void tahvo_write(struct n810bm *bm, unsigned int reg, u16 value) +static inline void tahvo_write(struct n810bm *bm, unsigned int reg, u16 value)
+{ +{
+ unsigned long flags; + tahvo_write_reg(&n810bm_tahvo_device->dev, reg, value);
+
+ spin_lock_irqsave(&tahvo_lock, flags);
+ tahvo_write_reg(reg, value);
+ spin_unlock_irqrestore(&tahvo_lock, flags);
+} +}
+ +
+static inline void tahvo_set(struct n810bm *bm, unsigned int reg, u16 mask) +static inline void tahvo_set(struct n810bm *bm, unsigned int reg, u16 mask)
+{ +{
+ tahvo_set_clear_reg_bits(reg, mask, mask); + tahvo_set_clear_reg_bits(&n810bm_tahvo_device->dev, reg, mask, mask);
+} +}
+ +
+static inline void tahvo_clear(struct n810bm *bm, unsigned int reg, u16 mask) +static inline void tahvo_clear(struct n810bm *bm, unsigned int reg, u16 mask)
+{ +{
+ tahvo_set_clear_reg_bits(reg, 0, mask); + tahvo_set_clear_reg_bits(&n810bm_tahvo_device->dev, reg, 0, mask);
+} +}
+ +
+static u16 retu_read(struct n810bm *bm, unsigned int reg) +static u16 retu_read(struct n810bm *bm, unsigned int reg)
@ -677,10 +676,17 @@ Index: linux-3.1/drivers/cbus/n810bm_main.c
+ tahvo_clear(bm, TAHVO_REG_CHGCTL, + tahvo_clear(bm, TAHVO_REG_CHGCTL,
+ TAHVO_REG_CHGCTL_CURTIMRST); + TAHVO_REG_CHGCTL_CURTIMRST);
+ +
+ if (millisec_interval) + if (millisec_interval) {
+ tahvo_enable_irq(TAHVO_INT_BATCURR); + if (!bm->tahvo_irq_enabled) {
+ else + bm->tahvo_irq_enabled = 1;
+ tahvo_disable_irq(TAHVO_INT_BATCURR); + enable_irq(bm->tahvo_irq);
+ }
+ } else {
+ if (bm->tahvo_irq_enabled) {
+ bm->tahvo_irq_enabled = 0;
+ disable_irq_nosync(bm->tahvo_irq);
+ }
+ }
+ +
+ //TODO also do a software timer for safety. + //TODO also do a software timer for safety.
+} +}
@ -1036,9 +1042,9 @@ Index: linux-3.1/drivers/cbus/n810bm_main.c
+} +}
+*/ +*/
+ +
+static void n810bm_tahvo_current_measure_work(struct work_struct *work) +static irqreturn_t n810bm_tahvo_current_measure_irq_handler(int irq, void *data)
+{ +{
+ struct n810bm *bm = container_of(work, struct n810bm, currmeas_irq_work); + struct n810bm *bm = data;
+ int res, ma, mv, temp; + int res, ma, mv, temp;
+ +
+ mutex_lock(&bm->mutex); + mutex_lock(&bm->mutex);
@ -1081,14 +1087,8 @@ Index: linux-3.1/drivers/cbus/n810bm_main.c
+ } + }
+out_unlock: +out_unlock:
+ mutex_unlock(&bm->mutex); + mutex_unlock(&bm->mutex);
+}
+ +
+static void n810bm_tahvo_current_measure_irq_handler(unsigned long data) + return IRQ_HANDLED;
+{
+ struct n810bm *bm = (struct n810bm *)data;
+
+ tahvo_ack_irq(TAHVO_INT_BATCURR);
+ schedule_work(&bm->currmeas_irq_work);
+} +}
+ +
+#define DEFINE_ATTR_NOTIFY(attr_name) \ +#define DEFINE_ATTR_NOTIFY(attr_name) \
@ -1366,7 +1366,6 @@ Index: linux-3.1/drivers/cbus/n810bm_main.c
+{ +{
+ cancel_delayed_work_sync(&bm->periodic_check_work); + cancel_delayed_work_sync(&bm->periodic_check_work);
+ cancel_work_sync(&bm->notify_work); + cancel_work_sync(&bm->notify_work);
+ cancel_work_sync(&bm->currmeas_irq_work);
+ flush_scheduled_work(); + flush_scheduled_work();
+} +}
+ +
@ -1397,12 +1396,14 @@ Index: linux-3.1/drivers/cbus/n810bm_main.c
+ if (err) + if (err)
+ goto err_unwind_attrs; + goto err_unwind_attrs;
+*/ +*/
+ err = tahvo_request_irq(TAHVO_INT_BATCURR, + bm->tahvo_irq = platform_get_irq(n810bm_tahvo_device, 0);
+ err = request_threaded_irq(bm->tahvo_irq, NULL,
+ n810bm_tahvo_current_measure_irq_handler, + n810bm_tahvo_current_measure_irq_handler,
+ (unsigned long)bm, "n810bm"); + IRQF_ONESHOT, "tahvo-n810bm", bm);
+ if (err) + if (err)
+ goto err_free_retu_irq; + goto err_free_retu_irq;
+ tahvo_disable_irq(TAHVO_INT_BATCURR); + disable_irq_nosync(bm->tahvo_irq);
+ bm->tahvo_irq_enabled = 0;
+ +
+ schedule_delayed_work(&bm->periodic_check_work, + schedule_delayed_work(&bm->periodic_check_work,
+ round_jiffies_relative(N810BM_CHECK_INTERVAL)); + round_jiffies_relative(N810BM_CHECK_INTERVAL));
@ -1433,7 +1434,7 @@ Index: linux-3.1/drivers/cbus/n810bm_main.c
+ return; + return;
+ +
+ lipocharge_exit(&bm->charger); + lipocharge_exit(&bm->charger);
+ tahvo_free_irq(TAHVO_INT_BATCURR); + free_irq(bm->tahvo_irq, bm);
+//XXX retu_free_irq(RETU_INT_ADCS); +//XXX retu_free_irq(RETU_INT_ADCS);
+ for (i = 0; i < ARRAY_SIZE(n810bm_attrs); i++) + for (i = 0; i < ARRAY_SIZE(n810bm_attrs); i++)
+ device_remove_file(&bm->pdev->dev, n810bm_attrs[i]); + device_remove_file(&bm->pdev->dev, n810bm_attrs[i]);
@ -1498,7 +1499,6 @@ Index: linux-3.1/drivers/cbus/n810bm_main.c
+ mutex_init(&bm->mutex); + mutex_init(&bm->mutex);
+ INIT_DELAYED_WORK(&bm->periodic_check_work, n810bm_periodic_check_work); + INIT_DELAYED_WORK(&bm->periodic_check_work, n810bm_periodic_check_work);
+ INIT_WORK(&bm->notify_work, n810bm_notify_work); + INIT_WORK(&bm->notify_work, n810bm_notify_work);
+ INIT_WORK(&bm->currmeas_irq_work, n810bm_tahvo_current_measure_work);
+ +
+ dev_info(&bm->pdev->dev, "Requesting CAL BME PMM block firmware file " + dev_info(&bm->pdev->dev, "Requesting CAL BME PMM block firmware file "
+ N810BM_PMM_BLOCK_FILENAME); + N810BM_PMM_BLOCK_FILENAME);
@ -1575,21 +1575,10 @@ Index: linux-3.1/drivers/cbus/n810bm_main.c
+ } + }
+}; +};
+ +
+/* FIXME: for now alloc the device here... */
+static struct platform_device n810bm_tahvo_dev = {
+ .name = "tahvo-n810bm",
+ .id = -1,
+};
+
+static int __init n810bm_modinit(void) +static int __init n810bm_modinit(void)
+{ +{
+ int err; + int err;
+ +
+ //FIXME
+ err = platform_device_register(&n810bm_tahvo_dev);
+ if (err)
+ return err;
+
+ err = platform_driver_probe(&n810bm_retu_driver, n810bm_retu_probe); + err = platform_driver_probe(&n810bm_retu_driver, n810bm_retu_probe);
+ if (err) + if (err)
+ return err; + return err;
@ -1605,9 +1594,6 @@ Index: linux-3.1/drivers/cbus/n810bm_main.c
+ +
+static void __exit n810bm_modexit(void) +static void __exit n810bm_modexit(void)
+{ +{
+ //FIXME
+ platform_device_unregister(&n810bm_tahvo_dev);
+
+ platform_driver_unregister(&n810bm_tahvo_driver); + platform_driver_unregister(&n810bm_tahvo_driver);
+ platform_driver_unregister(&n810bm_retu_driver); + platform_driver_unregister(&n810bm_retu_driver);
+} +}
@ -1620,7 +1606,7 @@ Index: linux-3.1/drivers/cbus/n810bm_main.c
Index: linux-3.1/drivers/cbus/lipocharge.c Index: linux-3.1/drivers/cbus/lipocharge.c
=================================================================== ===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-3.1/drivers/cbus/lipocharge.c 2011-10-30 19:32:58.263510754 +0100 +++ linux-3.1/drivers/cbus/lipocharge.c 2011-11-05 15:02:39.177041045 +0100
@@ -0,0 +1,183 @@ @@ -0,0 +1,183 @@
+/* +/*
+ * Generic LIPO battery charger + * Generic LIPO battery charger
@ -1808,7 +1794,7 @@ Index: linux-3.1/drivers/cbus/lipocharge.c
Index: linux-3.1/drivers/cbus/lipocharge.h Index: linux-3.1/drivers/cbus/lipocharge.h
=================================================================== ===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ linux-3.1/drivers/cbus/lipocharge.h 2011-10-30 19:32:58.263510754 +0100 +++ linux-3.1/drivers/cbus/lipocharge.h 2011-11-05 15:02:39.177041045 +0100
@@ -0,0 +1,60 @@ @@ -0,0 +1,60 @@
+#ifndef LIPOCHARGE_H_ +#ifndef LIPOCHARGE_H_
+#define LIPOCHARGE_H_ +#define LIPOCHARGE_H_
@ -1872,8 +1858,8 @@ Index: linux-3.1/drivers/cbus/lipocharge.h
+#endif /* LIPOCHARGE_H_ */ +#endif /* LIPOCHARGE_H_ */
Index: linux-3.1/drivers/cbus/cbus.c Index: linux-3.1/drivers/cbus/cbus.c
=================================================================== ===================================================================
--- linux-3.1.orig/drivers/cbus/cbus.c 2011-10-30 19:31:35.000000000 +0100 --- linux-3.1.orig/drivers/cbus/cbus.c 2011-11-05 15:02:39.041041166 +0100
+++ linux-3.1/drivers/cbus/cbus.c 2011-10-30 19:33:12.107254808 +0100 +++ linux-3.1/drivers/cbus/cbus.c 2011-11-05 15:02:39.177041045 +0100
@@ -34,6 +34,7 @@ @@ -34,6 +34,7 @@
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
@ -1898,8 +1884,8 @@ Index: linux-3.1/drivers/cbus/cbus.c
MODULE_AUTHOR("Juha Yrjölä"); MODULE_AUTHOR("Juha Yrjölä");
Index: linux-3.1/drivers/cbus/cbus.h Index: linux-3.1/drivers/cbus/cbus.h
=================================================================== ===================================================================
--- linux-3.1.orig/drivers/cbus/cbus.h 2011-10-30 19:14:57.000000000 +0100 --- linux-3.1.orig/drivers/cbus/cbus.h 2011-11-05 15:02:39.041041166 +0100
+++ linux-3.1/drivers/cbus/cbus.h 2011-10-30 19:32:58.263510754 +0100 +++ linux-3.1/drivers/cbus/cbus.h 2011-11-05 15:02:39.177041045 +0100
@@ -27,4 +27,6 @@ extern int cbus_read_reg(struct device * @@ -27,4 +27,6 @@ extern int cbus_read_reg(struct device *
extern int cbus_write_reg(struct device *, unsigned dev, unsigned reg, extern int cbus_write_reg(struct device *, unsigned dev, unsigned reg,
unsigned val); unsigned val);
@ -1909,8 +1895,8 @@ Index: linux-3.1/drivers/cbus/cbus.h
#endif /* __DRIVERS_CBUS_CBUS_H */ #endif /* __DRIVERS_CBUS_CBUS_H */
Index: linux-3.1/drivers/cbus/retu.c Index: linux-3.1/drivers/cbus/retu.c
=================================================================== ===================================================================
--- linux-3.1.orig/drivers/cbus/retu.c 2011-10-30 19:31:35.000000000 +0100 --- linux-3.1.orig/drivers/cbus/retu.c 2011-11-05 15:02:39.041041166 +0100
+++ linux-3.1/drivers/cbus/retu.c 2011-10-30 19:32:58.263510754 +0100 +++ linux-3.1/drivers/cbus/retu.c 2011-11-05 15:02:39.177041045 +0100
@@ -417,6 +417,11 @@ static int retu_allocate_children(struct @@ -417,6 +417,11 @@ static int retu_allocate_children(struct
if (!child) if (!child)
return -ENOMEM; return -ENOMEM;
@ -1925,8 +1911,8 @@ Index: linux-3.1/drivers/cbus/retu.c
Index: linux-3.1/drivers/cbus/tahvo.c Index: linux-3.1/drivers/cbus/tahvo.c
=================================================================== ===================================================================
--- linux-3.1.orig/drivers/cbus/tahvo.c 2011-10-30 19:31:35.000000000 +0100 --- linux-3.1.orig/drivers/cbus/tahvo.c 2011-11-05 15:02:39.041041166 +0100
+++ linux-3.1/drivers/cbus/tahvo.c 2011-10-30 19:32:58.263510754 +0100 +++ linux-3.1/drivers/cbus/tahvo.c 2011-11-05 16:23:10.694222186 +0100
@@ -129,6 +129,7 @@ void tahvo_set_clear_reg_bits(struct dev @@ -129,6 +129,7 @@ void tahvo_set_clear_reg_bits(struct dev
__tahvo_write_reg(tahvo, reg, w); __tahvo_write_reg(tahvo, reg, w);
mutex_unlock(&tahvo->mutex); mutex_unlock(&tahvo->mutex);
@ -1935,3 +1921,15 @@ Index: linux-3.1/drivers/cbus/tahvo.c
static irqreturn_t tahvo_irq_handler(int irq, void *_tahvo) static irqreturn_t tahvo_irq_handler(int irq, void *_tahvo)
{ {
@@ -305,6 +306,11 @@ static int tahvo_allocate_children(struc
if (!child)
return -ENOMEM;
+ child = tahvo_allocate_child("tahvo-n810bm", parent,
+ irq_base + TAHVO_INT_BATCURR);
+ if (!child)
+ return -ENOMEM;
+
return 0;
}