Quelle pisp_common.h
Sprache: C
/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
/*
* RP1 PiSP common definitions .
*
* Copyright ( C ) 2021 - Raspberry Pi Ltd .
*
*/
#ifndef _UAPI_PISP_COMMON_H_
#define _UAPI_PISP_COMMON_H_
#include <linux/types.h>
struct pisp_image_format_config {
/* size in pixels */
__u16 width;
__u16 height;
/* must match struct pisp_image_format below */
__u32 format;
__s32 stride;
/* some planar image formats will need a second stride */
__s32 stride2;
} __attribute__((packed));
enum pisp_bayer_order {
/*
* Note how bayer_order & 1 tells you if G is on the even pixels of the
* checkerboard or not , and bayer_order & 2 tells you if R is on the even
* rows or is swapped with B . Note that if the top ( of the 8 ) bits is
* set , this denotes a monochrome or greyscale image , and the lower bits
* should all be ignored .
*/
PISP_BAYER_ORDER_RGGB = 0 ,
PISP_BAYER_ORDER_GBRG = 1 ,
PISP_BAYER_ORDER_BGGR = 2 ,
PISP_BAYER_ORDER_GRBG = 3 ,
PISP_BAYER_ORDER_GREYSCALE = 128
};
enum pisp_image_format {
/*
* Precise values are mostly tbd . Generally these will be portmanteau
* values comprising bit fields and flags . This format must be shared
* throughout the PiSP .
*/
PISP_IMAGE_FORMAT_BPS_8 = 0 x00000000,
PISP_IMAGE_FORMAT_BPS_10 = 0 x00000001,
PISP_IMAGE_FORMAT_BPS_12 = 0 x00000002,
PISP_IMAGE_FORMAT_BPS_16 = 0 x00000003,
PISP_IMAGE_FORMAT_BPS_MASK = 0 x00000003,
PISP_IMAGE_FORMAT_PLANARITY_INTERLEAVED = 0 x00000000,
PISP_IMAGE_FORMAT_PLANARITY_SEMI_PLANAR = 0 x00000010,
PISP_IMAGE_FORMAT_PLANARITY_PLANAR = 0 x00000020,
PISP_IMAGE_FORMAT_PLANARITY_MASK = 0 x00000030,
PISP_IMAGE_FORMAT_SAMPLING_444 = 0 x00000000,
PISP_IMAGE_FORMAT_SAMPLING_422 = 0 x00000100,
PISP_IMAGE_FORMAT_SAMPLING_420 = 0 x00000200,
PISP_IMAGE_FORMAT_SAMPLING_MASK = 0 x00000300,
PISP_IMAGE_FORMAT_ORDER_NORMAL = 0 x00000000,
PISP_IMAGE_FORMAT_ORDER_SWAPPED = 0 x00001000,
PISP_IMAGE_FORMAT_SHIFT_0 = 0 x00000000,
PISP_IMAGE_FORMAT_SHIFT_1 = 0 x00010000,
PISP_IMAGE_FORMAT_SHIFT_2 = 0 x00020000,
PISP_IMAGE_FORMAT_SHIFT_3 = 0 x00030000,
PISP_IMAGE_FORMAT_SHIFT_4 = 0 x00040000,
PISP_IMAGE_FORMAT_SHIFT_5 = 0 x00050000,
PISP_IMAGE_FORMAT_SHIFT_6 = 0 x00060000,
PISP_IMAGE_FORMAT_SHIFT_7 = 0 x00070000,
PISP_IMAGE_FORMAT_SHIFT_8 = 0 x00080000,
PISP_IMAGE_FORMAT_SHIFT_MASK = 0 x000f0000,
PISP_IMAGE_FORMAT_BPP_32 = 0 x00100000,
PISP_IMAGE_FORMAT_UNCOMPRESSED = 0 x00000000,
PISP_IMAGE_FORMAT_COMPRESSION_MODE_1 = 0 x01000000,
PISP_IMAGE_FORMAT_COMPRESSION_MODE_2 = 0 x02000000,
PISP_IMAGE_FORMAT_COMPRESSION_MODE_3 = 0 x03000000,
PISP_IMAGE_FORMAT_COMPRESSION_MASK = 0 x03000000,
PISP_IMAGE_FORMAT_HOG_SIGNED = 0 x04000000,
PISP_IMAGE_FORMAT_HOG_UNSIGNED = 0 x08000000,
PISP_IMAGE_FORMAT_INTEGRAL_IMAGE = 0 x10000000,
PISP_IMAGE_FORMAT_WALLPAPER_ROLL = 0 x20000000,
PISP_IMAGE_FORMAT_THREE_CHANNEL = 0 x40000000,
/* Lastly a few specific instantiations of the above. */
PISP_IMAGE_FORMAT_SINGLE_16 = PISP_IMAGE_FORMAT_BPS_16,
PISP_IMAGE_FORMAT_THREE_16 = PISP_IMAGE_FORMAT_BPS_16 |
PISP_IMAGE_FORMAT_THREE_CHANNEL
};
#define PISP_IMAGE_FORMAT_BPS_8(fmt) \
(((fmt) & PISP_IMAGE_FORMAT_BPS_MASK) == PISP_IMAGE_FORMAT_BPS_8)
#define PISP_IMAGE_FORMAT_BPS_10(fmt) \
(((fmt) & PISP_IMAGE_FORMAT_BPS_MASK) == PISP_IMAGE_FORMAT_BPS_10)
#define PISP_IMAGE_FORMAT_BPS_12(fmt) \
(((fmt) & PISP_IMAGE_FORMAT_BPS_MASK) == PISP_IMAGE_FORMAT_BPS_12)
#define PISP_IMAGE_FORMAT_BPS_16(fmt) \
(((fmt) & PISP_IMAGE_FORMAT_BPS_MASK) == PISP_IMAGE_FORMAT_BPS_16)
#define PISP_IMAGE_FORMAT_BPS(fmt) \
(((fmt) & PISP_IMAGE_FORMAT_BPS_MASK) ? \
8 + (2 << (((fmt) & PISP_IMAGE_FORMAT_BPS_MASK) - 1 )) : 8 )
#define PISP_IMAGE_FORMAT_SHIFT(fmt) \
(((fmt) & PISP_IMAGE_FORMAT_SHIFT_MASK) / PISP_IMAGE_FORMAT_SHIFT_1)
#define PISP_IMAGE_FORMAT_THREE_CHANNEL(fmt) \
((fmt) & PISP_IMAGE_FORMAT_THREE_CHANNEL)
#define PISP_IMAGE_FORMAT_SINGLE_CHANNEL(fmt) \
(!((fmt) & PISP_IMAGE_FORMAT_THREE_CHANNEL))
#define PISP_IMAGE_FORMAT_COMPRESSED(fmt) \
(((fmt) & PISP_IMAGE_FORMAT_COMPRESSION_MASK) != \
PISP_IMAGE_FORMAT_UNCOMPRESSED)
#define PISP_IMAGE_FORMAT_SAMPLING_444(fmt) \
(((fmt) & PISP_IMAGE_FORMAT_SAMPLING_MASK) == \
PISP_IMAGE_FORMAT_SAMPLING_444)
#define PISP_IMAGE_FORMAT_SAMPLING_422(fmt) \
(((fmt) & PISP_IMAGE_FORMAT_SAMPLING_MASK) == \
PISP_IMAGE_FORMAT_SAMPLING_422)
#define PISP_IMAGE_FORMAT_SAMPLING_420(fmt) \
(((fmt) & PISP_IMAGE_FORMAT_SAMPLING_MASK) == \
PISP_IMAGE_FORMAT_SAMPLING_420)
#define PISP_IMAGE_FORMAT_ORDER_NORMAL(fmt) \
(!((fmt) & PISP_IMAGE_FORMAT_ORDER_SWAPPED))
#define PISP_IMAGE_FORMAT_ORDER_SWAPPED(fmt) \
((fmt) & PISP_IMAGE_FORMAT_ORDER_SWAPPED)
#define PISP_IMAGE_FORMAT_INTERLEAVED(fmt) \
(((fmt) & PISP_IMAGE_FORMAT_PLANARITY_MASK) == \
PISP_IMAGE_FORMAT_PLANARITY_INTERLEAVED)
#define PISP_IMAGE_FORMAT_SEMIPLANAR(fmt) \
(((fmt) & PISP_IMAGE_FORMAT_PLANARITY_MASK) == \
PISP_IMAGE_FORMAT_PLANARITY_SEMI_PLANAR)
#define PISP_IMAGE_FORMAT_PLANAR(fmt) \
(((fmt) & PISP_IMAGE_FORMAT_PLANARITY_MASK) == \
PISP_IMAGE_FORMAT_PLANARITY_PLANAR)
#define PISP_IMAGE_FORMAT_WALLPAPER(fmt) \
((fmt) & PISP_IMAGE_FORMAT_WALLPAPER_ROLL)
#define PISP_IMAGE_FORMAT_BPP_32(fmt) ((fmt) & PISP_IMAGE_FORMAT_BPP_32)
#define PISP_IMAGE_FORMAT_HOG(fmt) \
((fmt) & \
(PISP_IMAGE_FORMAT_HOG_SIGNED | PISP_IMAGE_FORMAT_HOG_UNSIGNED))
#define PISP_WALLPAPER_WIDTH 128 /* in bytes */
struct pisp_bla_config {
__u16 black_level_r;
__u16 black_level_gr;
__u16 black_level_gb;
__u16 black_level_b;
__u16 output_black_level;
__u8 pad[2 ];
} __attribute__((packed));
struct pisp_wbg_config {
__u16 gain_r;
__u16 gain_g;
__u16 gain_b;
__u8 pad[2 ];
} __attribute__((packed));
struct pisp_compress_config {
/* value subtracted from incoming data */
__u16 offset;
__u8 pad;
/* 1 => Companding; 2 => Delta (recommended); 3 => Combined (for HDR) */
__u8 mode;
} __attribute__((packed));
struct pisp_decompress_config {
/* value added to reconstructed data */
__u16 offset;
__u8 pad;
/* 1 => Companding; 2 => Delta (recommended); 3 => Combined (for HDR) */
__u8 mode;
} __attribute__((packed));
enum pisp_axi_flags {
/*
* round down bursts to end at a 32 - byte boundary , to align following
* bursts
*/
PISP_AXI_FLAG_ALIGN = 128 ,
/* for FE writer: force WSTRB high, to pad output to 16-byte boundary */
PISP_AXI_FLAG_PAD = 64 ,
/* for FE writer: Use Output FIFO level to trigger "panic" */
PISP_AXI_FLAG_PANIC = 32 ,
};
struct pisp_axi_config {
/*
* burst length minus one , which must be in the range 0 : 15 ; OR ' d with
* flags
*/
__u8 maxlen_flags;
/* { prot[2:0], cache[3:0] } fields, echoed on AXI bus */
__u8 cache_prot;
/* QoS field(s) (4x4 bits for FE writer; 4 bits for other masters) */
__u16 qos;
} __attribute__((packed));
#endif /* _UAPI_PISP_COMMON_H_ */
Messung V0.5 in Prozent C=91 H=100 G=95
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-10-02)
¤
*© Formatika GbR, Deutschland
2026-10-10
Neuigkeiten
Aktuelles
Motto des Tages
Open Source Software
Jenseits des Üblichen ....
Besucherstatistik
Statistik
#Sources=1126864
#Domains=1897691