X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=include%2Fvideo.h;h=43f2e2c02f0f5294bb3f75788536ea2efeb593a2;hb=4db386655a889b6466d2c3f40839ad21205c6d21;hp=5ac1387a395506c879951e42d3e39027eac38abb;hpb=4afab30caea3211032710c4298a8839d3254e7f7;p=platform%2Fkernel%2Fu-boot.git diff --git a/include/video.h b/include/video.h index 5ac1387..43f2e2c 100644 --- a/include/video.h +++ b/include/video.h @@ -1,13 +1,7 @@ /* - * Video uclass and legacy implementation + * Video uclass to support displays (see also vidconsole for text) * * Copyright (c) 2015 Google, Inc - * - * MPC823 Video Controller - * ======================= - * (C) 2000 by Paolo Scaffardi (arsenio@tin.it) - * AIRVENT SAM s.p.a - RIMINI(ITALY) - * */ #ifndef _VIDEO_H_ @@ -30,12 +24,14 @@ struct udevice; * @base: Base address of frame buffer, 0 if not yet known * @copy_base: Base address of a hardware copy of the frame buffer. See * CONFIG_VIDEO_COPY. + * @hide_logo: Hide the logo (used for testing) */ struct video_uc_plat { uint align; uint size; ulong base; ulong copy_base; + bool hide_logo; }; enum video_polarity { @@ -93,7 +89,6 @@ enum video_format { * @colour_bg: Background colour (pixel value) * @flush_dcache: true to enable flushing of the data cache after * the LCD is updated - * @cmap: Colour map for 8-bit-per-pixel displays * @fg_col_idx: Foreground color code (bit 3 = bold, bit 0-2 = color) * @bg_col_idx: Background color code (bit 3 = bold, bit 0-2 = color) */ @@ -118,7 +113,6 @@ struct video_priv { u32 colour_fg; u32 colour_bg; bool flush_dcache; - ushort *cmap; u8 fg_col_idx; u8 bg_col_idx; }; @@ -137,6 +131,41 @@ struct video_ops { #define video_get_ops(dev) ((struct video_ops *)(dev)->driver->ops) +/** enum colour_idx - the 16 colors supported by consoles */ +enum colour_idx { + VID_BLACK = 0, + VID_RED, + VID_GREEN, + VID_BROWN, + VID_BLUE, + VID_MAGENTA, + VID_CYAN, + VID_LIGHT_GRAY, + VID_GRAY, + VID_LIGHT_RED, + VID_LIGHT_GREEN, + VID_YELLOW, + VID_LIGHT_BLUE, + VID_LIGHT_MAGENTA, + VID_LIGHT_CYAN, + VID_WHITE, + + VID_COLOUR_COUNT +}; + +/** + * video_index_to_colour() - convert a color code to a pixel's internal + * representation + * + * The caller has to guarantee that the color index is less than + * VID_COLOR_COUNT. + * + * @priv private data of the console device + * @idx color index + * Return: color value + */ +u32 video_index_to_colour(struct video_priv *priv, unsigned int idx); + /** * video_reserve() - Reserve frame-buffer memory for video devices * @@ -151,19 +180,26 @@ struct video_ops { * * @addrp: On entry, the top of available memory. On exit, the new top, * after allocating the required memory. - * @return 0 + * Return: 0 */ int video_reserve(ulong *addrp); -#ifdef CONFIG_DM_VIDEO /** - * video_clear() - Clear a device's frame buffer to background color. + * video_clear() - Clear a device's frame buffer to background colour. * * @dev: Device to clear - * @return 0 + * Return: 0 on success */ int video_clear(struct udevice *dev); -#endif /* CONFIG_DM_VIDEO */ + +/** + * video_fill() - Fill a device's frame buffer to a colour. + * + * @dev: Device to fill + * @colour: Colour to use, in the frame buffer's format + * Return: 0 on success + */ +int video_fill(struct udevice *dev, u32 colour); /** * video_sync() - Sync a device's frame buffer with its hardware @@ -188,6 +224,17 @@ int video_sync(struct udevice *vid, bool force); void video_sync_all(void); /** + * video_bmp_get_info() - Get information about a bitmap image + * + * @bmp_image: Pointer to BMP image to check + * @widthp: Returns width in pixels + * @heightp: Returns height in pixels + * @bpixp: Returns log2 of bits per pixel + */ +void video_bmp_get_info(void *bmp_image, ulong *widthp, ulong *heightp, + uint *bpixp); + +/** * video_bmp_display() - Display a BMP file * * @dev: Device to display the bitmap on @@ -202,7 +249,7 @@ void video_sync_all(void); * - if a coordinate is -ve then it will be offset to the * left/top of the centre by that many pixels * - if a coordinate is positive it will be used unchnaged. - * @return 0 if OK, -ve on error + * Return: 0 if OK, -ve on error */ int video_bmp_display(struct udevice *dev, ulong bmp_image, int x, int y, bool align); @@ -211,7 +258,7 @@ int video_bmp_display(struct udevice *dev, ulong bmp_image, int x, int y, * video_get_xsize() - Get the width of the display in pixels * * @dev: Device to check - * @return device frame buffer width in pixels + * Return: device frame buffer width in pixels */ int video_get_xsize(struct udevice *dev); @@ -219,7 +266,7 @@ int video_get_xsize(struct udevice *dev); * video_get_ysize() - Get the height of the display in pixels * * @dev: Device to check - * @return device frame buffer height in pixels + * Return: device frame buffer height in pixels */ int video_get_ysize(struct udevice *dev); @@ -239,6 +286,15 @@ void video_set_flush_dcache(struct udevice *dev, bool flush); */ void video_set_default_colors(struct udevice *dev, bool invert); +/** + * video_default_font_height() - Get the default font height + * + * @dev: video device + * Returns: Default font height in pixels, which depends on which console driver + * is in use + */ +int video_default_font_height(struct udevice *dev); + #ifdef CONFIG_VIDEO_COPY /** * vidconsole_sync_copy() - Sync back to the copy framebuffer @@ -251,7 +307,7 @@ void video_set_default_colors(struct udevice *dev, bool invert); * @dev: Vidconsole device being updated * @from: Start/end address within the framebuffer (->fb) * @to: Other address within the frame buffer - * @return 0 if OK, -EFAULT if the start address is before the start of the + * Return: 0 if OK, -EFAULT if the start address is before the start of the * frame buffer start */ int video_sync_copy(struct udevice *dev, void *from, void *to); @@ -260,7 +316,7 @@ int video_sync_copy(struct udevice *dev, void *from, void *to); * video_sync_copy_all() - Sync the entire framebuffer to the copy * * @dev: Vidconsole device being updated - * @return 0 (always) + * Return: 0 (always) */ int video_sync_copy_all(struct udevice *dev); #else @@ -279,82 +335,24 @@ static inline int video_sync_copy_all(struct udevice *dev) /** * video_is_active() - Test if one video device it active * - * @return true if at least one video device is active, else false. + * Return: true if at least one video device is active, else false. */ bool video_is_active(void); -#ifndef CONFIG_DM_VIDEO - -/* Video functions */ - -/** - * Display a BMP format bitmap on the screen - * - * @param bmp_image Address of BMP image - * @param x X position to draw image - * @param y Y position to draw image - */ -int video_display_bitmap(ulong bmp_image, int x, int y); - -/** - * Get the width of the screen in pixels - * - * @return width of screen in pixels - */ -int video_get_pixel_width(void); - /** - * Get the height of the screen in pixels + * video_get_u_boot_logo() - Get a pointer to the U-Boot logo * - * @return height of screen in pixels + * Returns: Pointer to logo */ -int video_get_pixel_height(void); - -/** - * Get the number of text lines/rows on the screen - * - * @return number of rows - */ -int video_get_screen_rows(void); - -/** - * Get the number of text columns on the screen - * - * @return number of columns - */ -int video_get_screen_columns(void); - -/** - * Set the position of the text cursor - * - * @param col Column to place cursor (0 = left side) - * @param row Row to place cursor (0 = top line) - */ -void video_position_cursor(unsigned col, unsigned row); - -/* Clear the display */ -void video_clear(void); - -#if defined(CONFIG_FORMIKE) -int kwh043st20_f01_spi_startup(unsigned int bus, unsigned int cs, - unsigned int max_hz, unsigned int spi_mode); -#endif -#if defined(CONFIG_LG4573) -int lg4573_spi_startup(unsigned int bus, unsigned int cs, - unsigned int max_hz, unsigned int spi_mode); -#endif +void *video_get_u_boot_logo(void); /* - * video_get_info_str() - obtain a board string: type, speed, etc. - * - * This is called if CONFIG_CONSOLE_EXTRA_INFO is enabled. + * bmp_display() - Display BMP (bitmap) data located in memory * - * line_number: location to place info string beside logo - * info: buffer for info string (empty if nothing to display on this - * line) + * @addr: address of the bmp data + * @x: Position of bitmap from the left side, in pixels + * @y: Position of bitmap from the top, in pixels */ -void video_get_info_str(int line_number, char *info); - -#endif /* !CONFIG_DM_VIDEO */ +int bmp_display(ulong addr, int x, int y); #endif