@@ -146,38 +146,6 @@ static inline struct ssd130x_device *drm_to_ssd130x(struct drm_device *drm)
146
146
return container_of (drm , struct ssd130x_device , drm );
147
147
}
148
148
149
- static int ssd130x_buf_alloc (struct ssd130x_device * ssd130x )
150
- {
151
- unsigned int page_height = ssd130x -> device_info -> page_height ;
152
- unsigned int pages = DIV_ROUND_UP (ssd130x -> height , page_height );
153
- const struct drm_format_info * fi ;
154
- unsigned int pitch ;
155
-
156
- fi = drm_format_info (DRM_FORMAT_R1 );
157
- if (!fi )
158
- return - EINVAL ;
159
-
160
- pitch = drm_format_info_min_pitch (fi , 0 , ssd130x -> width );
161
-
162
- ssd130x -> buffer = kcalloc (pitch , ssd130x -> height , GFP_KERNEL );
163
- if (!ssd130x -> buffer )
164
- return - ENOMEM ;
165
-
166
- ssd130x -> data_array = kcalloc (ssd130x -> width , pages , GFP_KERNEL );
167
- if (!ssd130x -> data_array ) {
168
- kfree (ssd130x -> buffer );
169
- return - ENOMEM ;
170
- }
171
-
172
- return 0 ;
173
- }
174
-
175
- static void ssd130x_buf_free (struct ssd130x_device * ssd130x )
176
- {
177
- kfree (ssd130x -> data_array );
178
- kfree (ssd130x -> buffer );
179
- }
180
-
181
149
/*
182
150
* Helper to write data (SSD130X_DATA) to the device.
183
151
*/
@@ -709,6 +677,10 @@ static void ssd130x_encoder_helper_atomic_enable(struct drm_encoder *encoder,
709
677
{
710
678
struct drm_device * drm = encoder -> dev ;
711
679
struct ssd130x_device * ssd130x = drm_to_ssd130x (drm );
680
+ unsigned int page_height = ssd130x -> device_info -> page_height ;
681
+ unsigned int pages = DIV_ROUND_UP (ssd130x -> height , page_height );
682
+ const struct drm_format_info * fi ;
683
+ unsigned int pitch ;
712
684
int ret ;
713
685
714
686
ret = ssd130x_power_on (ssd130x );
@@ -719,9 +691,21 @@ static void ssd130x_encoder_helper_atomic_enable(struct drm_encoder *encoder,
719
691
if (ret )
720
692
goto power_off ;
721
693
722
- ret = ssd130x_buf_alloc (ssd130x );
723
- if (ret )
694
+ fi = drm_format_info (DRM_FORMAT_R1 );
695
+ if (!fi )
696
+ goto power_off ;
697
+
698
+ pitch = drm_format_info_min_pitch (fi , 0 , ssd130x -> width );
699
+
700
+ ssd130x -> buffer = kcalloc (pitch , ssd130x -> height , GFP_KERNEL );
701
+ if (!ssd130x -> buffer )
702
+ goto power_off ;
703
+
704
+ ssd130x -> data_array = kcalloc (ssd130x -> width , pages , GFP_KERNEL );
705
+ if (!ssd130x -> data_array ) {
706
+ kfree (ssd130x -> buffer );
724
707
goto power_off ;
708
+ }
725
709
726
710
ssd130x_write_cmd (ssd130x , 1 , SSD130X_DISPLAY_ON );
727
711
@@ -744,7 +728,8 @@ static void ssd130x_encoder_helper_atomic_disable(struct drm_encoder *encoder,
744
728
745
729
ssd130x_write_cmd (ssd130x , 1 , SSD130X_DISPLAY_OFF );
746
730
747
- ssd130x_buf_free (ssd130x );
731
+ kfree (ssd130x -> data_array );
732
+ kfree (ssd130x -> buffer );
748
733
749
734
ssd130x_power_off (ssd130x );
750
735
}
0 commit comments