| .. | .. |
|---|
| 37 | 37 | { "AXG", 0x25 }, |
|---|
| 38 | 38 | { "GXLX", 0x26 }, |
|---|
| 39 | 39 | { "TXHD", 0x27 }, |
|---|
| 40 | + { "G12A", 0x28 }, |
|---|
| 41 | + { "G12B", 0x29 }, |
|---|
| 42 | + { "SM1", 0x2b }, |
|---|
| 43 | + { "A1", 0x2c }, |
|---|
| 40 | 44 | }; |
|---|
| 41 | 45 | |
|---|
| 42 | 46 | static const struct meson_gx_package_id { |
|---|
| .. | .. |
|---|
| 53 | 57 | { "S905W", 0x21, 0xa0, 0xf0 }, |
|---|
| 54 | 58 | { "S905L", 0x21, 0xc0, 0xf0 }, |
|---|
| 55 | 59 | { "S905M2", 0x21, 0xe0, 0xf0 }, |
|---|
| 60 | + { "S805X", 0x21, 0x30, 0xf0 }, |
|---|
| 61 | + { "S805Y", 0x21, 0xb0, 0xf0 }, |
|---|
| 56 | 62 | { "S912", 0x22, 0, 0x0 }, /* Only S912 is known for GXM */ |
|---|
| 57 | 63 | { "962X", 0x24, 0x10, 0xf0 }, |
|---|
| 58 | 64 | { "962E", 0x24, 0x20, 0xf0 }, |
|---|
| 59 | 65 | { "A113X", 0x25, 0x37, 0xff }, |
|---|
| 60 | 66 | { "A113D", 0x25, 0x22, 0xff }, |
|---|
| 67 | + { "S905D2", 0x28, 0x10, 0xf0 }, |
|---|
| 68 | + { "S905X2", 0x28, 0x40, 0xf0 }, |
|---|
| 69 | + { "A311D", 0x29, 0x10, 0xf0 }, |
|---|
| 70 | + { "S922X", 0x29, 0x40, 0xf0 }, |
|---|
| 71 | + { "S905D3", 0x2b, 0x4, 0xf5 }, |
|---|
| 72 | + { "S905X3", 0x2b, 0x5, 0xf5 }, |
|---|
| 73 | + { "S905X3", 0x2b, 0x10, 0x3f }, |
|---|
| 74 | + { "S905D3", 0x2b, 0x30, 0x3f }, |
|---|
| 75 | + { "A113L", 0x2c, 0x0, 0xf8 }, |
|---|
| 61 | 76 | }; |
|---|
| 62 | 77 | |
|---|
| 63 | 78 | static inline unsigned int socinfo_to_major(u32 socinfo) |
|---|
| .. | .. |
|---|
| 125 | 140 | return -ENODEV; |
|---|
| 126 | 141 | |
|---|
| 127 | 142 | /* check if interface is enabled */ |
|---|
| 128 | | - if (!of_device_is_available(np)) |
|---|
| 143 | + if (!of_device_is_available(np)) { |
|---|
| 144 | + of_node_put(np); |
|---|
| 129 | 145 | return -ENODEV; |
|---|
| 146 | + } |
|---|
| 130 | 147 | |
|---|
| 131 | 148 | /* check if chip-id is available */ |
|---|
| 132 | | - if (!of_property_read_bool(np, "amlogic,has-chip-id")) |
|---|
| 149 | + if (!of_property_read_bool(np, "amlogic,has-chip-id")) { |
|---|
| 150 | + of_node_put(np); |
|---|
| 133 | 151 | return -ENODEV; |
|---|
| 152 | + } |
|---|
| 134 | 153 | |
|---|
| 135 | 154 | /* node should be a syscon */ |
|---|
| 136 | 155 | regmap = syscon_node_to_regmap(np); |
|---|