Ulises Mendez Martinez b38e72d30c ANDROID: Add initial symbols list for db845c
* This update the ABI [STG] definition:

197 function symbol(s) added
  'int __clk_mux_determine_rate(struct clk_hw*, struct clk_rate_request*)'
  'struct clk_hw* __devm_clk_hw_register_divider(struct device*, struct device_node*, const char*, const char*, const struct clk_hw*, const struct clk_parent_data*, unsigned long, void*, u8, u8, u8, const struct clk_div_table*, spinlock_t*)'
  'struct clk_hw* __devm_clk_hw_register_mux(struct device*, struct device_node*, const char*, u8, const char* const*, const struct clk_hw**, const struct clk_parent_data*, unsigned long, void*, u8, u32, u8, const u32*, spinlock_t*)'
  'int __devm_reset_control_bulk_get(struct device*, int, struct reset_control_bulk_data*, bool, bool, bool)'
  'struct spi_controller* __devm_spi_alloc_controller(struct device*, unsigned int, bool)'
  'struct dma_chan* __dma_request_channel(const dma_cap_mask_t*, dma_filter_fn, void*, struct device_node*)'
  'void __drm_atomic_helper_plane_reset(struct drm_plane*, struct drm_plane_state*)'
  'struct reset_control* __of_reset_control_get(struct device_node*, const char*, int, bool, bool, bool)'
  'struct reset_control* __reset_control_get(struct device*, const char*, int, bool, bool, bool)'
  'wait_queue_head_t* __var_waitqueue(void*)'
  'void* __vmalloc(unsigned long, gfp_t)'
  'struct clk* clk_hw_get_clk(struct clk_hw*, const char*)'
  'int component_compare_of(struct device*, void*)'
  'int crypto_register_shash(struct shash_alg*)'
  'void crypto_unregister_shash(struct shash_alg*)'
  'int dapm_regulator_event(struct snd_soc_dapm_widget*, struct snd_kcontrol*, int)'
  'struct dev_pm_opp* dev_pm_opp_find_level_exact(struct device*, unsigned int)'
  'unsigned int dev_pm_opp_get_level(struct dev_pm_opp*)'
  'struct device_node* dev_pm_opp_get_of_node(struct dev_pm_opp*)'
  'struct device_node* dev_pm_opp_of_get_opp_desc_node(struct device*)'
  'int device_get_mac_address(struct device*, char*)'
  'struct fwnode_handle* device_get_named_child_node(struct device*, const char*)'
  'int devm_clk_bulk_get_optional(struct device*, int, struct clk_bulk_data*)'
  'struct clk_hw* devm_clk_hw_register_fixed_factor_parent_hw(struct device*, const char*, const struct clk_hw*, unsigned long, unsigned int, unsigned int)'
  'struct devfreq* devm_devfreq_add_device(struct device*, struct devfreq_dev_profile*, const char*, void*)'
  'struct clk* devm_get_clk_from_child(struct device*, struct device_node*, const char*)'
  'struct gpio_desc* devm_gpiod_get_index(struct device*, const char*, unsigned int, enum gpiod_flags)'
  'void devm_gpiod_put(struct device*, struct gpio_desc*)'
  'int devm_led_classdev_multicolor_register_ext(struct device*, struct led_classdev_mc*, struct led_init_data*)'
  'void* devm_memremap(struct device*, resource_size_t, size_t, unsigned long)'
  'int devm_pm_clk_create(struct device*)'
  'int devm_pm_opp_of_add_table(struct device*)'
  'int devm_pm_opp_set_config(struct device*, struct dev_pm_opp_config*)'
  'int devm_pm_runtime_enable(struct device*)'
  'struct qcom_smem_state* devm_qcom_smem_state_get(struct device*, const char*, unsigned int*)'
  'int devm_regulator_bulk_get_const(struct device*, int, const struct regulator_bulk_data*, struct regulator_bulk_data**)'
  'struct reset_control* devm_reset_control_array_get(struct device*, bool, bool)'
  'int devm_spi_register_controller(struct device*, struct spi_controller*)'
  'int devm_watchdog_register_device(struct device*, struct watchdog_device*)'
  'void* dma_pool_alloc(struct dma_pool*, gfp_t, dma_addr_t*)'
  'struct dma_pool* dma_pool_create(const char*, struct device*, size_t, size_t, size_t)'
  'void dma_pool_destroy(struct dma_pool*)'
  'void dma_pool_free(struct dma_pool*, void*, dma_addr_t)'
  'void dma_resv_describe(struct dma_resv*, struct seq_file*)'
  'struct dma_fence* dma_resv_iter_first(struct dma_resv_iter*)'
  'struct dma_fence* dma_resv_iter_next(struct dma_resv_iter*)'
  'struct drm_bridge_state* drm_atomic_get_new_bridge_state(struct drm_atomic_state*, struct drm_bridge*)'
  'void drm_atomic_print_new_state(const struct drm_atomic_state*, struct drm_printer*)'
  'void drm_bridge_connector_enable_hpd(struct drm_connector*)'
  'struct drm_connector* drm_bridge_connector_init(struct drm_device*, struct drm_encoder*)'
  'enum drm_connector_status drm_bridge_detect(struct drm_bridge*)'
  'void drm_bridge_hpd_notify(struct drm_bridge*, enum drm_connector_status)'
  'bool drm_crtc_vblank_helper_get_vblank_timestamp(struct drm_crtc*, int*, ktime_t*, bool)'
  'bool drm_edid_block_valid(u8*, int, bool, bool*)'
  'void drm_flip_work_cleanup(struct drm_flip_work*)'
  'void drm_flip_work_commit(struct drm_flip_work*, struct workqueue_struct*)'
  'void drm_flip_work_init(struct drm_flip_work*, const char*, drm_flip_func_t)'
  'void drm_flip_work_queue(struct drm_flip_work*, void*)'
  'void drm_gem_lru_init(struct drm_gem_lru*, struct mutex*)'
  'void drm_gem_lru_move_tail(struct drm_gem_lru*, struct drm_gem_object*)'
  'unsigned long drm_gem_lru_scan(struct drm_gem_lru*, unsigned int, bool(*)(struct drm_gem_object*))'
  'int drm_gem_plane_helper_prepare_fb(struct drm_plane*, struct drm_plane_state*)'
  'bool drm_handle_vblank(struct drm_device*, unsigned int)'
  'int drm_hdmi_avi_infoframe_from_display_mode(struct hdmi_avi_infoframe*, const struct drm_connector*, const struct drm_display_mode*)'
  'void drm_helper_move_panel_connectors_to_head(struct drm_device*)'
  'int drm_mode_config_helper_resume(struct drm_device*)'
  'int drm_mode_config_helper_suspend(struct drm_device*)'
  'void drm_mode_destroy(struct drm_device*, struct drm_display_mode*)'
  'void drm_modeset_lock_init(struct drm_modeset_lock*)'
  'void drm_plane_enable_fb_damage_clips(struct drm_plane*)'
  'int drm_prime_sg_to_page_array(struct sg_table*, struct page**, int)'
  'bool drm_probe_ddc(struct i2c_adapter*)'
  'void drm_puts(struct drm_printer*, const char*)'
  'int drm_rect_calc_hscale(const struct drm_rect*, const struct drm_rect*, int, int)'
  'int drm_rect_calc_vscale(const struct drm_rect*, const struct drm_rect*, int, int)'
  'void drm_state_dump(struct drm_device*, struct drm_printer*)'
  'void drm_syncobj_add_point(struct drm_syncobj*, struct dma_fence_chain*, struct dma_fence*, uint64_t)'
  'struct drm_syncobj* drm_syncobj_find(struct drm_file*, u32)'
  'int drm_syncobj_find_fence(struct drm_file*, u32, u64, u64, struct dma_fence**)'
  'void drm_syncobj_free(struct kref*)'
  'void drm_syncobj_replace_fence(struct drm_syncobj*, struct dma_fence*)'
  'int drm_writeback_connector_init_with_encoder(struct drm_device*, struct drm_writeback_connector*, struct drm_encoder*, const struct drm_connector_funcs*, const u32*, int)'
  'struct usb_role_switch* fwnode_usb_role_switch_get(struct fwnode_handle*)'
  'void* gen_pool_dma_alloc_align(struct gen_pool*, size_t, dma_addr_t*, int)'
  'void* gen_pool_dma_zalloc_align(struct gen_pool*, size_t, dma_addr_t*, int)'
  'void guid_gen(guid_t*)'
  'int hdmi_audio_infoframe_init(struct hdmi_audio_infoframe*)'
  'ssize_t hdmi_audio_infoframe_pack(struct hdmi_audio_infoframe*, void*, size_t)'
  'ssize_t hdmi_infoframe_pack(union hdmi_infoframe*, void*, size_t)'
  'int i2c_generic_scl_recovery(struct i2c_adapter*)'
  'void i2c_parse_fw_timings(struct device*, struct i2c_timings*, bool)'
  'int i2c_recover_bus(struct i2c_adapter*)'
  'int icc_disable(struct icc_path*)'
  'int icc_enable(struct icc_path*)'
  'int icc_std_aggregate(struct icc_node*, u32, u32, u32, u32*, u32*)'
  'void init_wait_var_entry(struct wait_bit_queue_entry*, void*, int)'
  'unsigned long invalidate_mapping_pages(struct address_space*, unsigned long, unsigned long)'
  'char* kstrdup_quotable_cmdline(struct task_struct*, gfp_t)'
  'int led_mc_calc_color_components(struct led_classdev_mc*, enum led_brightness)'
  'void memcpy_and_pad(void*, size_t, const void*, size_t, int)'
  'void netdev_notice(const struct net_device*, const char*, ...)'
  'int nvmem_cell_read_variable_le_u32(struct device*, const char*, u32*)'
  'struct clk_hw* of_clk_hw_onecell_get(struct of_phandle_args*, void*)'
  'int of_clk_set_defaults(struct device_node*, bool)'
  'int of_device_request_module(struct device*)'
  'struct device_node* of_get_compatible_child(const struct device_node*, const char*)'
  'struct i2c_adapter* of_get_i2c_adapter_by_node(struct device_node*)'
  'int of_pm_clk_add_clks(struct device*)'
  'int pci_enable_msi(struct pci_dev*)'
  'struct pci_dev* pci_get_slot(struct pci_bus*, unsigned int)'
  'const struct pci_device_id* pci_match_id(const struct pci_device_id*, struct pci_dev*)'
  'int pcie_capability_write_word(struct pci_dev*, int, u16)'
  'int phy_configure(struct phy*, union phy_configure_opts*)'
  'int pinctrl_generic_add_group(struct pinctrl_dev*, const char*, int*, int, void*)'
  'int pinctrl_generic_get_group_count(struct pinctrl_dev*)'
  'const char* pinctrl_generic_get_group_name(struct pinctrl_dev*, unsigned int)'
  'int pinctrl_generic_get_group_pins(struct pinctrl_dev*, unsigned int, const unsigned int**, unsigned int*)'
  'int pinctrl_generic_remove_group(struct pinctrl_dev*, unsigned int)'
  'int pinctrl_pm_select_idle_state(struct device*)'
  'int pm_generic_runtime_resume(struct device*)'
  'int pm_generic_runtime_suspend(struct device*)'
  'void qcom_smem_state_put(struct qcom_smem_state*)'
  'void regcache_cache_bypass(struct regmap*, bool)'
  'int register_vmap_purge_notifier(struct notifier_block*)'
  'int regmap_get_val_bytes(struct regmap*)'
  'int regmap_irq_set_type_config_simple(unsigned int**, unsigned int, const struct regmap_irq*, int)'
  'int regmap_noinc_read(struct regmap*, unsigned int, void*, size_t)'
  'int regmap_noinc_write(struct regmap*, unsigned int, const void*, size_t)'
  'int regulator_bulk_get(struct device*, int, struct regulator_bulk_data*)'
  'int regulator_get_current_limit_regmap(struct regulator_dev*)'
  'unsigned int regulator_get_linear_step(struct regulator*)'
  'int regulator_set_current_limit_regmap(struct regulator_dev*, int, int)'
  'int reset_control_bulk_assert(int, struct reset_control_bulk_data*)'
  'int reset_control_bulk_deassert(int, struct reset_control_bulk_data*)'
  'void reset_control_put(struct reset_control*)'
  'struct rpmsg_device* rpmsg_create_channel(struct rpmsg_device*, struct rpmsg_channel_info*)'
  'struct rpmsg_endpoint* rpmsg_create_ept(struct rpmsg_device*, rpmsg_rx_cb_t, void*, struct rpmsg_channel_info)'
  'int rpmsg_release_channel(struct rpmsg_device*, struct rpmsg_channel_info*)'
  'u64 rproc_elf_get_boot_addr(struct rproc*, const struct firmware*)'
  'void sb800_prefetch(struct device*, int)'
  'void shmem_truncate_range(struct inode*, loff_t, loff_t)'
  'int snd_dma_alloc_dir_pages(int, struct device*, enum dma_data_direction, size_t, struct snd_dma_buffer*)'
  'void snd_dma_free_pages(struct snd_dma_buffer*)'
  'int snd_pcm_create_iec958_consumer_default(u8*, size_t)'
  'int snd_pcm_fill_iec958_consumer(struct snd_pcm_runtime*, u8*, size_t)'
  'int snd_pcm_fill_iec958_consumer_hw_params(struct snd_pcm_hw_params*, u8*, size_t)'
  'int snd_pcm_hw_constraint_eld(struct snd_pcm_runtime*, void*)'
  'int snd_pcm_hw_constraint_minmax(struct snd_pcm_runtime*, snd_pcm_hw_param_t, unsigned int, unsigned int)'
  'int snd_pcm_hw_constraint_step(struct snd_pcm_runtime*, unsigned int, snd_pcm_hw_param_t, unsigned long)'
  'unsigned int snd_soc_component_read_field(struct snd_soc_component*, unsigned int, unsigned int)'
  'int snd_soc_component_write_field(struct snd_soc_component*, unsigned int, unsigned int, unsigned int)'
  'void snd_soc_dai_link_set_capabilities(struct snd_soc_dai_link*)'
  'int snd_soc_dai_set_fmt(struct snd_soc_dai*, unsigned int)'
  'struct snd_soc_dapm_context* snd_soc_dapm_kcontrol_dapm(struct snd_kcontrol*)'
  'int snd_soc_of_parse_audio_simple_widgets(struct snd_soc_card*, const char*)'
  'int snd_soc_of_parse_aux_devs(struct snd_soc_card*, const char*)'
  'int snd_soc_of_parse_pin_switches(struct snd_soc_card*, const char*)'
  'int snd_soc_tplg_component_load(struct snd_soc_component*, struct snd_soc_tplg_ops*, const struct firmware*)'
  'int snd_soc_tplg_component_remove(struct snd_soc_component*)'
  'int snd_soc_tplg_widget_bind_event(struct snd_soc_dapm_widget*, const struct snd_soc_tplg_widget_events*, int, u16)'
  'int spi_async(struct spi_device*, struct spi_message*)'
  'void spi_finalize_current_transfer(struct spi_controller*)'
  'const struct spi_device_id* spi_get_device_id(const struct spi_device*)'
  'struct spi_message* spi_get_next_queued_message(struct spi_controller*)'
  'int spi_write_then_read(struct spi_device*, const void*, unsigned int, void*, unsigned int)'
  'int typec_find_port_data_role(const char*)'
  'int typec_find_port_power_role(const char*)'
  'int typec_set_orientation(struct typec_port*, enum typec_orientation)'
  'void typec_unregister_port(struct typec_port*)'
  'int ufshcd_dme_configure_adapt(struct ufs_hba*, int, int)'
  'int ufshcd_get_pwr_dev_param(const struct ufs_dev_params*, const struct ufs_pa_layer_attr*, struct ufs_pa_layer_attr*)'
  'void ufshcd_init_pwr_dev_param(struct ufs_dev_params*)'
  'int unregister_vmap_purge_notifier(struct notifier_block*)'
  'void usb_amd_dev_put()'
  'bool usb_amd_prefetch_quirk()'
  'bool usb_amd_quirk_pll_check()'
  'void usb_amd_quirk_pll_disable()'
  'void usb_amd_quirk_pll_enable()'
  'long usb_calc_bus_time(int, int, int, int)'
  'void usb_hc_died(struct usb_hcd*)'
  'int usb_hcd_pci_probe(struct pci_dev*, const struct hc_driver*)'
  'void usb_hcd_pci_remove(struct pci_dev*)'
  'void usb_hcd_pci_shutdown(struct pci_dev*)'
  'void usb_role_switch_put(struct usb_role_switch*)'
  'void usb_root_hub_lost_power(struct usb_device*)'
  'int v4l2_ctrl_handler_setup(struct v4l2_ctrl_handler*)'
  'struct v4l2_ctrl* v4l2_ctrl_new_std_compound(struct v4l2_ctrl_handler*, const struct v4l2_ctrl_ops*, u32, union v4l2_ctrl_ptr)'
  'void v4l2_m2m_buf_remove_by_buf(struct v4l2_m2m_queue_ctx*, struct vb2_v4l2_buffer*)'
  'struct vb2_v4l2_buffer* v4l2_m2m_buf_remove_by_idx(struct v4l2_m2m_queue_ctx*, unsigned int)'
  'int v4l2_m2m_ioctl_create_bufs(struct file*, void*, struct v4l2_create_buffers*)'
  'int v4l2_m2m_ioctl_expbuf(struct file*, void*, struct v4l2_exportbuffer*)'
  'int v4l2_m2m_ioctl_prepare_buf(struct file*, void*, struct v4l2_buffer*)'
  'int v4l2_m2m_ioctl_qbuf(struct file*, void*, struct v4l2_buffer*)'
  'int v4l2_m2m_ioctl_try_decoder_cmd(struct file*, void*, struct v4l2_decoder_cmd*)'
  'int v4l2_m2m_ioctl_try_encoder_cmd(struct file*, void*, struct v4l2_encoder_cmd*)'
  'void vb2_queue_error(struct vb2_queue*)'
  'void wake_up_var(void*)'

5 variable symbol(s) added
  'atomic_long_t nr_swap_pages'
  'struct ww_class reservation_ww_class'
  'const struct dev_pm_ops usb_hcd_pci_pm_ops'
  'unsigned long usb_hcds_loaded'
  'const struct vb2_mem_ops vb2_dma_contig_memops'

Bug: 270670362
Change-Id: I8b3fd2b73ccc3ad91267515c647bc8242695fb52
Signed-off-by: Ulises Mendez Martinez <umendez@google.com>
2023-02-27 11:32:18 +00:00
2023-02-09 13:29:55 +00:00
2023-02-09 13:29:55 +00:00
2023-01-18 18:50:42 +00:00
2023-02-22 12:32:41 +00:00
2023-02-09 13:29:55 +00:00
2023-02-22 12:32:41 +00:00
2023-02-01 09:12:59 +00:00
2023-02-09 13:29:55 +00:00
2023-02-22 12:32:41 +00:00
2023-02-22 12:32:41 +00:00
2022-09-28 09:02:20 +02:00
2022-09-28 09:02:20 +02:00
2023-01-26 12:13:04 +00:00
2023-02-22 12:32:41 +00:00
2022-12-01 13:06:20 +00:00
2022-06-18 10:41:40 -07:00
2022-08-22 16:34:52 +00:00

How do I submit patches to Android Common Kernels

  1. BEST: Make all of your changes to upstream Linux. If appropriate, backport to the stable releases. These patches will be merged automatically in the corresponding common kernels. If the patch is already in upstream Linux, post a backport of the patch that conforms to the patch requirements below.

    • Do not send patches upstream that contain only symbol exports. To be considered for upstream Linux, additions of EXPORT_SYMBOL_GPL() require an in-tree modular driver that uses the symbol -- so include the new driver or changes to an existing driver in the same patchset as the export.
    • When sending patches upstream, the commit message must contain a clear case for why the patch is needed and beneficial to the community. Enabling out-of-tree drivers or functionality is not not a persuasive case.
  2. LESS GOOD: Develop your patches out-of-tree (from an upstream Linux point-of-view). Unless these are fixing an Android-specific bug, these are very unlikely to be accepted unless they have been coordinated with kernel-team@android.com. If you want to proceed, post a patch that conforms to the patch requirements below.

Common Kernel patch requirements

  • All patches must conform to the Linux kernel coding standards and pass scripts/checkpatch.pl
  • Patches shall not break gki_defconfig or allmodconfig builds for arm, arm64, x86, x86_64 architectures (see https://source.android.com/setup/build/building-kernels)
  • If the patch is not merged from an upstream branch, the subject must be tagged with the type of patch: UPSTREAM:, BACKPORT:, FROMGIT:, FROMLIST:, or ANDROID:.
  • All patches must have a Change-Id: tag (see https://gerrit-review.googlesource.com/Documentation/user-changeid.html)
  • If an Android bug has been assigned, there must be a Bug: tag.
  • All patches must have a Signed-off-by: tag by the author and the submitter

Additional requirements are listed below based on patch type

Requirements for backports from mainline Linux: UPSTREAM:, BACKPORT:

  • If the patch is a cherry-pick from Linux mainline with no changes at all
    • tag the patch subject with UPSTREAM:.
    • add upstream commit information with a (cherry picked from commit ...) line
    • Example:
      • if the upstream commit message is
        important patch from upstream

        This is the detailed description of the important patch

        Signed-off-by: Fred Jones <fred.jones@foo.org>
  • then Joe Smith would upload the patch for the common kernel as
        UPSTREAM: important patch from upstream

        This is the detailed description of the important patch

        Signed-off-by: Fred Jones <fred.jones@foo.org>

        Bug: 135791357
        Change-Id: I4caaaa566ea080fa148c5e768bb1a0b6f7201c01
        (cherry picked from commit c31e73121f4c1ec41143423ac6ce3ce6dafdcec1)
        Signed-off-by: Joe Smith <joe.smith@foo.org>
  • If the patch requires any changes from the upstream version, tag the patch with BACKPORT: instead of UPSTREAM:.
    • use the same tags as UPSTREAM:
    • add comments about the changes under the (cherry picked from commit ...) line
    • Example:
        BACKPORT: important patch from upstream

        This is the detailed description of the important patch

        Signed-off-by: Fred Jones <fred.jones@foo.org>

        Bug: 135791357
        Change-Id: I4caaaa566ea080fa148c5e768bb1a0b6f7201c01
        (cherry picked from commit c31e73121f4c1ec41143423ac6ce3ce6dafdcec1)
        [joe: Resolved minor conflict in drivers/foo/bar.c ]
        Signed-off-by: Joe Smith <joe.smith@foo.org>

Requirements for other backports: FROMGIT:, FROMLIST:,

  • If the patch has been merged into an upstream maintainer tree, but has not yet been merged into Linux mainline
    • tag the patch subject with FROMGIT:
    • add info on where the patch came from as (cherry picked from commit <sha1> <repo> <branch>). This must be a stable maintainer branch (not rebased, so don't use linux-next for example).
    • if changes were required, use BACKPORT: FROMGIT:
    • Example:
      • if the commit message in the maintainer tree is
        important patch from upstream

        This is the detailed description of the important patch

        Signed-off-by: Fred Jones <fred.jones@foo.org>
  • then Joe Smith would upload the patch for the common kernel as
        FROMGIT: important patch from upstream

        This is the detailed description of the important patch

        Signed-off-by: Fred Jones <fred.jones@foo.org>

        Bug: 135791357
        (cherry picked from commit 878a2fd9de10b03d11d2f622250285c7e63deace
         https://git.kernel.org/pub/scm/linux/kernel/git/foo/bar.git test-branch)
        Change-Id: I4caaaa566ea080fa148c5e768bb1a0b6f7201c01
        Signed-off-by: Joe Smith <joe.smith@foo.org>
  • If the patch has been submitted to LKML, but not accepted into any maintainer tree
    • tag the patch subject with FROMLIST:
    • add a Link: tag with a link to the submittal on lore.kernel.org
    • add a Bug: tag with the Android bug (required for patches not accepted into a maintainer tree)
    • if changes were required, use BACKPORT: FROMLIST:
    • Example:
        FROMLIST: important patch from upstream

        This is the detailed description of the important patch

        Signed-off-by: Fred Jones <fred.jones@foo.org>

        Bug: 135791357
        Link: https://lore.kernel.org/lkml/20190619171517.GA17557@someone.com/
        Change-Id: I4caaaa566ea080fa148c5e768bb1a0b6f7201c01
        Signed-off-by: Joe Smith <joe.smith@foo.org>

Requirements for Android-specific patches: ANDROID:

  • If the patch is fixing a bug to Android-specific code
    • tag the patch subject with ANDROID:
    • add a Fixes: tag that cites the patch with the bug
    • Example:
        ANDROID: fix android-specific bug in foobar.c

        This is the detailed description of the important fix

        Fixes: 1234abcd2468 ("foobar: add cool feature")
        Change-Id: I4caaaa566ea080fa148c5e768bb1a0b6f7201c01
        Signed-off-by: Joe Smith <joe.smith@foo.org>
  • If the patch is a new feature
    • tag the patch subject with ANDROID:
    • add a Bug: tag with the Android bug (required for android-specific features)
Description
No description provided
Readme 7.9 GiB
Languages
C 97.7%
Assembly 1.6%
Makefile 0.3%
Perl 0.1%