On Tue, Apr 28, 2009 at 07:24:30AM +0200, ext Pakaravoor, Jagadeesh wrote:
> Hi folks,
> We have a new TWL6030 chip that is coming in. In brief, the following are
> the changes w.r.t. TWL5030:
>
> 0. This is the companion chip for OMAP4430.
> 1. Unlike in TWL5030, audio and power chips are going to be separate chips as
> TWL6030 and TWL6031.
> 2. Keypad and GPIO features are no more present in TWL6030 (the power
> companion chip). They all move into OMAP.
> 4. Register and module base names/addresses changes (as expected from 2).
> 5. Changes in interrupt framework:
> - No more PIH and SIH
> - 3 ISRs INT_STS_A, INT_STS_B and INT_STS_C at 3 consecutive address
> locations (that will allow an I2C burst read).
> 6. The modules that are inherited from TWL5030 to TWL6030 remain same (like
> RTC, BCI) except MADC with some minor changes making it a General Purpose ADC
> (GPADC).
>
>
> I'd like to propose a new generic framework that will incorporate
> TWL4030/TWL5030 and TWL6030 functionalities/changes seamlessly.
>
> Proposal
> ========
> 1. Rename all registers/functions etc. from twl4030/TWL4030 to twl/TWL.
> - This would allow unchanged modules (like RTC) to work in the same
> way, transparent to whether it is part of TWL4030 or TWL6030.
> 2. Have a new twl.c file, that will define functions like
> - twl_i2c_write
> - twl_i2c_write_u8
> - twl_i2c_read
> - twl_i2c_read_u8
> - twl_init
> - twl_exit
> - twl_probe
> - twl_remove
> These functions implement the functionalities common to both TWL4030 and
> TWL6030, doing away with the need to have a copy of these functions in two
> places.
> 3. twl4030-core.c and twl4030-irq.c files will define functions that changes
> between TWL4030 and TWL6030, like:
> - add_children(): We do not need keypad and GPIO; MADC changes to GPADC
> in case of TWL6030.
> - twl_irq_thread() <<twl4030-irq.c>>: We have new registers to read
> interrupts from. No more PIH and SIH. So the core loop that dispatches the
> interrupt changes. We can also use an I2C burst read to get 3 interrupt
> registers in one shot for TWL6030.
>
> 4. New twl6030-core.c and twl6030-irq.c that implements the TWL6030 counter
> parts of functions applicable in (3).
>
> 5. A config option will determine whether TWL4030 or TWL6030 will be compiled
> as a part of the kernel.
>
> NB:
> ==
> Please note that the patches are for RFC, and they might not even compile
> properly. These are draft patches to convey the idea across. So please ignore
> styling and formatting errors.
diff --git a/drivers/mfd/twl4030-core.c b/drivers/mfd/twl4030-core.c
index 769b34b..c6eec75 100644
--- a/drivers/mfd/twl4030-core.c
+++ b/drivers/mfd/twl4030-core.c
@@ -176,6 +176,7 @@
/* chip-specific feature flags, for i2c_device_id.driver_data */
#define TWL4030_VAUX2 BIT(0) /* pre-5030 voltage ranges */
#define TPS_SUBSET BIT(1) /* tps659[23]0 have fewer LDOs
*/
+#define TWL6030 BIT(2) /* twl6030 doesn't have
gpio nor keypad */
/*----------------------------------------------------------------------*/
@@ -496,7 +497,8 @@ add_children(struct twl4030_platform_data *pdata,
unsigned long features)
return PTR_ERR(child);
}
- if (twl_has_keypad() && pdata->keypad) {
+ if (twl_has_keypad() && pdata->keypad &&
+ !(features & TLW6030)) {
child = add_child(2, "twl4030_keypad",
pdata->keypad, sizeof(*pdata->keypad),
true, pdata->irq_base + 1, 0);
You'd probably only need to make changes to register defines but almost
everything else could remain as is. There shouldn't be any need for
creating separate files.
--
balbi
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html