rtc: ds1307: support m41t11 variant
authorGiulio Benetti <giulio.benetti@micronovasrl.com>
Wed, 16 May 2018 21:08:40 +0000 (23:08 +0200)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Mon, 16 Jul 2018 21:36:24 +0000 (23:36 +0200)
The m41t11 variant is very similar to the already supported m41t00 and
m41t0, but it has also 56 bytes of NVRAM.

Add it to driver taking into account NVRAM section.

Signed-off-by: Giulio Benetti <giulio.benetti@micronovasrl.com>
Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Documentation/devicetree/bindings/rtc/rtc-ds1307.txt
drivers/rtc/rtc-ds1307.c

index d28d6e7f6ae89ef89a0c4012127324bad5cb9716..ce6469c1a516a13c3684e80a56a625512cb1ae8e 100644 (file)
@@ -13,6 +13,7 @@ Required properties:
        "maxim,ds3231",
        "st,m41t0",
        "st,m41t00",
+       "st,m41t11",
        "microchip,mcp7940x",
        "microchip,mcp7941x",
        "pericom,pt7c4338",
index aa4a161bae98f767193755478731ae8ceadcd4f9..0162a600ff1bd038e895e5dfa303d24750fe5a03 100644 (file)
@@ -44,6 +44,7 @@ enum ds_type {
        ds_3231,
        m41t0,
        m41t00,
+       m41t11,
        mcp794xx,
        rx_8025,
        rx_8130,
@@ -227,6 +228,11 @@ static const struct chip_desc chips[last_ds_type] = {
                .irq_handler = rx8130_irq,
                .rtc_ops = &rx8130_rtc_ops,
        },
+       [m41t11] = {
+               /* this is battery backed SRAM */
+               .nvram_offset   = 8,
+               .nvram_size     = 56,
+       },
        [mcp794xx] = {
                .alarm          = 1,
                /* this is battery backed SRAM */
@@ -249,6 +255,7 @@ static const struct i2c_device_id ds1307_id[] = {
        { "ds3231", ds_3231 },
        { "m41t0", m41t0 },
        { "m41t00", m41t00 },
+       { "m41t11", m41t11 },
        { "mcp7940x", mcp794xx },
        { "mcp7941x", mcp794xx },
        { "pt7c4338", ds_1307 },
@@ -305,6 +312,10 @@ static const struct of_device_id ds1307_of_match[] = {
                .compatible = "st,m41t00",
                .data = (void *)m41t00
        },
+       {
+               .compatible = "st,m41t11",
+               .data = (void *)m41t11
+       },
        {
                .compatible = "microchip,mcp7940x",
                .data = (void *)mcp794xx
@@ -347,6 +358,7 @@ static const struct acpi_device_id ds1307_acpi_ids[] = {
        { .id = "DS3231", .driver_data = ds_3231 },
        { .id = "M41T0", .driver_data = m41t0 },
        { .id = "M41T00", .driver_data = m41t00 },
+       { .id = "M41T11", .driver_data = m41t11 },
        { .id = "MCP7940X", .driver_data = mcp794xx },
        { .id = "MCP7941X", .driver_data = mcp794xx },
        { .id = "PT7C4338", .driver_data = ds_1307 },
@@ -1576,6 +1588,7 @@ read_rtc:
        case ds_1307:
        case m41t0:
        case m41t00:
+       case m41t11:
                /* clock halted?  turn it on, so clock can tick. */
                if (tmp & DS1307_BIT_CH) {
                        regmap_write(ds1307->regmap, DS1307_REG_SECS, 0);
@@ -1641,6 +1654,7 @@ read_rtc:
        case ds_1340:
        case m41t0:
        case m41t00:
+       case m41t11:
                /*
                 * NOTE: ignores century bits; fix before deploying
                 * systems that will run through year 2100.