#include <drm/drm_dp_helper.h>
 #include <drm/drm_panel.h>
 
+/**
+ * struct panel_delay - Describes delays for a simple panel.
+ */
+struct panel_delay {
+       /**
+        * @prepare: Time for the panel to become ready.
+        *
+        * The time (in milliseconds) that it takes for the panel to
+        * become ready and start receiving video data
+        */
+       unsigned int prepare;
+
+       /**
+        * @hpd_absent_delay: Time to wait if HPD isn't hooked up.
+        *
+        * Add this to the prepare delay if we know Hot Plug Detect
+        * isn't used.
+        */
+       unsigned int hpd_absent_delay;
+
+       /**
+        * @prepare_to_enable: Time between prepare and enable.
+        *
+        * The minimum time, in milliseconds, that needs to have passed
+        * between when prepare finished and enable may begin. If at
+        * enable time less time has passed since prepare finished,
+        * the driver waits for the remaining time.
+        *
+        * If a fixed enable delay is also specified, we'll start
+        * counting before delaying for the fixed delay.
+        *
+        * If a fixed prepare delay is also specified, we won't start
+        * counting until after the fixed delay. We can't overlap this
+        * fixed delay with the min time because the fixed delay
+        * doesn't happen at the end of the function if a HPD GPIO was
+        * specified.
+        *
+        * In other words:
+        *   prepare()
+        *     ...
+        *     // do fixed prepare delay
+        *     // wait for HPD GPIO if applicable
+        *     // start counting for prepare_to_enable
+        *
+        *   enable()
+        *     // do fixed enable delay
+        *     // enforce prepare_to_enable min time
+        */
+       unsigned int prepare_to_enable;
+
+       /**
+        * @enable: Time for the panel to display a valid frame.
+        *
+        * The time (in milliseconds) that it takes for the panel to
+        * display the first valid frame after starting to receive
+        * video data.
+        */
+       unsigned int enable;
+
+       /**
+        * @disable: Time for the panel to turn the display off.
+        *
+        * The time (in milliseconds) that it takes for the panel to
+        * turn the display off (no content is visible).
+        */
+       unsigned int disable;
+
+       /**
+        * @unprepare: Time to power down completely.
+        *
+        * The time (in milliseconds) that it takes for the panel
+        * to power itself down completely.
+        *
+        * This time is used to prevent a future "prepare" from
+        * starting until at least this many milliseconds has passed.
+        * If at prepare time less time has passed since unprepare
+        * finished, the driver waits for the remaining time.
+        */
+       unsigned int unprepare;
+};
+
 /**
  * struct panel_desc - Describes a simple panel.
  */
        } size;
 
        /** @delay: Structure containing various delay values for this panel. */
-       struct {
-               /**
-                * @delay.prepare: Time for the panel to become ready.
-                *
-                * The time (in milliseconds) that it takes for the panel to
-                * become ready and start receiving video data
-                */
-               unsigned int prepare;
-
-               /**
-                * @delay.hpd_absent_delay: Time to wait if HPD isn't hooked up.
-                *
-                * Add this to the prepare delay if we know Hot Plug Detect
-                * isn't used.
-                */
-               unsigned int hpd_absent_delay;
-
-               /**
-                * @delay.prepare_to_enable: Time between prepare and enable.
-                *
-                * The minimum time, in milliseconds, that needs to have passed
-                * between when prepare finished and enable may begin. If at
-                * enable time less time has passed since prepare finished,
-                * the driver waits for the remaining time.
-                *
-                * If a fixed enable delay is also specified, we'll start
-                * counting before delaying for the fixed delay.
-                *
-                * If a fixed prepare delay is also specified, we won't start
-                * counting until after the fixed delay. We can't overlap this
-                * fixed delay with the min time because the fixed delay
-                * doesn't happen at the end of the function if a HPD GPIO was
-                * specified.
-                *
-                * In other words:
-                *   prepare()
-                *     ...
-                *     // do fixed prepare delay
-                *     // wait for HPD GPIO if applicable
-                *     // start counting for prepare_to_enable
-                *
-                *   enable()
-                *     // do fixed enable delay
-                *     // enforce prepare_to_enable min time
-                */
-               unsigned int prepare_to_enable;
-
-               /**
-                * @delay.enable: Time for the panel to display a valid frame.
-                *
-                * The time (in milliseconds) that it takes for the panel to
-                * display the first valid frame after starting to receive
-                * video data.
-                */
-               unsigned int enable;
-
-               /**
-                * @delay.disable: Time for the panel to turn the display off.
-                *
-                * The time (in milliseconds) that it takes for the panel to
-                * turn the display off (no content is visible).
-                */
-               unsigned int disable;
-
-               /**
-                * @delay.unprepare: Time to power down completely.
-                *
-                * The time (in milliseconds) that it takes for the panel
-                * to power itself down completely.
-                *
-                * This time is used to prevent a future "prepare" from
-                * starting until at least this many milliseconds has passed.
-                * If at prepare time less time has passed since unprepare
-                * finished, the driver waits for the remaining time.
-                */
-               unsigned int unprepare;
-       } delay;
+       struct panel_delay delay;
 };
 
 struct panel_edp {