drivers: clk: st: Remove stih415-416 clock support
[cascardo/linux.git] / drivers / clk / st / clkgen-fsyn.c
index 09afeb8..942c187 100644 (file)
@@ -42,45 +42,6 @@ struct stm_fs {
        unsigned long nsdiv;
 };
 
-static const struct stm_fs fs216c65_rtbl[] = {
-       { .mdiv = 0x1f, .pe = 0x0,      .sdiv = 0x7,    .nsdiv = 0 },   /* 312.5 Khz */
-       { .mdiv = 0x17, .pe = 0x25ed,   .sdiv = 0x1,    .nsdiv = 0 },   /* 27    MHz */
-       { .mdiv = 0x1a, .pe = 0x7b36,   .sdiv = 0x2,    .nsdiv = 1 },   /* 36.87 MHz */
-       { .mdiv = 0x13, .pe = 0x0,      .sdiv = 0x2,    .nsdiv = 1 },   /* 48    MHz */
-       { .mdiv = 0x11, .pe = 0x1c72,   .sdiv = 0x1,    .nsdiv = 1 },   /* 108   MHz */
-};
-
-static const struct stm_fs fs432c65_rtbl[] = {
-       { .mdiv = 0x1f, .pe = 0x0,      .sdiv = 0x7,    .nsdiv = 0 },   /* 625     Khz */
-       { .mdiv = 0x13, .pe = 0x777c,   .sdiv = 0x4,    .nsdiv = 1 },   /* 25.175  MHz */
-       { .mdiv = 0x19, .pe = 0x4d35,   .sdiv = 0x2,    .nsdiv = 0 },   /* 25.200  MHz */
-       { .mdiv = 0x11, .pe = 0x1c72,   .sdiv = 0x4,    .nsdiv = 1 },   /* 27.000  MHz */
-       { .mdiv = 0x17, .pe = 0x28f5,   .sdiv = 0x2,    .nsdiv = 0 },   /* 27.027  MHz */
-       { .mdiv = 0x16, .pe = 0x3359,   .sdiv = 0x2,    .nsdiv = 0 },   /* 28.320  MHz */
-       { .mdiv = 0x1f, .pe = 0x2083,   .sdiv = 0x3,    .nsdiv = 1 },   /* 30.240  MHz */
-       { .mdiv = 0x1e, .pe = 0x430d,   .sdiv = 0x3,    .nsdiv = 1 },   /* 31.500  MHz */
-       { .mdiv = 0x17, .pe = 0x0,      .sdiv = 0x3,    .nsdiv = 1 },   /* 40.000  MHz */
-       { .mdiv = 0x19, .pe = 0x121a,   .sdiv = 0x1,    .nsdiv = 0 },   /* 49.500  MHz */
-       { .mdiv = 0x13, .pe = 0x6667,   .sdiv = 0x3,    .nsdiv = 1 },   /* 50.000  MHz */
-       { .mdiv = 0x10, .pe = 0x1ee6,   .sdiv = 0x3,    .nsdiv = 1 },   /* 57.284  MHz */
-       { .mdiv = 0x1d, .pe = 0x3b14,   .sdiv = 0x2,    .nsdiv = 1 },   /* 65.000  MHz */
-       { .mdiv = 0x12, .pe = 0x7c65,   .sdiv = 0x1,    .nsdiv = 0 },   /* 71.000  MHz */
-       { .mdiv = 0x19, .pe = 0xecd,    .sdiv = 0x2,    .nsdiv = 1 },   /* 74.176  MHz */
-       { .mdiv = 0x19, .pe = 0x121a,   .sdiv = 0x2,    .nsdiv = 1 },   /* 74.250  MHz */
-       { .mdiv = 0x19, .pe = 0x3334,   .sdiv = 0x2,    .nsdiv = 1 },   /* 75.000  MHz */
-       { .mdiv = 0x18, .pe = 0x5138,   .sdiv = 0x2,    .nsdiv = 1 },   /* 78.800  MHz */
-       { .mdiv = 0x1d, .pe = 0x77d,    .sdiv = 0x0,    .nsdiv = 0 },   /* 85.500  MHz */
-       { .mdiv = 0x1c, .pe = 0x13d5,   .sdiv = 0x0,    .nsdiv = 0 },   /* 88.750  MHz */
-       { .mdiv = 0x11, .pe = 0x1c72,   .sdiv = 0x2,    .nsdiv = 1 },   /* 108.000 MHz */
-       { .mdiv = 0x17, .pe = 0x28f5,   .sdiv = 0x0,    .nsdiv = 0 },   /* 108.108 MHz */
-       { .mdiv = 0x10, .pe = 0x6e26,   .sdiv = 0x2,    .nsdiv = 1 },   /* 118.963 MHz */
-       { .mdiv = 0x15, .pe = 0x3e63,   .sdiv = 0x0,    .nsdiv = 0 },   /* 119.000 MHz */
-       { .mdiv = 0x1c, .pe = 0x471d,   .sdiv = 0x1,    .nsdiv = 1 },   /* 135.000 MHz */
-       { .mdiv = 0x19, .pe = 0xecd,    .sdiv = 0x1,    .nsdiv = 1 },   /* 148.352 MHz */
-       { .mdiv = 0x19, .pe = 0x121a,   .sdiv = 0x1,    .nsdiv = 1 },   /* 148.500 MHz */
-       { .mdiv = 0x19, .pe = 0x121a,   .sdiv = 0x0,    .nsdiv = 1 },   /* 297     MHz */
-};
-
 static const struct stm_fs fs660c32_rtbl[] = {
        { .mdiv = 0x14, .pe = 0x376b,   .sdiv = 0x4,    .nsdiv = 1 },   /* 25.175  MHz */
        { .mdiv = 0x14, .pe = 0x30c3,   .sdiv = 0x4,    .nsdiv = 1 },   /* 25.200  MHz */
@@ -144,168 +105,11 @@ struct clkgen_quadfs_data {
                        unsigned long *);
 };
 
-static const struct clk_ops st_quadfs_pll_c65_ops;
 static const struct clk_ops st_quadfs_pll_c32_ops;
-static const struct clk_ops st_quadfs_fs216c65_ops;
-static const struct clk_ops st_quadfs_fs432c65_ops;
 static const struct clk_ops st_quadfs_fs660c32_ops;
 
-static int clk_fs216c65_get_rate(unsigned long, const struct stm_fs *,
-               unsigned long *);
-static int clk_fs432c65_get_rate(unsigned long, const struct stm_fs *,
-               unsigned long *);
 static int clk_fs660c32_dig_get_rate(unsigned long, const struct stm_fs *,
                unsigned long *);
-/*
- * Values for all of the standalone instances of this clock
- * generator found in STiH415 and STiH416 SYSCFG register banks. Note
- * that the individual channel standby control bits (nsb) are in the
- * first register along with the PLL control bits.
- */
-static const struct clkgen_quadfs_data st_fs216c65_416 = {
-       /* 416 specific */
-       .npda   = CLKGEN_FIELD(0x0, 0x1, 14),
-       .nsb    = { CLKGEN_FIELD(0x0, 0x1, 10),
-                   CLKGEN_FIELD(0x0, 0x1, 11),
-                   CLKGEN_FIELD(0x0, 0x1, 12),
-                   CLKGEN_FIELD(0x0, 0x1, 13) },
-       .nsdiv_present = true,
-       .nsdiv  = { CLKGEN_FIELD(0x0, 0x1, 18),
-                   CLKGEN_FIELD(0x0, 0x1, 19),
-                   CLKGEN_FIELD(0x0, 0x1, 20),
-                   CLKGEN_FIELD(0x0, 0x1, 21) },
-       .mdiv   = { CLKGEN_FIELD(0x4, 0x1f, 0),
-                   CLKGEN_FIELD(0x14, 0x1f, 0),
-                   CLKGEN_FIELD(0x24, 0x1f, 0),
-                   CLKGEN_FIELD(0x34, 0x1f, 0) },
-       .en     = { CLKGEN_FIELD(0x10, 0x1, 0),
-                   CLKGEN_FIELD(0x20, 0x1, 0),
-                   CLKGEN_FIELD(0x30, 0x1, 0),
-                   CLKGEN_FIELD(0x40, 0x1, 0) },
-       .ndiv   = CLKGEN_FIELD(0x0, 0x1, 15),
-       .bwfilter_present = true,
-       .ref_bw = CLKGEN_FIELD(0x0, 0x3, 16),
-       .pe     = { CLKGEN_FIELD(0x8, 0xffff, 0),
-                   CLKGEN_FIELD(0x18, 0xffff, 0),
-                   CLKGEN_FIELD(0x28, 0xffff, 0),
-                   CLKGEN_FIELD(0x38, 0xffff, 0) },
-       .sdiv   = { CLKGEN_FIELD(0xC, 0x7, 0),
-                   CLKGEN_FIELD(0x1C, 0x7, 0),
-                   CLKGEN_FIELD(0x2C, 0x7, 0),
-                   CLKGEN_FIELD(0x3C, 0x7, 0) },
-       .pll_ops        = &st_quadfs_pll_c65_ops,
-       .rtbl           = fs216c65_rtbl,
-       .rtbl_cnt       = ARRAY_SIZE(fs216c65_rtbl),
-       .get_rate       = clk_fs216c65_get_rate,
-};
-
-static const struct clkgen_quadfs_data st_fs432c65_416 = {
-       .npda   = CLKGEN_FIELD(0x0, 0x1, 14),
-       .nsb    = { CLKGEN_FIELD(0x0, 0x1, 10),
-                   CLKGEN_FIELD(0x0, 0x1, 11),
-                   CLKGEN_FIELD(0x0, 0x1, 12),
-                   CLKGEN_FIELD(0x0, 0x1, 13) },
-       .nsdiv_present = true,
-       .nsdiv  = { CLKGEN_FIELD(0x0, 0x1, 18),
-                  CLKGEN_FIELD(0x0, 0x1, 19),
-                  CLKGEN_FIELD(0x0, 0x1, 20),
-                  CLKGEN_FIELD(0x0, 0x1, 21) },
-       .mdiv   = { CLKGEN_FIELD(0x4, 0x1f, 0),
-                   CLKGEN_FIELD(0x14, 0x1f, 0),
-                   CLKGEN_FIELD(0x24, 0x1f, 0),
-                   CLKGEN_FIELD(0x34, 0x1f, 0) },
-       .en     = { CLKGEN_FIELD(0x10, 0x1, 0),
-                   CLKGEN_FIELD(0x20, 0x1, 0),
-                   CLKGEN_FIELD(0x30, 0x1, 0),
-                   CLKGEN_FIELD(0x40, 0x1, 0) },
-       .ndiv   = CLKGEN_FIELD(0x0, 0x1, 15),
-       .bwfilter_present = true,
-       .ref_bw = CLKGEN_FIELD(0x0, 0x3, 16),
-       .pe     = { CLKGEN_FIELD(0x8, 0xffff, 0),
-                   CLKGEN_FIELD(0x18, 0xffff, 0),
-                   CLKGEN_FIELD(0x28, 0xffff, 0),
-                   CLKGEN_FIELD(0x38, 0xffff, 0) },
-       .sdiv   = { CLKGEN_FIELD(0xC, 0x7, 0),
-                   CLKGEN_FIELD(0x1C, 0x7, 0),
-                   CLKGEN_FIELD(0x2C, 0x7, 0),
-                   CLKGEN_FIELD(0x3C, 0x7, 0) },
-       .pll_ops        = &st_quadfs_pll_c65_ops,
-       .rtbl           = fs432c65_rtbl,
-       .rtbl_cnt       = ARRAY_SIZE(fs432c65_rtbl),
-       .get_rate       = clk_fs432c65_get_rate,
-};
-
-static const struct clkgen_quadfs_data st_fs660c32_E_416 = {
-       .npda   = CLKGEN_FIELD(0x0, 0x1, 14),
-       .nsb    = { CLKGEN_FIELD(0x0, 0x1, 10),
-                   CLKGEN_FIELD(0x0, 0x1, 11),
-                   CLKGEN_FIELD(0x0, 0x1, 12),
-                   CLKGEN_FIELD(0x0, 0x1, 13) },
-       .nsdiv_present = true,
-       .nsdiv  = { CLKGEN_FIELD(0x0, 0x1, 18),
-                   CLKGEN_FIELD(0x0, 0x1, 19),
-                   CLKGEN_FIELD(0x0, 0x1, 20),
-                   CLKGEN_FIELD(0x0, 0x1, 21) },
-       .mdiv   = { CLKGEN_FIELD(0x4, 0x1f, 0),
-                   CLKGEN_FIELD(0x14, 0x1f, 0),
-                   CLKGEN_FIELD(0x24, 0x1f, 0),
-                   CLKGEN_FIELD(0x34, 0x1f, 0) },
-       .en     = { CLKGEN_FIELD(0x10, 0x1, 0),
-                   CLKGEN_FIELD(0x20, 0x1, 0),
-                   CLKGEN_FIELD(0x30, 0x1, 0),
-                   CLKGEN_FIELD(0x40, 0x1, 0) },
-       .ndiv   = CLKGEN_FIELD(0x0, 0x7, 15),
-       .pe     = { CLKGEN_FIELD(0x8, 0x7fff, 0),
-                   CLKGEN_FIELD(0x18, 0x7fff, 0),
-                   CLKGEN_FIELD(0x28, 0x7fff, 0),
-                   CLKGEN_FIELD(0x38, 0x7fff, 0) },
-       .sdiv   = { CLKGEN_FIELD(0xC, 0xf, 0),
-                   CLKGEN_FIELD(0x1C, 0xf, 0),
-                   CLKGEN_FIELD(0x2C, 0xf, 0),
-                   CLKGEN_FIELD(0x3C, 0xf, 0) },
-       .lockstatus_present = true,
-       .lock_status = CLKGEN_FIELD(0xAC, 0x1, 0),
-       .pll_ops        = &st_quadfs_pll_c32_ops,
-       .rtbl           = fs660c32_rtbl,
-       .rtbl_cnt       = ARRAY_SIZE(fs660c32_rtbl),
-       .get_rate       = clk_fs660c32_dig_get_rate,
-};
-
-static const struct clkgen_quadfs_data st_fs660c32_F_416 = {
-       .npda   = CLKGEN_FIELD(0x0, 0x1, 14),
-       .nsb    = { CLKGEN_FIELD(0x0, 0x1, 10),
-                   CLKGEN_FIELD(0x0, 0x1, 11),
-                   CLKGEN_FIELD(0x0, 0x1, 12),
-                   CLKGEN_FIELD(0x0, 0x1, 13) },
-       .nsdiv_present = true,
-       .nsdiv  = { CLKGEN_FIELD(0x0, 0x1, 18),
-                   CLKGEN_FIELD(0x0, 0x1, 19),
-                   CLKGEN_FIELD(0x0, 0x1, 20),
-                   CLKGEN_FIELD(0x0, 0x1, 21) },
-       .mdiv   = { CLKGEN_FIELD(0x4, 0x1f, 0),
-                   CLKGEN_FIELD(0x14, 0x1f, 0),
-                   CLKGEN_FIELD(0x24, 0x1f, 0),
-                   CLKGEN_FIELD(0x34, 0x1f, 0) },
-       .en     = { CLKGEN_FIELD(0x10, 0x1, 0),
-                   CLKGEN_FIELD(0x20, 0x1, 0),
-                   CLKGEN_FIELD(0x30, 0x1, 0),
-                   CLKGEN_FIELD(0x40, 0x1, 0) },
-       .ndiv   = CLKGEN_FIELD(0x0, 0x7, 15),
-       .pe     = { CLKGEN_FIELD(0x8, 0x7fff, 0),
-                   CLKGEN_FIELD(0x18, 0x7fff, 0),
-                   CLKGEN_FIELD(0x28, 0x7fff, 0),
-                   CLKGEN_FIELD(0x38, 0x7fff, 0) },
-       .sdiv   = { CLKGEN_FIELD(0xC, 0xf, 0),
-                   CLKGEN_FIELD(0x1C, 0xf, 0),
-                   CLKGEN_FIELD(0x2C, 0xf, 0),
-                   CLKGEN_FIELD(0x3C, 0xf, 0) },
-       .lockstatus_present = true,
-       .lock_status = CLKGEN_FIELD(0xEC, 0x1, 0),
-       .pll_ops        = &st_quadfs_pll_c32_ops,
-       .rtbl           = fs660c32_rtbl,
-       .rtbl_cnt       = ARRAY_SIZE(fs660c32_rtbl),
-       .get_rate       = clk_fs660c32_dig_get_rate,
-};
 
 static const struct clkgen_quadfs_data st_fs660c32_C = {
        .nrst_present = true,
@@ -605,12 +409,6 @@ static int quadfs_pll_fs660c32_set_rate(struct clk_hw *hw, unsigned long rate,
        return 0;
 }
 
-static const struct clk_ops st_quadfs_pll_c65_ops = {
-       .enable         = quadfs_pll_enable,
-       .disable        = quadfs_pll_disable,
-       .is_enabled     = quadfs_pll_is_enabled,
-};
-
 static const struct clk_ops st_quadfs_pll_c32_ops = {
        .enable         = quadfs_pll_enable,
        .disable        = quadfs_pll_disable,
@@ -797,48 +595,6 @@ static int quadfs_fsynth_is_enabled(struct clk_hw *hw)
        return fs->data->standby_polarity ? !nsb : !!nsb;
 }
 
-#define P15                    (uint64_t)(1 << 15)
-
-static int clk_fs216c65_get_rate(unsigned long input, const struct stm_fs *fs,
-               unsigned long *rate)
-{
-       uint64_t res;
-       unsigned long ns;
-       unsigned long nd = 8; /* ndiv stuck at 0 => val = 8 */
-       unsigned long s;
-       long m;
-
-       m = fs->mdiv - 32;
-       s = 1 << (fs->sdiv + 1);
-       ns = (fs->nsdiv ? 1 : 3);
-
-       res = (uint64_t)(s * ns * P15 * (uint64_t)(m + 33));
-       res = res - (s * ns * fs->pe);
-       *rate = div64_u64(P15 * nd * input * 32, res);
-
-       return 0;
-}
-
-static int clk_fs432c65_get_rate(unsigned long input, const struct stm_fs *fs,
-               unsigned long *rate)
-{
-       uint64_t res;
-       unsigned long nd = 16; /* ndiv value; stuck at 0 (30Mhz input) */
-       long m;
-       unsigned long sd;
-       unsigned long ns;
-
-       m = fs->mdiv - 32;
-       sd = 1 << (fs->sdiv + 1);
-       ns = (fs->nsdiv ? 1 : 3);
-
-       res = (uint64_t)(sd * ns * P15 * (uint64_t)(m + 33));
-       res = res - (sd * ns * fs->pe);
-       *rate = div64_u64(P15 * nd * input * 32, res);
-
-       return 0;
-}
-
 #define P20            (uint64_t)(1 << 20)
 
 static int clk_fs660c32_dig_get_rate(unsigned long input,
@@ -1064,22 +820,6 @@ static struct clk * __init st_clk_register_quadfs_fsynth(
 }
 
 static const struct of_device_id quadfs_of_match[] = {
-       {
-               .compatible = "st,stih416-quadfs216",
-               .data = &st_fs216c65_416
-       },
-       {
-               .compatible = "st,stih416-quadfs432",
-               .data = &st_fs432c65_416
-       },
-       {
-               .compatible = "st,stih416-quadfs660-E",
-               .data = &st_fs660c32_E_416
-       },
-       {
-               .compatible = "st,stih416-quadfs660-F",
-               .data = &st_fs660c32_F_416
-       },
        {
                .compatible = "st,stih407-quadfs660-C",
                .data = &st_fs660c32_C