.. | .. |
---|
53 | 53 | { .reg = 0x09, .def = 0x0000 } |
---|
54 | 54 | }; |
---|
55 | 55 | |
---|
| 56 | +/* |
---|
| 57 | + * ssm2602 register patch |
---|
| 58 | + * Workaround for playback distortions after power up: activates digital |
---|
| 59 | + * core, and then powers on output, DAC, and whole chip at the same time |
---|
| 60 | + */ |
---|
| 61 | + |
---|
| 62 | +static const struct reg_sequence ssm2602_patch[] = { |
---|
| 63 | + { SSM2602_ACTIVE, 0x01 }, |
---|
| 64 | + { SSM2602_PWR, 0x07 }, |
---|
| 65 | + { SSM2602_RESET, 0x00 }, |
---|
| 66 | +}; |
---|
| 67 | + |
---|
56 | 68 | |
---|
57 | 69 | /*Appending several "None"s just for OSS mixer use*/ |
---|
58 | 70 | static const char *ssm2602_input_select[] = { |
---|
.. | .. |
---|
589 | 601 | return ret; |
---|
590 | 602 | } |
---|
591 | 603 | |
---|
| 604 | + regmap_register_patch(ssm2602->regmap, ssm2602_patch, |
---|
| 605 | + ARRAY_SIZE(ssm2602_patch)); |
---|
| 606 | + |
---|
592 | 607 | /* set the update bits */ |
---|
593 | 608 | regmap_update_bits(ssm2602->regmap, SSM2602_LINVOL, |
---|
594 | 609 | LINVOL_LRIN_BOTH, LINVOL_LRIN_BOTH); |
---|